@salilvnair/dui 1.0.0 → 1.0.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/README.md +221 -38
- package/dist/assets/DuiShowcase-C2jk2ySV.js +74705 -0
- package/dist/assets/DuiShowcase-CZLjKDpL.css +1 -0
- package/dist/assets/abap-DLDM7-KI.js +1 -0
- package/dist/assets/apex-DNDY2TF8.js +1 -0
- package/dist/assets/azcli-Y6nb8tq_.js +1 -0
- package/dist/assets/bat-BwHxbl9M.js +1 -0
- package/dist/assets/bicep-CFznDFnq.js +2 -0
- package/dist/assets/cameligo-Bf6VGUru.js +1 -0
- package/dist/assets/clojure-Dnu-v4kV.js +1 -0
- package/dist/assets/codicon-ngg6Pgfi.ttf +0 -0
- package/dist/assets/coffee-Bd8akH9Z.js +1 -0
- package/dist/assets/cpp-BbWJElDN.js +1 -0
- package/dist/assets/csharp-Co3qMtFm.js +1 -0
- package/dist/assets/csp-D-4FJmMZ.js +1 -0
- package/dist/assets/css-DdJfP1eB.js +3 -0
- package/dist/assets/css.worker-B4z49cGk.js +93 -0
- package/dist/assets/cssMode-CZYOZ1AO.js +1 -0
- package/dist/assets/cypher-cTPe9QuQ.js +1 -0
- package/dist/assets/dart-BOtBlQCF.js +1 -0
- package/dist/assets/dockerfile-BG73LgW2.js +1 -0
- package/dist/assets/ecl-BEgZUVRK.js +1 -0
- package/dist/assets/elixir-BkW5O-1t.js +1 -0
- package/dist/assets/flow9-BeJ5waoc.js +1 -0
- package/dist/assets/freemarker2-CGSa1nHJ.js +3 -0
- package/dist/assets/fsharp-PahG7c26.js +1 -0
- package/dist/assets/go-acbASCJo.js +1 -0
- package/dist/assets/graphql-BxJiqAUM.js +1 -0
- package/dist/assets/handlebars-mB8dxbcs.js +1 -0
- package/dist/assets/hcl-DtV1sZF8.js +1 -0
- package/dist/assets/html-l7YRKuHI.js +1 -0
- package/dist/assets/html.worker-DtiGdgqp.js +470 -0
- package/dist/assets/htmlMode-CuoiFE2t.js +1 -0
- package/dist/assets/index-B12PznEF.js +50 -0
- package/dist/assets/index-B_5G6LrJ.css +10 -0
- package/dist/assets/ini-Kd9XrMLS.js +1 -0
- package/dist/assets/java-CXBNlu9o.js +1 -0
- package/dist/assets/javascript-9UYwmKgx.js +1 -0
- package/dist/assets/json.worker-leyajbqV.js +58 -0
- package/dist/assets/jsonMode-6uegdfHj.js +7 -0
- package/dist/assets/julia-cl7-CwDS.js +1 -0
- package/dist/assets/kotlin-s7OhZKlX.js +1 -0
- package/dist/assets/less-9HpZscsL.js +2 -0
- package/dist/assets/lexon-OrD6JF1K.js +1 -0
- package/dist/assets/liquid-C8P3CEDc.js +1 -0
- package/dist/assets/lspLanguageFeatures-Ju8ugRgx.js +4 -0
- package/dist/assets/lua-Cyyb5UIc.js +1 -0
- package/dist/assets/m3-B8OfTtLu.js +1 -0
- package/dist/assets/markdown-BFxVWTOG.js +1 -0
- package/dist/assets/mdx-D4_p5PzA.js +1 -0
- package/dist/assets/mips-CiqrrVzr.js +1 -0
- package/dist/assets/monaco-editor-CN2OOCze.js +908 -0
- package/dist/assets/monaco-editor-qiF_U8vl.css +1 -0
- package/dist/assets/msdax-DmeGPVcC.js +1 -0
- package/dist/assets/mysql-C_tMU-Nz.js +1 -0
- package/dist/assets/objective-c-BDtDVThU.js +1 -0
- package/dist/assets/pascal-vHIfCaH5.js +1 -0
- package/dist/assets/pascaligo-DtZ0uQbO.js +1 -0
- package/dist/assets/perl-Ub6l9XKa.js +1 -0
- package/dist/assets/pgsql-BlNEE0v7.js +1 -0
- package/dist/assets/php-BBUBE1dy.js +1 -0
- package/dist/assets/pla-DSh2-awV.js +1 -0
- package/dist/assets/postiats-CocnycG-.js +1 -0
- package/dist/assets/powerquery-tScXyioY.js +1 -0
- package/dist/assets/powershell-COWaemsV.js +1 -0
- package/dist/assets/protobuf-Brw8urJB.js +2 -0
- package/dist/assets/pug-8SOpv6rk.js +1 -0
- package/dist/assets/python-BDvE0baC.js +1 -0
- package/dist/assets/qsharp-Bw9ernYp.js +1 -0
- package/dist/assets/r-j7ic8hl3.js +1 -0
- package/dist/assets/razor-3AZt1jFw.js +1 -0
- package/dist/assets/redis-Bu5POkcn.js +1 -0
- package/dist/assets/redshift-Bs9aos_-.js +1 -0
- package/dist/assets/restructuredtext-CqXO7rUv.js +1 -0
- package/dist/assets/ruby-zBfavPgS.js +1 -0
- package/dist/assets/rust-BzKRNQWT.js +1 -0
- package/dist/assets/sb-BBc9UKZt.js +1 -0
- package/dist/assets/scala-D9hQfWCl.js +1 -0
- package/dist/assets/scheme-BPhDTwHR.js +1 -0
- package/dist/assets/scss-CBJaRo0y.js +3 -0
- package/dist/assets/shell-DiJ1NA_G.js +1 -0
- package/dist/assets/solidity-Db0IVjzk.js +1 -0
- package/dist/assets/sophia-CnS9iZB_.js +1 -0
- package/dist/assets/sparql-CJmd_6j2.js +1 -0
- package/dist/assets/sql-ClhHkBeG.js +1 -0
- package/dist/assets/st-CHwy0fLd.js +1 -0
- package/dist/assets/swift-Bqt4WxQ4.js +3 -0
- package/dist/assets/systemverilog-Bs9z6M-B.js +1 -0
- package/dist/assets/tcl-Dm6ycUr_.js +1 -0
- package/dist/assets/ts.worker-59MjiAqk.js +67731 -0
- package/dist/assets/tsMode-2fAJOXuF.js +11 -0
- package/dist/assets/twig-Csy3S7wG.js +1 -0
- package/dist/assets/typescript-Bv1W4NlY.js +1 -0
- package/dist/assets/typespec-Btyra-wh.js +1 -0
- package/dist/assets/vb-Db0cS2oM.js +1 -0
- package/dist/assets/wgsl-BTesnYfV.js +298 -0
- package/dist/assets/xml-CR03X85Q.js +1 -0
- package/dist/assets/yaml-Qi3RsNvX.js +1 -0
- package/dist/chunks/{EditorView.shell-BGH2VhWM.js → EditorView.shell-DWGMOgiy.js} +215 -165
- package/dist/chunks/EditorView.shell-DWGMOgiy.js.map +1 -0
- package/dist/chunks/daakia-icons-BpwUOdSO.js +4665 -0
- package/dist/chunks/daakia-icons-BpwUOdSO.js.map +1 -0
- package/dist/chunks/vis-runtime-DkpA8K_T.js +32 -0
- package/dist/chunks/vis-runtime-DkpA8K_T.js.map +1 -0
- package/dist/icons/daakia-icons.d.ts +366 -0
- package/dist/index.html +15 -0
- package/dist/index.js +24569 -13515
- package/dist/index.js.map +1 -1
- package/dist/lib/components/button/AIButtonView.d.ts +1 -1
- package/dist/lib/components/button/BookmarkButtonView.d.ts +10 -0
- package/dist/lib/components/button/FabView.d.ts +20 -0
- package/dist/lib/components/button/FollowButtonView.d.ts +10 -0
- package/dist/lib/components/button/HoldToConfirmView.d.ts +14 -0
- package/dist/lib/components/button/IconButtonView.d.ts +1 -1
- package/dist/lib/components/button/LikeButtonView.d.ts +11 -0
- package/dist/lib/components/button/MorphingIconButtonView.d.ts +14 -0
- package/dist/lib/components/button/ThemeToggleView.d.ts +12 -0
- package/dist/lib/components/button/VoteWidgetView.d.ts +13 -0
- package/dist/lib/components/chips/ChipView.d.ts +5 -2
- package/dist/lib/components/chips/CommandChipView.d.ts +28 -0
- package/dist/lib/components/display/AIStreamingTextView.d.ts +16 -0
- package/dist/lib/components/display/ActivityFeedView.d.ts +19 -0
- package/dist/lib/components/display/ApiKeyRowView.d.ts +12 -0
- package/dist/lib/components/display/ArticleCardView.d.ts +16 -0
- package/dist/lib/components/display/AudioPlayerView.d.ts +10 -0
- package/dist/lib/components/display/AudioWaveformView.d.ts +15 -0
- package/dist/lib/components/display/AuditLogRowView.d.ts +14 -0
- package/dist/lib/components/display/AvatarGroupView.d.ts +17 -0
- package/dist/lib/components/display/AvatarView.d.ts +15 -0
- package/dist/lib/components/display/BannerView.d.ts +17 -0
- package/dist/lib/components/display/BarcodeView.d.ts +11 -0
- package/dist/lib/components/display/BreathingLoaderView.d.ts +11 -0
- package/dist/lib/components/display/CalloutView.d.ts +10 -0
- package/dist/lib/components/display/CarouselView.d.ts +12 -0
- package/dist/lib/components/display/ChangelogEntryView.d.ts +16 -0
- package/dist/lib/components/display/CodeBlockView.d.ts +15 -1
- package/dist/lib/components/display/ColumnVisibilityMenuView.d.ts +26 -0
- package/dist/lib/components/display/CommandOrbView.d.ts +15 -0
- package/dist/lib/components/display/CommentThreadView.d.ts +20 -0
- package/dist/lib/components/display/ComparisonSliderView.d.ts +12 -0
- package/dist/lib/components/display/ConfettiBurstView.d.ts +17 -0
- package/dist/lib/components/display/ConnectionPulseLineView.d.ts +14 -0
- package/dist/lib/components/display/ConstellationLoaderView.d.ts +14 -0
- package/dist/lib/components/display/ContactCardView.d.ts +19 -0
- package/dist/lib/components/display/CookieConsentBannerView.d.ts +14 -0
- package/dist/lib/components/display/CountUpNumberView.d.ts +16 -0
- package/dist/lib/components/display/CountdownRingView.d.ts +19 -0
- package/dist/lib/components/display/DataGridToolbarView.d.ts +20 -0
- package/dist/lib/components/display/DataTableView.d.ts +2 -1
- package/dist/lib/components/display/DescriptionsView.d.ts +19 -0
- package/dist/lib/components/display/DiffMorphView.d.ts +13 -0
- package/dist/lib/components/display/DragHandleView.d.ts +10 -0
- package/dist/lib/components/display/EditableCellView.d.ts +13 -0
- package/dist/lib/components/display/EmptyInboxView.d.ts +11 -0
- package/dist/lib/components/display/EnvironmentBadgeView.d.ts +13 -0
- package/dist/lib/components/display/FeatureSpotlightBadgeView.d.ts +11 -0
- package/dist/lib/components/display/FileIconView.d.ts +11 -0
- package/dist/lib/components/display/FileListView.d.ts +20 -0
- package/dist/lib/components/display/FilterBarView.d.ts +17 -0
- package/dist/lib/components/display/GaugeView.d.ts +12 -0
- package/dist/lib/components/display/GlowBorderView.d.ts +11 -0
- package/dist/lib/components/display/GradientTextView.d.ts +13 -0
- package/dist/lib/components/display/HeatmapCalendarView.d.ts +14 -0
- package/dist/lib/components/display/HoloCardView.d.ts +10 -0
- package/dist/lib/components/display/HudView.d.ts +36 -4
- package/dist/lib/components/display/ImageCropperView.d.ts +19 -0
- package/dist/lib/components/display/ImageGalleryView.d.ts +15 -0
- package/dist/lib/components/display/ImageZoomView.d.ts +10 -0
- package/dist/lib/components/display/InfoView.d.ts +23 -0
- package/dist/lib/components/display/InspectorPanelView.d.ts +29 -0
- package/dist/lib/components/display/IntegrationCardView.d.ts +16 -0
- package/dist/lib/components/display/KanbanBoardView.d.ts +27 -0
- package/dist/lib/components/display/KbdView.d.ts +11 -0
- package/dist/lib/components/display/KeyValueListView.d.ts +14 -0
- package/dist/lib/components/display/LatencyPulseView.d.ts +16 -0
- package/dist/lib/components/display/LicenseBadgeView.d.ts +11 -0
- package/dist/lib/components/display/ListView.d.ts +19 -0
- package/dist/lib/components/display/LiveCursorPresenceView.d.ts +19 -0
- package/dist/lib/components/display/LoaderView.d.ts +12 -1
- package/dist/lib/components/display/MagneticButtonView.d.ts +14 -0
- package/dist/lib/components/display/MaintenanceBannerView.d.ts +12 -0
- package/dist/lib/components/display/MessageBannerView.d.ts +13 -0
- package/dist/lib/components/display/MessageBubbleView.d.ts +14 -0
- package/dist/lib/components/display/NetworkGraphView.d.ts +59 -0
- package/dist/lib/components/display/NetworkGraphView.fallback.d.ts +11 -0
- package/dist/lib/components/display/NetworkGraphView.vis.d.ts +2 -0
- package/dist/lib/components/display/NetworkWeatherView.d.ts +12 -0
- package/dist/lib/components/display/NotificationBadgeView.d.ts +17 -0
- package/dist/lib/components/display/ParticleBackgroundView.d.ts +12 -0
- package/dist/lib/components/display/PathRevealView.d.ts +16 -0
- package/dist/lib/components/display/PdfViewerView.d.ts +11 -0
- package/dist/lib/components/display/PermissionMatrixView.d.ts +15 -0
- package/dist/lib/components/display/PresenceDotView.d.ts +12 -0
- package/dist/lib/components/display/PricingCardView.d.ts +16 -0
- package/dist/lib/components/display/ProgressBarView.d.ts +15 -0
- package/dist/lib/components/display/ProgressRingView.d.ts +13 -0
- package/dist/lib/components/display/PulseDotView.d.ts +10 -0
- package/dist/lib/components/display/QRCodeView.d.ts +11 -0
- package/dist/lib/components/display/QuoteBlockView.d.ts +14 -0
- package/dist/lib/components/display/RateLimitMeterView.d.ts +12 -0
- package/dist/lib/components/display/RatingBreakdownView.d.ts +12 -0
- package/dist/lib/components/display/RequestFlowView.d.ts +23 -0
- package/dist/lib/components/display/ResultView.d.ts +14 -0
- package/dist/lib/components/display/RevealOnScrollView.d.ts +14 -0
- package/dist/lib/components/display/SchemaBlueprintView.d.ts +23 -0
- package/dist/lib/components/display/SegmentedProgressBarView.d.ts +17 -0
- package/dist/lib/components/display/ShareSheetView.d.ts +19 -0
- package/dist/lib/components/display/SignaturePadView.d.ts +10 -0
- package/dist/lib/components/display/SkeletonView.d.ts +14 -0
- package/dist/lib/components/display/SnackbarView.d.ts +18 -0
- package/dist/lib/components/display/SortableHeaderView.d.ts +14 -0
- package/dist/lib/components/display/SparklineView.d.ts +14 -0
- package/dist/lib/components/display/StackedSwipeCardView.d.ts +14 -0
- package/dist/lib/components/display/StatTrendCardView.d.ts +16 -0
- package/dist/lib/components/display/StatisticView.d.ts +18 -0
- package/dist/lib/components/display/StatsCardView.d.ts +5 -1
- package/dist/lib/components/display/StatusPageRowView.d.ts +13 -0
- package/dist/lib/components/display/StickyTableHeaderView.d.ts +21 -0
- package/dist/lib/components/display/TablePaginationView.d.ts +16 -0
- package/dist/lib/components/display/TagCloudView.d.ts +17 -0
- package/dist/lib/components/display/TeamMemberRowView.d.ts +13 -0
- package/dist/lib/components/display/TerminalBlockView.d.ts +8 -0
- package/dist/lib/components/display/TestimonialCardView.d.ts +13 -0
- package/dist/lib/components/display/TiltCardView.d.ts +12 -0
- package/dist/lib/components/display/TimelineView.d.ts +20 -0
- package/dist/lib/components/display/TrialCountdownBannerView.d.ts +12 -0
- package/dist/lib/components/display/TypewriterTextView.d.ts +16 -0
- package/dist/lib/components/display/TypingIndicatorView.d.ts +11 -0
- package/dist/lib/components/display/UndoRedoTimelineView.d.ts +19 -0
- package/dist/lib/components/display/UsageMeterView.d.ts +17 -0
- package/dist/lib/components/display/VersionBadgeView.d.ts +13 -0
- package/dist/lib/components/display/VideoPlayerView.d.ts +10 -0
- package/dist/lib/components/display/VirtualizedListView.d.ts +13 -0
- package/dist/lib/components/display/WebhookStatusView.d.ts +15 -0
- package/dist/lib/components/input/AvatarUploadView.d.ts +14 -0
- package/dist/lib/components/input/CalendarView.d.ts +25 -0
- package/dist/lib/components/input/CascaderView.d.ts +23 -0
- package/dist/lib/components/input/ChatInputView.d.ts +17 -0
- package/dist/lib/components/input/ChecklistView.d.ts +17 -0
- package/dist/lib/components/input/ColorPickerView.d.ts +14 -0
- package/dist/lib/components/input/ComboBoxView.d.ts +23 -0
- package/dist/lib/components/input/DateInputView.d.ts +17 -0
- package/dist/lib/components/input/DateRangePickerView.d.ts +26 -0
- package/dist/lib/components/input/DateTimeInputView.d.ts +30 -0
- package/dist/lib/components/input/DialKnobInputView.d.ts +17 -0
- package/dist/lib/components/input/EditorView.d.ts +1 -1
- package/dist/lib/components/input/EmojiPickerView.d.ts +14 -0
- package/dist/lib/components/input/FeedbackWidgetView.d.ts +16 -0
- package/dist/lib/components/input/FileDropzoneView.d.ts +23 -0
- package/dist/lib/components/input/FloatingLabelInputView.d.ts +17 -0
- package/dist/lib/components/input/GhostTypingPlaceholderView.d.ts +19 -0
- package/dist/lib/components/input/HiddenKeyValueItemView.d.ts +1 -1
- package/dist/lib/components/input/IconPickerView.d.ts +14 -0
- package/dist/lib/components/input/InlineEditTextView.d.ts +30 -0
- package/dist/lib/components/input/InviteInputView.d.ts +15 -0
- package/dist/lib/components/input/MaskedInputView.d.ts +21 -0
- package/dist/lib/components/input/MentionInputView.d.ts +21 -0
- package/dist/lib/components/input/MergedInputView.d.ts +1 -0
- package/dist/lib/components/input/NpsSurveyView.d.ts +16 -0
- package/dist/lib/components/input/OtpInputView.d.ts +17 -0
- package/dist/lib/components/input/PhoneInputView.d.ts +25 -0
- package/dist/lib/components/input/PickerView.d.ts +38 -0
- package/dist/lib/components/input/PriorityPickerView.d.ts +13 -0
- package/dist/lib/components/input/RadioCardView.d.ts +22 -0
- package/dist/lib/components/input/RadioGroupView.d.ts +21 -0
- package/dist/lib/components/input/RangeSliderView.d.ts +18 -0
- package/dist/lib/components/input/RatingView.d.ts +16 -0
- package/dist/lib/components/input/RichTextToolbarView.d.ts +13 -0
- package/dist/lib/components/input/RoleSelectView.d.ts +21 -0
- package/dist/lib/components/input/SegmentedControlView.d.ts +15 -8
- package/dist/lib/components/input/ShortcutRecorderView.d.ts +15 -0
- package/dist/lib/components/input/SpectrumSliderView.d.ts +16 -0
- package/dist/lib/components/input/StepperInputView.d.ts +16 -0
- package/dist/lib/components/input/SwitchGroupView.d.ts +21 -0
- package/dist/lib/components/input/TabView.d.ts +10 -0
- package/dist/lib/components/input/TimeTravelSliderView.d.ts +21 -0
- package/dist/lib/components/input/TimeWheelView.d.ts +21 -0
- package/dist/lib/components/input/TransferListView.d.ts +21 -0
- package/dist/lib/components/input/TreeSelectView.d.ts +19 -0
- package/dist/lib/components/input/WizardStepperView.d.ts +19 -0
- package/dist/lib/components/layout/AccordionGroupView.d.ts +18 -0
- package/dist/lib/components/layout/AffixView.d.ts +11 -0
- package/dist/lib/components/layout/AnchorView.d.ts +18 -0
- package/dist/lib/components/layout/AspectRatioView.d.ts +12 -0
- package/dist/lib/components/layout/BackToTopView.d.ts +10 -0
- package/dist/lib/components/layout/BreadcrumbView.d.ts +14 -0
- package/dist/lib/components/layout/DockView.d.ts +17 -0
- package/dist/lib/components/layout/FaqAccordionView.d.ts +16 -0
- package/dist/lib/components/layout/HeroView.d.ts +15 -0
- package/dist/lib/components/layout/LevelView.d.ts +13 -0
- package/dist/lib/components/layout/MasonryGridView.d.ts +11 -0
- package/dist/lib/components/layout/MediaObjectView.d.ts +12 -0
- package/dist/lib/components/layout/NavbarView.d.ts +19 -0
- package/dist/lib/components/layout/OnboardingChecklistView.d.ts +19 -0
- package/dist/lib/components/layout/PaginationView.d.ts +12 -0
- package/dist/lib/components/layout/PanelListView.d.ts +28 -0
- package/dist/lib/components/layout/ScrollAreaView.d.ts +11 -0
- package/dist/lib/components/layout/SettingsRowView.d.ts +12 -0
- package/dist/lib/components/layout/SettingsSectionView.d.ts +12 -0
- package/dist/lib/components/layout/SideNavView.d.ts +3 -1
- package/dist/lib/components/layout/StickyHeaderView.d.ts +11 -0
- package/dist/lib/components/layout/TileGridView.d.ts +21 -0
- package/dist/lib/components/layout/WatermarkView.d.ts +16 -0
- package/dist/lib/components/modal/ActionSheetView.d.ts +19 -0
- package/dist/lib/components/modal/AlertDialogView.d.ts +15 -0
- package/dist/lib/components/modal/BottomSheetView.d.ts +14 -0
- package/dist/lib/components/modal/CommandPaletteView.d.ts +21 -0
- package/dist/lib/components/modal/DrawerView.d.ts +15 -0
- package/dist/lib/components/modal/ModalView.d.ts +11 -2
- package/dist/lib/components/modal/NotificationCenterView.d.ts +20 -0
- package/dist/lib/components/modal/PopoverView.d.ts +20 -0
- package/dist/lib/components/modal/SpotlightTourView.d.ts +18 -0
- package/dist/lib/components/modal/StackedToastDeckView.d.ts +17 -0
- package/dist/lib/components/modal/TooltipView.d.ts +28 -0
- package/dist/lib/components/rearrange/RearrangeView.d.ts +3 -3
- package/dist/lib/components/rearrange/SortableView.d.ts +33 -0
- package/dist/lib/components/tabs/TabBarView.d.ts +29 -1
- package/dist/lib/core/AvatarBase.d.ts +21 -0
- package/dist/lib/core/DateBase.d.ts +23 -0
- package/dist/lib/core/DuiTokens.d.ts +10 -0
- package/dist/lib/core/FeedbackBase.d.ts +27 -0
- package/dist/lib/core/LayoutBase.d.ts +21 -0
- package/dist/lib/core/MediaBase.d.ts +20 -0
- package/dist/lib/index.d.ts +392 -1
- package/dist/lib/vis-runtime.d.ts +19 -0
- package/dist/monaco-setup.js +348 -343
- package/dist/monaco-setup.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/theme/editor.js +2 -2
- package/dist/vis-setup.d.ts +1 -0
- package/dist/vis-setup.js +418 -0
- package/dist/vis-setup.js.map +1 -0
- package/package.json +36 -2
- package/dist/chunks/EditorView.shell-BGH2VhWM.js.map +0 -1
- package/dist/chunks/daakia-icons-DxWnX_IQ.js +0 -1726
- package/dist/chunks/daakia-icons-DxWnX_IQ.js.map +0 -1
package/dist/monaco-setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monaco-setup.js","sources":["../src/hooks/useAppTheme.ts","../src/services/dk-repl.ts","../src/hooks/useBreakpointGutter.ts","../src/store/debug-store.ts","../src/lib/components/input/EditorView.monaco.tsx","../src/lib/components/input/DiffEditorView.monaco.tsx","../src/monaco-setup.ts"],"sourcesContent":["/**\n * useAppTheme — returns 'dark' | 'light' and re-renders on change.\n *\n * Detects theme from (in priority order):\n * 1. VS Code webview: data-vscode-theme-kind on <body> (set by VS Code host)\n * 2. Generic: data-theme on <html> (daakia / other web apps)\n * 3. Fallback: 'dark'\n */\nimport { useState, useEffect } from 'react';\n\nfunction resolveTheme(): 'dark' | 'light' {\n const vsKind =\n document.body?.getAttribute('data-vscode-theme-kind') ||\n document.documentElement.getAttribute('data-vscode-theme-kind');\n if (vsKind) return vsKind === 'vscode-light' ? 'light' : 'dark';\n return (document.documentElement.getAttribute('data-theme') as 'dark' | 'light') || 'dark';\n}\n\nexport function useAppTheme(): 'dark' | 'light' {\n const [theme, setTheme] = useState<'dark' | 'light'>(resolveTheme);\n\n useEffect(() => {\n const update = () => setTheme(resolveTheme());\n const htmlObs = new MutationObserver(update);\n htmlObs.observe(document.documentElement, { attributes: true, attributeFilter: ['data-theme', 'data-vscode-theme-kind'] });\n const bodyObs = new MutationObserver(update);\n if (document.body) bodyObs.observe(document.body, { attributes: true, attributeFilter: ['data-vscode-theme-kind'] });\n return () => { htmlObs.disconnect(); bodyObs.disconnect(); };\n }, []);\n\n return theme;\n}\n","// Stub — dk-repl completions are daakia-specific and not used in standalone DUI.\nexport const DK_TYPE_DEFS = '';\nexport function getDkCompletions(_text: string, _monaco: unknown, _pos: unknown): unknown[] {\n return [];\n}\n","import { useRef, useEffect, useCallback, MutableRefObject } from 'react';\n\nexport interface BreakpointGutterOptions {\n breakpoints?: number[];\n disabledBreakpoints?: number[];\n conditionalBreakpointLines?: number[];\n /** Currently paused line (1-based) — shows yellow highlight */\n pausedLine?: number | null;\n onToggleBreakpoint?: (line: number) => void;\n onGlyphContextMenu?: (line: number, pos: { x: number; y: number }) => void;\n}\n\n/**\n * Encapsulates all breakpoint gutter logic for a Monaco editor:\n * - Line validation (only skips empty lines)\n * - Breakpoint dot decorations (red/disabled/conditional)\n * - Glyph margin click & context-menu handlers\n * - Hover hint (faded dot on valid, non-breakpointed lines)\n *\n * Returns `attach(editor, monaco)` to be called in onMount,\n * and handles cleanup/decoration updates via effects.\n */\nexport function useBreakpointGutter(options: BreakpointGutterOptions) {\n const {\n breakpoints,\n disabledBreakpoints,\n conditionalBreakpointLines,\n pausedLine,\n onToggleBreakpoint,\n onGlyphContextMenu,\n } = options;\n\n const editorRef = useRef<any>(null);\n const monacoRef = useRef<any>(null);\n const decorationsRef = useRef<string[]>([]);\n const pausedDecoRef = useRef<string[]>([]);\n const hoverDecoRef = useRef<string[]>([]);\n const disposablesRef = useRef<any[]>([]);\n\n const isBreakpointableLine = useCallback((lineNo: number): boolean => {\n const editor = editorRef.current;\n if (!editor) return true;\n const model = editor.getModel();\n if (!model || lineNo > model.getLineCount()) return false;\n const lineContent = model.getLineContent(lineNo).trim();\n return !!lineContent;\n }, []);\n\n // Sync breakpoint decorations when breakpoints change\n useEffect(() => {\n const editor = editorRef.current;\n const monaco = monacoRef.current;\n if (!editor || !monaco) return;\n\n const decos: any[] = [];\n\n if (breakpoints) {\n for (const line of breakpoints) {\n // Skip breakpoint glyph on the paused line — the arrow \"gulps\" it\n if (pausedLine && line === pausedLine) continue;\n\n const isDisabled = disabledBreakpoints?.includes(line);\n const isConditional = conditionalBreakpointLines?.includes(line);\n let glyphClass = 'daakia-bp-glyph';\n if (isDisabled) glyphClass = 'daakia-bp-glyph--disabled';\n else if (isConditional) glyphClass = 'daakia-bp-glyph--conditional';\n\n decos.push({\n range: new monaco.Range(line, 1, line, 1),\n options: {\n isWholeLine: true,\n className: isDisabled ? '' : 'daakia-bp-line',\n stickiness: monaco.editor.TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,\n glyphMarginClassName: glyphClass,\n glyphMarginHoverMessage: {\n value: isConditional ? 'Conditional Breakpoint' : isDisabled ? 'Disabled Breakpoint' : 'Breakpoint',\n },\n },\n });\n }\n }\n\n decorationsRef.current = editor.deltaDecorations(decorationsRef.current, decos);\n }, [breakpoints, disabledBreakpoints, conditionalBreakpointLines, pausedLine]);\n\n // Sync paused-line highlight (yellow background + arrow in glyph margin)\n useEffect(() => {\n const editor = editorRef.current;\n const monaco = monacoRef.current;\n if (!editor || !monaco) return;\n\n if (pausedLine) {\n // Use combined class when paused line is also a breakpoint line\n const isOnBreakpoint = breakpoints?.includes(pausedLine);\n const glyphClass = isOnBreakpoint\n ? 'daakia-paused-line__arrow daakia-paused-line__arrow--with-bp'\n : 'daakia-paused-line__arrow';\n\n pausedDecoRef.current = editor.deltaDecorations(pausedDecoRef.current, [{\n range: new monaco.Range(pausedLine, 1, pausedLine, 1),\n options: {\n isWholeLine: true,\n className: 'daakia-paused-line',\n glyphMarginClassName: glyphClass,\n stickiness: monaco.editor.TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,\n },\n }]);\n // Scroll to the paused line\n editor.revealLineInCenter(pausedLine);\n } else {\n pausedDecoRef.current = editor.deltaDecorations(pausedDecoRef.current, []);\n }\n }, [pausedLine, breakpoints]);\n\n // Cleanup disposables on unmount\n useEffect(() => {\n return () => {\n disposablesRef.current.forEach(d => d?.dispose?.());\n disposablesRef.current = [];\n };\n }, []);\n\n /**\n * Call this inside Monaco's onMount handler to attach all gutter interactions.\n * Returns the disposables (also tracked internally for auto-cleanup).\n */\n const attach = useCallback((editor: any, monaco: any) => {\n editorRef.current = editor;\n monacoRef.current = monaco;\n\n // Mark the entire margin container so RightClickMenu can detect gutter clicks\n const domNode = editor.getDomNode();\n if (domNode) {\n const marginContainer = domNode.querySelector('.margin');\n if (marginContainer) marginContainer.setAttribute('data-daakia-bp-gutter', '');\n }\n\n // Left-click to toggle breakpoint (right-click is handled separately for context menu)\n if (onToggleBreakpoint) {\n const d1 = editor.onMouseDown((e: any) => {\n if (e.event.leftButton && e.target.type === monaco.editor.MouseTargetType.GUTTER_GLYPH_MARGIN) {\n const line = e.target.position?.lineNumber;\n if (line && isBreakpointableLine(line)) onToggleBreakpoint(line);\n }\n });\n disposablesRef.current.push(d1);\n }\n\n // Right-click context menu — use DOM-level listener to intercept BEFORE Monaco shows its own menu\n if (onGlyphContextMenu) {\n let glyphRightClick: { line: number; x: number; y: number } | null = null;\n\n // Detect right-click on any gutter zone (glyph margin, line numbers, line decorations)\n const d2a = editor.onMouseDown((e: any) => {\n if (\n e.event.rightButton &&\n (e.target.type === monaco.editor.MouseTargetType.GUTTER_GLYPH_MARGIN ||\n e.target.type === monaco.editor.MouseTargetType.GUTTER_LINE_NUMBERS ||\n e.target.type === monaco.editor.MouseTargetType.GUTTER_LINE_DECORATIONS)\n ) {\n const line = e.target.position?.lineNumber;\n if (line && isBreakpointableLine(line)) {\n glyphRightClick = { line, x: e.event.posx, y: e.event.posy };\n }\n }\n });\n disposablesRef.current.push(d2a);\n\n // DOM-level contextmenu intercept — prevents Monaco's built-in menu on gutter area\n const domNode = editor.getDomNode();\n if (domNode) {\n const domHandler = (ev: MouseEvent) => {\n if (glyphRightClick) {\n ev.preventDefault();\n ev.stopPropagation();\n onGlyphContextMenu(glyphRightClick.line, { x: glyphRightClick.x, y: glyphRightClick.y });\n glyphRightClick = null;\n } else if ((ev.target as HTMLElement).closest('[data-daakia-bp-gutter]')) {\n // Fallback: block Monaco's default menu for any gutter right-click\n ev.preventDefault();\n ev.stopPropagation();\n }\n };\n domNode.addEventListener('contextmenu', domHandler, true); // capture phase\n disposablesRef.current.push({ dispose: () => domNode.removeEventListener('contextmenu', domHandler, true) });\n }\n }\n\n // Hover hint: faded dot on valid non-breakpointed lines\n if (onToggleBreakpoint) {\n const d3 = editor.onMouseMove((e: any) => {\n if (e.target.type === monaco.editor.MouseTargetType.GUTTER_GLYPH_MARGIN) {\n const line = e.target.position?.lineNumber;\n if (line && isBreakpointableLine(line)) {\n const model = editor.getModel();\n if (model) {\n const lineDecos = model.getLineDecorations(line);\n const hasBpDeco = lineDecos?.some((d: any) =>\n d.options?.glyphMarginClassName?.startsWith('daakia-bp-glyph') &&\n !d.options?.glyphMarginClassName?.includes('hover')\n );\n if (!hasBpDeco) {\n hoverDecoRef.current = editor.deltaDecorations(hoverDecoRef.current, [{\n range: new monaco.Range(line, 1, line, 1),\n options: {\n isWholeLine: false,\n stickiness: monaco.editor.TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,\n glyphMarginClassName: 'daakia-bp-glyph--hover',\n glyphMarginHoverMessage: { value: 'Left-click to add a breakpoint' },\n },\n }]);\n return;\n }\n }\n }\n }\n // Clear hover when not on glyph margin\n if (hoverDecoRef.current.length) {\n hoverDecoRef.current = editor.deltaDecorations(hoverDecoRef.current, []);\n }\n });\n disposablesRef.current.push(d3);\n\n const d4 = editor.onMouseLeave(() => {\n if (hoverDecoRef.current.length) {\n hoverDecoRef.current = editor.deltaDecorations(hoverDecoRef.current, []);\n }\n });\n disposablesRef.current.push(d4);\n }\n\n // Apply breakpoint decorations immediately after attach (fixes disappearing on remount)\n if (breakpoints) {\n const decos: any[] = [];\n for (const line of breakpoints) {\n const isDisabled = disabledBreakpoints?.includes(line);\n const isConditional = conditionalBreakpointLines?.includes(line);\n let glyphClass = 'daakia-bp-glyph';\n if (isDisabled) glyphClass = 'daakia-bp-glyph--disabled';\n else if (isConditional) glyphClass = 'daakia-bp-glyph--conditional';\n\n decos.push({\n range: new monaco.Range(line, 1, line, 1),\n options: {\n isWholeLine: true,\n className: isDisabled ? '' : 'daakia-bp-line',\n stickiness: monaco.editor.TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,\n glyphMarginClassName: glyphClass,\n glyphMarginHoverMessage: {\n value: isConditional ? 'Conditional Breakpoint' : isDisabled ? 'Disabled Breakpoint' : 'Breakpoint',\n },\n },\n });\n }\n decorationsRef.current = editor.deltaDecorations(decorationsRef.current, decos);\n }\n }, [onToggleBreakpoint, onGlyphContextMenu, isBreakpointableLine, breakpoints, disabledBreakpoints, conditionalBreakpointLines]);\n\n return { attach };\n}\n","// Stub — debug store is daakia-specific.\ninterface DebugState {\n navigateLine: number | null;\n setNavigateLine: (line: number | null) => void;\n active: boolean;\n status: 'idle' | 'running' | 'paused';\n variables: { name: string; value: unknown; type: string }[];\n}\n\nconst state: DebugState = {\n navigateLine: null,\n setNavigateLine: () => {},\n active: false,\n status: 'idle',\n variables: [],\n};\n\nexport function useDebugStore<T>(selector: (s: DebugState) => T): T {\n return selector(state);\n}\nuseDebugStore.getState = () => state;\n","import Editor, { type OnMount } from '@monaco-editor/react';\nimport { useRef, useMemo, useEffect } from 'react';\nimport { useAppTheme } from '../../../hooks/useAppTheme';\nimport { getDkCompletions, DK_TYPE_DEFS } from '../../../services/dk-repl';\nimport { initGraphQLCompletionProvider } from '../../../services/graphql-completion';\nimport { useEditorBase } from '../../core/EditorBase';\nimport { EditorShell } from './EditorView.shell';\nimport type { EditorViewProps, EditorLanguage, EditorOptions, EditorContextMenuMode } from './EditorView';\n\n// ─── Debug-only imports — only loaded when debugSupported=true ─────────────────\nimport { useBreakpointGutter } from '../../../hooks/useBreakpointGutter';\nimport { useDebugVariableHover } from '../../../hooks/useDebugVariableHover';\nimport { useDebugStore } from '../../../store/debug-store';\n\n// This file is only ever reached by '@salilvnair/dui/monaco-setup' — a\n// separate, explicit opt-in subpath, never referenced (statically or via\n// lazy()) from the main package entry. That's what makes a plain top-level\n// import safe here: importing monaco-setup already requires Monaco installed.\n// See monaco-runtime.ts for why an in-place lazy()/dynamic-import approach\n// inside the always-loaded EditorView.tsx does not work.\n\nlet dkLibRegistered = false;\n\nconst EXT_MAP: Partial<Record<EditorLanguage, string>> = {\n javascript: '.js', typescript: '.ts', json: '.json', xml: '.xml',\n html: '.html', css: '.css', graphql: '.graphql', python: '.py',\n yaml: '.yaml', sql: '.sql', markdown: '.md', plaintext: '.txt',\n};\n\nfunction formatXml(xml: string): string {\n const INDENT = ' ';\n let depth = 0;\n let result = '';\n const tokens = xml.replace(/>\\s*</g, '><').split(/(?<=>)(?=<)/);\n for (const token of tokens) {\n const isClosing = /^<\\//.test(token);\n const isSelfClosing = /\\/>$/.test(token) || /^<!/.test(token) || /^<\\?/.test(token);\n if (isClosing) depth = Math.max(0, depth - 1);\n result += INDENT.repeat(depth) + token.trim() + '\\n';\n if (!isClosing && !isSelfClosing && /^<[^/!?]/.test(token)) depth++;\n }\n return result.trimEnd();\n}\n\nfunction formatYaml(yaml: string): string {\n return yaml\n .split('\\n')\n .map(line => line.trimEnd())\n .join('\\n')\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim();\n}\n\nfunction formatSql(sql: string): string {\n const CLAUSE_RE = /\\b(SELECT|DISTINCT|FROM|WHERE|INNER JOIN|LEFT JOIN|RIGHT JOIN|FULL OUTER JOIN|FULL JOIN|CROSS JOIN|JOIN|ON|AND|OR|NOT|ORDER BY|GROUP BY|HAVING|LIMIT|OFFSET|UNION ALL|UNION|INTERSECT|EXCEPT|INSERT INTO|VALUES|UPDATE|SET|DELETE FROM|CREATE TABLE|DROP TABLE|ALTER TABLE|WITH)\\b/gi;\n return sql\n .replace(/\\s+/g, ' ')\n .replace(CLAUSE_RE, '\\n$1')\n .split('\\n')\n .map(line => line.trim())\n .filter(line => line.length > 0)\n .join('\\n');\n}\n\n// ─── Simple variant — no debug hooks at all ───────────────────────────────────\n\nfunction EditorViewSimple({\n value, onChange, language = 'json', height = '200px', minHeight,\n readOnly = false, placeholder, wordWrap = true, size, fontSize,\n className = '', bordered = false, onEditorMount, contextMenuMode = 'native', contextMenuItems, editorOptions, accentColor,\n}: EditorViewProps) {\n const base = useEditorBase(size);\n const resolvedFontSize = fontSize ?? base.fontSize;\n const theme = useAppTheme();\n const editorRef = useRef<any>(null);\n const disposablesRef = useRef<any[]>([]);\n const modelPath = useMemo(\n () => `inmemory://daakia/${crypto.randomUUID()}${EXT_MAP[language] || '.txt'}`,\n [language],\n );\n const resolvedHeight = typeof height === 'number' ? `${height}px` : height;\n const containerHeight = minHeight ? `max(${resolvedHeight}, ${minHeight}px)` : resolvedHeight;\n\n useEffect(() => {\n return () => {\n disposablesRef.current.forEach(d => d?.dispose?.());\n disposablesRef.current = [];\n const editor = editorRef.current;\n if (editor) { const m = editor.getModel(); if (m) m.dispose(); }\n };\n }, []);\n\n useEffect(() => {\n if (!readOnly) return;\n const editor = editorRef.current;\n if (!editor) return;\n const model = editor.getModel();\n if (!model || model.getValue() === value) return;\n model.setValue(value);\n }, [value, readOnly]);\n\n const handleMount: OnMount = (editor, monacoInstance) => {\n editorRef.current = editor;\n disposablesRef.current = [];\n mountCommon(editor, monacoInstance, { language, value, placeholder, onEditorMount, contextMenuMode });\n };\n\n return (\n <EditorShell bordered={bordered} containerHeight={containerHeight} contextMenuMode={contextMenuMode} contextMenuItems={contextMenuItems} accentColor={accentColor}>\n <Editor\n height=\"100%\"\n language={language}\n path={modelPath}\n value={value}\n theme={theme === 'light' ? 'daakia-light' : 'daakia-dark'}\n onChange={v => onChange?.(v ?? '')}\n onMount={handleMount}\n options={buildOptions({ readOnly, fontSize: resolvedFontSize, wordWrap, glyphMargin: false, contextMenuMode, editorOptions })}\n />\n </EditorShell>\n );\n}\n\n// ─── Debug variant — subscribes to debug store + breakpoint hooks ─────────────\n\nfunction EditorViewDebug({\n value, onChange, language = 'json', height = '200px', minHeight,\n readOnly = false, placeholder, wordWrap = true, size, fontSize,\n className = '', bordered = false,\n breakpoints, disabledBreakpoints, conditionalBreakpointLines, pausedLine,\n onToggleBreakpoint, onGlyphContextMenu, onEditorMount, contextMenuMode = 'native', contextMenuItems, editorOptions, accentColor,\n}: EditorViewProps) {\n const base = useEditorBase(size);\n const resolvedFontSize = fontSize ?? base.fontSize;\n const theme = useAppTheme();\n const editorRef = useRef<any>(null);\n const disposablesRef = useRef<any[]>([]);\n const modelPath = useMemo(\n () => `inmemory://daakia/${crypto.randomUUID()}${EXT_MAP[language] || '.txt'}`,\n [language],\n );\n const resolvedHeight = typeof height === 'number' ? `${height}px` : height;\n const containerHeight = minHeight ? `max(${resolvedHeight}, ${minHeight}px)` : resolvedHeight;\n\n // Debug hooks — always called here (React rules), never called in Simple variant\n const { attach: attachBreakpointGutter } = useBreakpointGutter({\n breakpoints, disabledBreakpoints, conditionalBreakpointLines, pausedLine,\n onToggleBreakpoint, onGlyphContextMenu,\n });\n const { attach: attachDebugHover } = useDebugVariableHover();\n const navigateLine = useDebugStore(s => s.navigateLine);\n\n useEffect(() => {\n return () => {\n disposablesRef.current.forEach(d => d?.dispose?.());\n disposablesRef.current = [];\n const editor = editorRef.current;\n if (editor) { const m = editor.getModel(); if (m) m.dispose(); }\n };\n }, []);\n\n useEffect(() => {\n if (!readOnly) return;\n const editor = editorRef.current;\n if (!editor) return;\n const model = editor.getModel();\n if (!model || model.getValue() === value) return;\n model.setValue(value);\n }, [value, readOnly]);\n\n useEffect(() => {\n if (!navigateLine || !editorRef.current || !breakpoints) return;\n editorRef.current.revealLineInCenter(navigateLine);\n editorRef.current.setPosition({ lineNumber: navigateLine, column: 1 });\n useDebugStore.getState().setNavigateLine(null);\n }, [navigateLine, breakpoints]);\n\n const handleMount: OnMount = (editor, monacoInstance) => {\n editorRef.current = editor;\n disposablesRef.current = [];\n // Attach debug features\n attachBreakpointGutter(editor, monacoInstance);\n attachDebugHover(editor, monacoInstance);\n mountCommon(editor, monacoInstance, { language, value, placeholder, onEditorMount, contextMenuMode });\n };\n\n return (\n <EditorShell bordered={bordered} containerHeight={containerHeight} contextMenuMode={contextMenuMode} contextMenuItems={contextMenuItems} accentColor={accentColor}>\n <Editor\n height=\"100%\"\n language={language}\n path={modelPath}\n value={value}\n theme={theme === 'light' ? 'daakia-light' : 'daakia-dark'}\n onChange={v => onChange?.(v ?? '')}\n onMount={handleMount}\n options={buildOptions({ readOnly, fontSize: resolvedFontSize, wordWrap, glyphMargin: !!onToggleBreakpoint, contextMenuMode, editorOptions })}\n />\n </EditorShell>\n );\n}\n\n// ─── Public export — registered into monaco-runtime by monaco-setup.ts ──────\n\nexport function EditorViewMonacoImpl({ debugSupported = false, className = '', ...rest }: EditorViewProps) {\n if (debugSupported) return <EditorViewDebug className={className} {...rest} />;\n return <EditorViewSimple className={className} {...rest} />;\n}\n\n// ─── Shared Monaco options builder ───────────────────────────────────────────\n\nfunction buildOptions({ readOnly, fontSize, wordWrap, glyphMargin, contextMenuMode = 'native', editorOptions }: {\n readOnly: boolean;\n fontSize: number;\n wordWrap: boolean;\n glyphMargin: boolean;\n contextMenuMode?: EditorContextMenuMode;\n editorOptions?: EditorOptions;\n}) {\n const o = editorOptions ?? {};\n return {\n // ── Consumer-overridable defaults ────────────────────────────────────────\n lineNumbers: (o.lineNumbers ?? 'on') as 'on' | 'off' | 'relative' | 'interval',\n minimap: { enabled: o.minimap ?? false },\n scrollBeyondLastLine: o.scrollBeyondLastLine ?? false,\n smoothScrolling: o.smoothScrolling ?? false,\n mouseWheelZoom: o.mouseWheelZoom ?? false,\n folding: o.folding ?? true,\n showFoldingControls: (o.showFoldingControls ?? 'mouseover') as 'always' | 'never' | 'mouseover',\n tabSize: o.tabSize ?? 2,\n formatOnPaste: o.formatOnPaste ?? true,\n formatOnType: o.formatOnType ?? true,\n autoIndent: (o.autoIndent ?? 'full') as 'none' | 'keep' | 'brackets' | 'advanced' | 'full',\n renderWhitespace: (o.renderWhitespace ?? 'selection') as 'none' | 'boundary' | 'selection' | 'trailing' | 'all',\n matchBrackets: (o.matchBrackets ?? 'always') as 'never' | 'near' | 'always',\n bracketPairColorization: { enabled: o.bracketPairColorization ?? true },\n colorDecorators: o.colorDecorators ?? true,\n linkedEditing: o.linkedEditing ?? true,\n copyWithSyntaxHighlighting: o.copyWithSyntaxHighlighting ?? true,\n quickSuggestions: o.quickSuggestions ?? true,\n suggestOnTriggerCharacters: o.suggestOnTriggerCharacters ?? true,\n acceptSuggestionOnEnter: (o.acceptSuggestionOnEnter ?? 'on') as 'on' | 'off' | 'smart',\n hover: { enabled: o.hover ?? true },\n parameterHints: { enabled: o.parameterHints ?? true },\n codeLens: o.codeLens ?? false,\n inlayHints: { enabled: (o.inlayHints ?? false) ? 'on' as const : 'off' as const },\n padding: { top: o.padding?.top ?? 8, bottom: o.padding?.bottom ?? 8 },\n ...(o.cursorStyle && { cursorStyle: o.cursorStyle as any }),\n ...(o.cursorBlinking && { cursorBlinking: o.cursorBlinking as any }),\n ...(o.lineHeight && { lineHeight: o.lineHeight }),\n ...(o.letterSpacing && { letterSpacing: o.letterSpacing }),\n ...(o.rulers && { rulers: o.rulers }),\n ...(o.lineDecorationsWidth !== undefined && { lineDecorationsWidth: o.lineDecorationsWidth }),\n ...(o.lineNumbersMinChars !== undefined && { lineNumbersMinChars: o.lineNumbersMinChars }),\n // ── Prop-level overrides (top-level EditorView props win over editorOptions) ─\n readOnly,\n fontSize,\n wordWrap: (o.wordWrap ?? (wordWrap ? 'on' : 'off')) as 'off' | 'on' | 'wordWrapColumn' | 'bounded',\n // ── DUI structural — never overridable ──────────────────────────────────\n automaticLayout: true,\n glyphMargin,\n renderLineHighlight: (o.renderLineHighlight ?? (glyphMargin ? 'line' : 'none')) as 'none' | 'gutter' | 'line' | 'all',\n fixedOverflowWidgets: true,\n contextmenu: contextMenuMode === 'native',\n overviewRulerLanes: 0,\n hideCursorInOverviewRuler: true,\n overviewRulerBorder: false,\n scrollbar: {\n vertical: o.scrollbar?.vertical ?? 'auto',\n horizontal: o.scrollbar?.horizontal ?? 'auto',\n verticalScrollbarSize: o.scrollbar?.verticalScrollbarSize ?? 6,\n horizontalScrollbarSize: o.scrollbar?.horizontalScrollbarSize ?? 6,\n },\n fontFamily: o.fontFamily ?? 'Menlo, Monaco, \"Courier New\", monospace',\n autoClosingBrackets: 'always' as const,\n autoClosingQuotes: 'always' as const,\n autoClosingDelete: 'always' as const,\n autoSurround: 'languageDefined' as const,\n guides: { bracketPairs: true, indentation: true },\n suggest: {\n showKeywords: o.suggest?.showKeywords ?? true,\n showSnippets: o.suggest?.showSnippets ?? true,\n showValues: o.suggest?.showValues ?? true,\n showProperties: o.suggest?.showProperties ?? true,\n ...(o.suggest?.showIcons !== undefined && { showIcons: o.suggest.showIcons }),\n },\n };\n}\n\n// ─── Shared mount logic (everything that isn't debug-specific) ────────────────\n\nfunction mountCommon(\n editor: any,\n monacoInstance: any,\n { language, value, placeholder, onEditorMount, contextMenuMode = 'native' }: {\n language: EditorLanguage;\n value: string;\n placeholder?: string;\n onEditorMount?: (editor: any, monaco: any) => void;\n contextMenuMode?: EditorContextMenuMode;\n },\n) {\n // Layout fixes for flex/overflow containers\n const relayout = () => editor.layout();\n relayout();\n requestAnimationFrame(relayout);\n setTimeout(relayout, 50);\n setTimeout(relayout, 200);\n const parent = editor.getContainerDomNode().parentElement;\n if (parent) {\n const ro = new ResizeObserver(relayout);\n ro.observe(parent);\n editor.onDidDispose(() => ro.disconnect());\n }\n\n editor.updateOptions({\n autoClosingBrackets: 'always', autoClosingQuotes: 'always',\n autoClosingDelete: 'always', autoSurround: 'languageDefined', autoIndent: 'full',\n });\n\n // Clipboard overrides — modern Clipboard API (webview-compatible)\n const KM = monacoInstance.KeyMod;\n const KC = monacoInstance.KeyCode;\n\n editor.addAction({\n id: 'daakia.clipboard.copy', label: 'Copy',\n keybindings: [KM.CtrlCmd | KC.KeyC],\n run: (ed: any) => {\n const sel = ed.getSelection();\n if (sel && !sel.isEmpty()) {\n navigator.clipboard.writeText(ed.getModel()?.getValueInRange(sel) || '');\n } else {\n const pos = ed.getPosition();\n if (pos) navigator.clipboard.writeText((ed.getModel()?.getLineContent(pos.lineNumber) || '') + '\\n');\n }\n },\n });\n\n editor.addAction({\n id: 'daakia.clipboard.cut', label: 'Cut',\n keybindings: [KM.CtrlCmd | KC.KeyX],\n run: (ed: any) => {\n const sel = ed.getSelection();\n if (sel && !sel.isEmpty()) {\n navigator.clipboard.writeText(ed.getModel()?.getValueInRange(sel) || '');\n ed.executeEdits('cut', [{ range: sel, text: '' }]);\n } else {\n const pos = ed.getPosition();\n if (pos) {\n const model = ed.getModel();\n if (model) {\n navigator.clipboard.writeText(model.getLineContent(pos.lineNumber) + '\\n');\n ed.executeEdits('cut', [{ range: new monacoInstance.Range(pos.lineNumber, 1, pos.lineNumber + 1, 1), text: '' }]);\n }\n }\n }\n },\n });\n\n editor.addAction({\n id: 'daakia.clipboard.paste', label: 'Paste',\n keybindings: [KM.CtrlCmd | KC.KeyV],\n run: async (ed: any) => {\n try {\n const text = await navigator.clipboard.readText();\n if (text) {\n const sel = ed.getSelection();\n if (sel) ed.executeEdits('paste', [{ range: sel, text, forceMoveMarkers: true }]);\n }\n } catch { /* clipboard permission denied */ }\n },\n });\n\n editor.addAction({\n id: 'daakia.clipboard.selectAll', label: 'Select All',\n keybindings: [KM.CtrlCmd | KC.KeyA],\n run: (ed: any) => { const m = ed.getModel(); if (m) ed.setSelection(m.getFullModelRange()); },\n });\n\n // Format Document — Shift+Alt+F\n editor.addAction({\n id: 'daakia.format.document', label: 'Format Document',\n keybindings: [KM.Shift | KM.Alt | KC.KeyF],\n contextMenuGroupId: 'modification', contextMenuOrder: 1.5,\n run: async (ed: any) => {\n const model = ed.getModel();\n if (!model) return;\n const langId = model.getLanguageId();\n if (langId === 'xml' || langId === 'html') {\n try {\n const raw = model.getValue();\n const formatted = formatXml(raw);\n if (formatted !== raw) ed.executeEdits('daakia.format', [{ range: model.getFullModelRange(), text: formatted }]);\n } catch { /* malformed XML */ }\n } else if (langId === 'yaml') {\n try {\n const raw = model.getValue();\n const formatted = formatYaml(raw);\n if (formatted !== raw) ed.executeEdits('daakia.format', [{ range: model.getFullModelRange(), text: formatted }]);\n } catch { /* malformed YAML */ }\n } else if (langId === 'sql') {\n try {\n const raw = model.getValue();\n const formatted = formatSql(raw);\n if (formatted !== raw) ed.executeEdits('daakia.format', [{ range: model.getFullModelRange(), text: formatted }]);\n } catch { /* malformed SQL */ }\n } else {\n await ed.getAction('editor.action.formatDocument')?.run();\n }\n },\n });\n\n // Find & Replace — Ctrl+Shift+H\n editor.addAction({\n id: 'daakia.findAndReplace', label: 'Find and Replace',\n keybindings: [KM.CtrlCmd | KM.Shift | KC.KeyH],\n contextMenuGroupId: 'navigation', contextMenuOrder: 1.5,\n run: () => editor.getAction('editor.action.startFindReplaceAction')?.run(),\n });\n\n // Auto-closing config per language\n const model = editor.getModel();\n if (model) {\n const langId = model.getLanguageId();\n if (langId === 'xml' || langId === 'html') {\n monacoInstance.languages.setLanguageConfiguration(langId, {\n autoClosingPairs: [\n { open: '{', close: '}' }, { open: '[', close: ']' }, { open: '(', close: ')' },\n { open: '\"', close: '\"', notIn: ['string'] },\n { open: \"'\", close: \"'\", notIn: ['string', 'comment'] },\n { open: '<', close: '>', notIn: ['string'] },\n ],\n brackets: [['{', '}'], ['[', ']'], ['(', ')'], ['<', '>']],\n surroundingPairs: [\n { open: '{', close: '}' }, { open: '[', close: ']' }, { open: '(', close: ')' },\n { open: '\"', close: '\"' }, { open: \"'\", close: \"'\" }, { open: '<', close: '>' },\n ],\n onEnterRules: [\n {\n beforeText: /<([_:\\w][_:\\w\\-.\\d]*)([^/>]*(?!\\/)>)\\s*$/i,\n afterText: /^<\\/([_:\\w][_:\\w\\-.\\d]*)\\s*>$/i,\n action: { indentAction: monacoInstance.languages.IndentAction.IndentOutdent },\n },\n {\n beforeText: /<([_:\\w][_:\\w\\-.\\d]*)([^/>]*(?!\\/)>)\\s*$/i,\n action: { indentAction: monacoInstance.languages.IndentAction.Indent },\n },\n ],\n wordPattern: /(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g,\n });\n monacoInstance.languages.registerCompletionItemProvider(langId, {\n triggerCharacters: ['/'],\n provideCompletionItems: (mdl: any, position: any) => {\n const textUntilPosition = mdl.getValueInRange({\n startLineNumber: 1, startColumn: 1,\n endLineNumber: position.lineNumber, endColumn: position.column,\n });\n const match = textUntilPosition.match(/<\\/\\s*$/);\n if (match) {\n const openTags: string[] = [];\n const tagRegex = /<\\/?([_:\\w][_:\\w\\-.\\d]*)[^>]*\\/?>/g;\n let m;\n while ((m = tagRegex.exec(textUntilPosition.slice(0, -2))) !== null) {\n if (m[0].startsWith('</')) openTags.pop();\n else if (!m[0].endsWith('/>')) openTags.push(m[1]);\n }\n const lastOpen = openTags[openTags.length - 1];\n if (lastOpen) {\n return {\n suggestions: [{\n label: `/${lastOpen}>`,\n kind: monacoInstance.languages.CompletionItemKind.Keyword,\n insertText: `${lastOpen}>`,\n range: {\n startLineNumber: position.lineNumber, startColumn: position.column,\n endLineNumber: position.lineNumber, endColumn: position.column,\n },\n }],\n };\n }\n }\n return { suggestions: [] };\n },\n });\n } else {\n monacoInstance.languages.setLanguageConfiguration(langId, {\n autoClosingPairs: [\n { open: '{', close: '}' }, { open: '[', close: ']' }, { open: '(', close: ')' },\n { open: '\"', close: '\"', notIn: ['string'] },\n { open: \"'\", close: \"'\", notIn: ['string', 'comment'] },\n ],\n brackets: [['{', '}'], ['[', ']'], ['(', ')']],\n surroundingPairs: [\n { open: '{', close: '}' }, { open: '[', close: ']' }, { open: '(', close: ')' },\n { open: '\"', close: '\"' }, { open: \"'\", close: \"'\" },\n ],\n });\n }\n }\n\n // GraphQL tokenizer + completion\n const langs = monacoInstance.languages.getLanguages();\n if (!langs.some((l: any) => l.id === 'graphql')) {\n monacoInstance.languages.register({ id: 'graphql' });\n monacoInstance.languages.setMonarchTokensProvider('graphql', {\n keywords: ['type', 'input', 'enum', 'union', 'interface', 'scalar', 'schema', 'query', 'mutation', 'subscription', 'fragment', 'on', 'extend', 'implements', 'directive', 'repeatable'],\n typeKeywords: ['String', 'Int', 'Float', 'Boolean', 'ID'],\n operators: ['!', '=', '|', '&', '...'],\n symbols: /[=!|&]+/,\n tokenizer: {\n root: [\n [/#.*$/, 'comment'], [/\"([^\"\\\\]|\\\\.)*\"/, 'string'], [/\"\"\"[\\s\\S]*?\"\"\"/, 'string'],\n [/\\b(type|input|enum|union|interface|scalar|schema|extend|implements|directive|repeatable)\\b/, 'keyword'],\n [/\\b(query|mutation|subscription|fragment|on)\\b/, 'keyword.control'],\n [/\\b(String|Int|Float|Boolean|ID)\\b/, 'type.identifier'],\n [/\\b[A-Z][a-zA-Z0-9_]*\\b/, 'type.identifier'],\n [/\\b[a-z_][a-zA-Z0-9_]*(?=\\s*[:(])/, 'variable'],\n [/\\b[a-z_][a-zA-Z0-9_]*\\b/, 'identifier'],\n [/[{}()\\[\\]]/, '@brackets'], [/[!:=|&]/, 'operator'],\n [/\\$[a-zA-Z_]\\w*/, 'variable'], [/@[a-zA-Z_]\\w*/, 'annotation'],\n ],\n },\n } as any);\n }\n if (language === 'graphql') initGraphQLCompletionProvider(monacoInstance);\n\n // dk + console intellisense — JavaScript editors only\n if (language === 'javascript') {\n if (!dkLibRegistered) {\n monacoInstance.languages.typescript.javascriptDefaults.addExtraLib(DK_TYPE_DEFS, 'dk-globals.d.ts');\n dkLibRegistered = true;\n }\n monacoInstance.languages.registerCompletionItemProvider('javascript', {\n triggerCharacters: ['.'],\n provideCompletionItems: (mdl: any, pos: any) => {\n const textUntilPosition = mdl.getValueInRange({\n startLineNumber: pos.lineNumber, startColumn: 1,\n endLineNumber: pos.lineNumber, endColumn: pos.column,\n });\n const suggestions = getDkCompletions(textUntilPosition, monacoInstance, pos);\n if (suggestions.length > 0) return { suggestions };\n const range = { startLineNumber: pos.lineNumber, endLineNumber: pos.lineNumber, startColumn: pos.column, endColumn: pos.column };\n if (/\\bconsole\\.\\s*$/.test(textUntilPosition)) {\n return {\n suggestions: [\n { label: 'log', kind: monacoInstance.languages.CompletionItemKind.Function, insertText: 'log(${1})', insertTextRules: monacoInstance.languages.CompletionItemInsertTextRule.InsertAsSnippet, detail: 'Log output', range },\n { label: 'info', kind: monacoInstance.languages.CompletionItemKind.Function, insertText: 'info(${1})', insertTextRules: monacoInstance.languages.CompletionItemInsertTextRule.InsertAsSnippet, detail: 'Info output', range },\n { label: 'warn', kind: monacoInstance.languages.CompletionItemKind.Function, insertText: 'warn(${1})', insertTextRules: monacoInstance.languages.CompletionItemInsertTextRule.InsertAsSnippet, detail: 'Warning output', range },\n { label: 'error', kind: monacoInstance.languages.CompletionItemKind.Function, insertText: 'error(${1})', insertTextRules: monacoInstance.languages.CompletionItemInsertTextRule.InsertAsSnippet, detail: 'Error output', range },\n { label: 'debug', kind: monacoInstance.languages.CompletionItemKind.Function, insertText: 'debug(${1})', insertTextRules: monacoInstance.languages.CompletionItemInsertTextRule.InsertAsSnippet, detail: 'Debug output', range },\n ],\n };\n }\n return { suggestions: [] };\n },\n });\n }\n\n if (!value && placeholder) editor.updateOptions({ placeholder });\n onEditorMount?.(editor, monacoInstance);\n editor.updateOptions({ contextmenu: contextMenuMode === 'native' });\n}\n","import { DiffEditor, type DiffOnMount } from '@monaco-editor/react';\nimport { useAppTheme } from '../../../hooks/useAppTheme';\nimport type { DiffEditorViewProps } from './DiffEditorView';\n\n// This file is only ever reached by '@salilvnair/dui/monaco-setup' — see\n// EditorView.monaco.tsx for why that makes a plain top-level import safe.\n\nexport function DiffEditorViewMonacoImpl({\n original,\n modified,\n language = 'sql',\n height = 300,\n readOnly = true,\n renderSideBySide = true,\n wordWrap = false,\n fontSize = 12,\n theme,\n onMount,\n}: DiffEditorViewProps) {\n const appTheme = useAppTheme();\n const resolvedTheme = theme ?? (appTheme === 'light' ? 'vs' : 'vs-dark');\n const h = typeof height === 'number' ? `${height}px` : height;\n\n return (\n <DiffEditor\n height={h}\n language={language}\n theme={resolvedTheme}\n original={original}\n modified={modified}\n onMount={onMount as DiffOnMount | undefined}\n options={{\n readOnly,\n renderSideBySide,\n wordWrap: wordWrap ? 'on' : 'off',\n fontSize,\n automaticLayout: true,\n minimap: { enabled: false },\n scrollBeyondLastLine: false,\n lineNumbers: 'on',\n folding: true,\n ignoreTrimWhitespace: false,\n }}\n />\n );\n}\n","/**\n * Self-host Monaco Editor — no CDN required.\n * This configures workers inline so the webview CSP doesn't need external access.\n * Also defines a custom \"vscode-dark+\" theme to match real VS Code colors.\n */\nimport { loader } from '@monaco-editor/react';\nimport * as monaco from 'monaco-editor';\nimport { markMonacoReady, registerMonacoEditorImpl, registerMonacoDiffEditorImpl } from './lib/monaco-runtime';\nimport { EditorViewMonacoImpl } from './lib/components/input/EditorView.monaco';\nimport { DiffEditorViewMonacoImpl } from './lib/components/input/DiffEditorView.monaco';\nimport editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker&inline';\nimport jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker&inline';\nimport htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker&inline';\nimport tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker&inline';\nimport {\n javascriptDefaults,\n typescriptDefaults,\n ScriptTarget,\n ModuleKind,\n ModuleResolutionKind,\n JsxEmit,\n} from 'monaco-editor/esm/vs/language/typescript/monaco.contribution';\n\n(window as any).MonacoEnvironment = {\n getWorker(_: string, label: string) {\n if (label === 'json') return new jsonWorker();\n if (label === 'html' || label === 'handlebars' || label === 'razor') return new htmlWorker();\n if (label === 'typescript' || label === 'javascript') return new tsWorker();\n return new editorWorker();\n },\n};\n\n// Define VS Code \"Dark+\" matching theme\nmonaco.editor.defineTheme('daakia-dark', {\n base: 'vs-dark',\n inherit: true,\n rules: [\n // JSON\n { token: 'string.key.json', foreground: '9CDCFE' },\n { token: 'string.value.json', foreground: 'CE9178' },\n { token: 'number', foreground: 'B5CEA8' },\n { token: 'keyword.json', foreground: '569CD6' }, // true/false/null\n // General\n { token: 'string', foreground: 'CE9178' },\n { token: 'keyword', foreground: '569CD6' },\n { token: 'comment', foreground: '6A9955' },\n { token: 'type', foreground: '4EC9B0' },\n { token: 'identifier', foreground: '9CDCFE' },\n { token: 'variable', foreground: '9CDCFE' },\n { token: 'constant', foreground: '4FC1FF' },\n // JS/TS\n { token: 'keyword.js', foreground: 'C586C0' },\n { token: 'keyword.ts', foreground: 'C586C0' },\n { token: 'string.js', foreground: 'CE9178' },\n { token: 'string.ts', foreground: 'CE9178' },\n { token: 'number.js', foreground: 'B5CEA8' },\n { token: 'number.ts', foreground: 'B5CEA8' },\n { token: 'regexp', foreground: 'D16969' },\n { token: 'delimiter', foreground: 'D4D4D4' },\n { token: 'delimiter.bracket', foreground: 'FFD700' },\n // XML/HTML\n { token: 'tag', foreground: '569CD6' },\n { token: 'attribute.name', foreground: '9CDCFE' },\n { token: 'attribute.value', foreground: 'CE9178' },\n // GraphQL\n { token: 'keyword.graphql', foreground: 'C586C0' },\n { token: 'keyword.control.graphql', foreground: 'C586C0' },\n { token: 'type.identifier.graphql', foreground: 'E5C07B' },\n { token: 'variable.graphql', foreground: '9CDCFE' },\n { token: 'string.graphql', foreground: 'CE9178' },\n { token: 'comment.graphql', foreground: '6A9955' },\n { token: 'annotation.graphql', foreground: 'DCDCAA' },\n { token: 'operator.graphql', foreground: 'D4D4D4' },\n { token: 'identifier.graphql', foreground: 'D4D4D4' },\n ],\n colors: {\n 'editor.background': '#1e1e1e',\n 'editor.foreground': '#D4D4D4',\n 'editor.lineHighlightBackground': '#2a2a2a',\n 'editor.selectionBackground': '#264f78',\n 'editor.inactiveSelectionBackground': '#3a3d41',\n 'editorLineNumber.foreground': '#858585',\n 'editorLineNumber.activeForeground': '#C6C6C6',\n 'editorCursor.foreground': '#AEAFAD',\n 'editor.selectionHighlightBackground': '#ADD6FF26',\n 'editorIndentGuide.background': '#404040',\n 'editorIndentGuide.activeBackground': '#707070',\n 'editorBracketMatch.background': '#0064001a',\n 'editorBracketMatch.border': '#888888',\n 'editorGutter.background': '#1e1e1e',\n 'editorWidget.background': '#252526',\n 'editorSuggestWidget.background': '#252526',\n 'editorSuggestWidget.border': '#454545',\n 'editorSuggestWidget.selectedBackground': '#04395e',\n 'list.hoverBackground': '#2a2d2e',\n 'input.background': '#3c3c3c',\n 'focusBorder': '#6366f1',\n },\n});\n\n// Configure TypeScript/JavaScript language service for full IntelliSense\n// allowNonTsExtensions is critical — without it, in-memory models (no .js/.ts extension)\n// won't get definition/reference/rename support from the TypeScript worker.\njavascriptDefaults.setCompilerOptions({\n target: ScriptTarget.ESNext,\n module: ModuleKind.ESNext,\n allowNonTsExtensions: true,\n allowJs: true,\n checkJs: true,\n strict: false,\n noEmit: true,\n esModuleInterop: true,\n moduleResolution: ModuleResolutionKind.NodeJs,\n jsx: JsxEmit.React,\n});\n\njavascriptDefaults.setDiagnosticsOptions({\n noSemanticValidation: false,\n noSyntaxValidation: false,\n});\n\n// Ensure all models are immediately synced to the TypeScript worker\n// (required for Go to Definition, Peek, etc. to work)\njavascriptDefaults.setEagerModelSync(true);\ntypescriptDefaults.setEagerModelSync(true);\n\ntypescriptDefaults.setCompilerOptions({\n target: ScriptTarget.ESNext,\n module: ModuleKind.ESNext,\n allowNonTsExtensions: true,\n allowJs: true,\n strict: false,\n noEmit: true,\n esModuleInterop: true,\n moduleResolution: ModuleResolutionKind.NodeJs,\n jsx: JsxEmit.React,\n});\n\n// Define VS Code \"Light+\" matching theme\nmonaco.editor.defineTheme('daakia-light', {\n base: 'vs',\n inherit: true,\n rules: [\n { token: 'string.key.json', foreground: '0451a5' },\n { token: 'string.value.json', foreground: 'a31515' },\n { token: 'number', foreground: '09885a' },\n { token: 'keyword.json', foreground: '0000ff' },\n { token: 'string', foreground: 'a31515' },\n { token: 'keyword', foreground: '0000ff' },\n { token: 'comment', foreground: '008000' },\n { token: 'type', foreground: '267f99' },\n { token: 'identifier', foreground: '001080' },\n { token: 'variable', foreground: '001080' },\n { token: 'constant', foreground: '0070c1' },\n { token: 'keyword.js', foreground: 'af00db' },\n { token: 'keyword.ts', foreground: 'af00db' },\n { token: 'string.js', foreground: 'a31515' },\n { token: 'string.ts', foreground: 'a31515' },\n { token: 'number.js', foreground: '09885a' },\n { token: 'number.ts', foreground: '09885a' },\n { token: 'regexp', foreground: 'c41a16' },\n { token: 'delimiter', foreground: '000000' },\n { token: 'delimiter.bracket', foreground: '000000' },\n { token: 'tag', foreground: '800000' },\n { token: 'attribute.name', foreground: 'ff0000' },\n { token: 'attribute.value', foreground: '0451a5' },\n { token: 'keyword.graphql', foreground: 'af00db' },\n { token: 'type.identifier.graphql', foreground: '267f99' },\n { token: 'variable.graphql', foreground: '001080' },\n { token: 'string.graphql', foreground: 'a31515' },\n { token: 'comment.graphql', foreground: '008000' },\n { token: 'operator.graphql', foreground: '000000' },\n { token: 'identifier.graphql', foreground: '000000' },\n ],\n colors: {\n 'editor.background': '#ffffff',\n 'editor.foreground': '#000000',\n 'editor.lineHighlightBackground': '#f5f5f5',\n 'editor.selectionBackground': '#add6ff',\n 'editor.inactiveSelectionBackground': '#e5ebf1',\n 'editorLineNumber.foreground': '#237893',\n 'editorLineNumber.activeForeground': '#0b216f',\n 'editorCursor.foreground': '#000000',\n 'editor.selectionHighlightBackground': '#add6ff4d',\n 'editorIndentGuide.background1': '#d3d3d3',\n 'editorIndentGuide.activeBackground1': '#939393',\n 'editorGutter.background': '#ffffff',\n 'editorWidget.background': '#f3f3f3',\n 'editorSuggestWidget.background': '#f3f3f3',\n 'editorSuggestWidget.border': '#c8c8c8',\n 'editorSuggestWidget.selectedBackground': '#0060c0',\n 'list.hoverBackground': '#f0f0f0',\n 'input.background': '#ffffff',\n 'input.border': '#d1d5db',\n 'focusBorder': '#6366f1',\n },\n});\n\nloader.config({ monaco });\n\n// Expose monaco globally for context menu access to editor instances\n(window as any).monaco = monaco;\n\n// Register the real Monaco-backed implementations, then flip the shared\n// readiness gate — EditorView/DiffEditorView now render these instead of\n// their lightweight fallback.\nregisterMonacoEditorImpl(EditorViewMonacoImpl);\nregisterMonacoDiffEditorImpl(DiffEditorViewMonacoImpl);\nmarkMonacoReady();\n\n/** Call this whenever the app theme changes to re-theme all open Monaco editors */\nexport function applyMonacoTheme(theme: 'dark' | 'light') {\n monaco.editor.setTheme(theme === 'dark' ? 'daakia-dark' : 'daakia-light');\n}\n\nexport { monaco };\n"],"names":["resolveTheme","vsKind","_a","useAppTheme","theme","setTheme","useState","useEffect","update","htmlObs","bodyObs","DK_TYPE_DEFS","getDkCompletions","_text","_monaco","_pos","useBreakpointGutter","options","breakpoints","disabledBreakpoints","conditionalBreakpointLines","pausedLine","onToggleBreakpoint","onGlyphContextMenu","editorRef","useRef","monacoRef","decorationsRef","pausedDecoRef","hoverDecoRef","disposablesRef","isBreakpointableLine","useCallback","lineNo","editor","model","monaco","decos","line","isDisabled","isConditional","glyphClass","d","domNode","marginContainer","d1","e","glyphRightClick","d2a","domHandler","ev","d3","lineDecos","_b","_d","_c","d4","state","useDebugStore","selector","dkLibRegistered","EXT_MAP","formatXml","xml","depth","result","tokens","token","isClosing","isSelfClosing","formatYaml","yaml","formatSql","sql","CLAUSE_RE","EditorViewSimple","value","onChange","language","height","minHeight","readOnly","placeholder","wordWrap","size","fontSize","className","bordered","onEditorMount","contextMenuMode","contextMenuItems","editorOptions","accentColor","base","useEditorBase","resolvedFontSize","modelPath","useMemo","resolvedHeight","containerHeight","m","EditorShell","jsx","Editor","v","monacoInstance","mountCommon","buildOptions","EditorViewDebug","attachBreakpointGutter","navigateLine","s","EditorViewMonacoImpl","debugSupported","rest","glyphMargin","o","_e","_f","_g","_h","_i","_j","_k","relayout","parent","ro","KM","KC","ed","sel","pos","text","langId","raw","formatted","mdl","position","textUntilPosition","openTags","tagRegex","lastOpen","l","suggestions","range","DiffEditorViewMonacoImpl","original","modified","renderSideBySide","onMount","appTheme","resolvedTheme","h","DiffEditor","_","label","jsonWorker","htmlWorker","tsWorker","editorWorker","javascriptDefaults","ScriptTarget","ModuleKind","ModuleResolutionKind","JsxEmit","typescriptDefaults","loader","registerMonacoEditorImpl","registerMonacoDiffEditorImpl","markMonacoReady","applyMonacoTheme"],"mappings":";;;;;;;;;;AAUA,SAASA,IAAiC;;AACxC,QAAMC,MACJC,IAAA,SAAS,SAAT,gBAAAA,EAAe,aAAa,8BAC5B,SAAS,gBAAgB,aAAa,wBAAwB;AAChE,SAAID,IAAeA,MAAW,iBAAiB,UAAU,SACjD,SAAS,gBAAgB,aAAa,YAAY,KAA0B;AACtF;AAEO,SAASE,IAAgC;AAC9C,QAAM,CAACC,GAAOC,CAAQ,IAAIC,GAA2BN,CAAY;AAEjE,SAAAO,EAAU,MAAM;AACd,UAAMC,IAAS,MAAMH,EAASL,GAAc,GACtCS,IAAU,IAAI,iBAAiBD,CAAM;AAC3C,IAAAC,EAAQ,QAAQ,SAAS,iBAAiB,EAAE,YAAY,IAAM,iBAAiB,CAAC,cAAc,wBAAwB,EAAA,CAAG;AACzH,UAAMC,IAAU,IAAI,iBAAiBF,CAAM;AAC3C,WAAI,SAAS,QAAME,EAAQ,QAAQ,SAAS,MAAM,EAAE,YAAY,IAAM,iBAAiB,CAAC,wBAAwB,GAAG,GAC5G,MAAM;AAAE,MAAAD,EAAQ,WAAA,GAAcC,EAAQ,WAAA;AAAA,IAAc;AAAA,EAC7D,GAAG,CAAA,CAAE,GAEEN;AACT;AC9BO,MAAMO,KAAe;AACrB,SAASC,GAAiBC,GAAeC,GAAkBC,GAA0B;AAC1F,SAAO,CAAA;AACT;ACkBO,SAASC,GAAoBC,GAAkC;AACpE,QAAM;AAAA,IACJ,aAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,4BAAAC;AAAA,IACA,YAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,oBAAAC;AAAA,EAAA,IACEN,GAEEO,IAAYC,EAAY,IAAI,GAC5BC,IAAYD,EAAY,IAAI,GAC5BE,IAAiBF,EAAiB,EAAE,GACpCG,IAAgBH,EAAiB,EAAE,GACnCI,IAAeJ,EAAiB,EAAE,GAClCK,IAAiBL,EAAc,EAAE,GAEjCM,IAAuBC,EAAY,CAACC,MAA4B;AACpE,UAAMC,IAASV,EAAU;AACzB,QAAI,CAACU,EAAQ,QAAO;AACpB,UAAMC,IAAQD,EAAO,SAAA;AACrB,WAAI,CAACC,KAASF,IAASE,EAAM,aAAA,IAAuB,KAE7C,CAAC,CADYA,EAAM,eAAeF,CAAM,EAAE,KAAA;AAAA,EAEnD,GAAG,CAAA,CAAE;AAGL,SAAA1B,EAAU,MAAM;AACd,UAAM2B,IAASV,EAAU,SACnBY,IAASV,EAAU;AACzB,QAAI,CAACQ,KAAU,CAACE,EAAQ;AAExB,UAAMC,IAAe,CAAA;AAErB,QAAInB;AACF,iBAAWoB,KAAQpB,GAAa;AAE9B,YAAIG,KAAciB,MAASjB,EAAY;AAEvC,cAAMkB,IAAapB,KAAA,gBAAAA,EAAqB,SAASmB,IAC3CE,IAAgBpB,KAAA,gBAAAA,EAA4B,SAASkB;AAC3D,YAAIG,IAAa;AACjB,QAAIF,IAAYE,IAAa,8BACpBD,MAAeC,IAAa,iCAErCJ,EAAM,KAAK;AAAA,UACT,OAAO,IAAID,EAAO,MAAME,GAAM,GAAGA,GAAM,CAAC;AAAA,UACxC,SAAS;AAAA,YACP,aAAa;AAAA,YACb,WAAWC,IAAa,KAAK;AAAA,YAC7B,YAAYH,EAAO,OAAO,uBAAuB;AAAA,YACjD,sBAAsBK;AAAA,YACtB,yBAAyB;AAAA,cACvB,OAAOD,IAAgB,2BAA2BD,IAAa,wBAAwB;AAAA,YAAA;AAAA,UACzF;AAAA,QACF,CACD;AAAA,MACH;AAGF,IAAAZ,EAAe,UAAUO,EAAO,iBAAiBP,EAAe,SAASU,CAAK;AAAA,EAChF,GAAG,CAACnB,GAAaC,GAAqBC,GAA4BC,CAAU,CAAC,GAG7Ed,EAAU,MAAM;AACd,UAAM2B,IAASV,EAAU,SACnBY,IAASV,EAAU;AACzB,QAAI,GAACQ,KAAU,CAACE;AAEhB,UAAIf,GAAY;AAGd,cAAMoB,KADiBvB,KAAA,gBAAAA,EAAa,SAASG,MAEzC,iEACA;AAEJ,QAAAO,EAAc,UAAUM,EAAO,iBAAiBN,EAAc,SAAS,CAAC;AAAA,UACtE,OAAO,IAAIQ,EAAO,MAAMf,GAAY,GAAGA,GAAY,CAAC;AAAA,UACpD,SAAS;AAAA,YACP,aAAa;AAAA,YACb,WAAW;AAAA,YACX,sBAAsBoB;AAAA,YACtB,YAAYL,EAAO,OAAO,uBAAuB;AAAA,UAAA;AAAA,QACnD,CACD,CAAC,GAEFF,EAAO,mBAAmBb,CAAU;AAAA,MACtC;AACE,QAAAO,EAAc,UAAUM,EAAO,iBAAiBN,EAAc,SAAS,EAAE;AAAA,EAE7E,GAAG,CAACP,GAAYH,CAAW,CAAC,GAG5BX,EAAU,MACD,MAAM;AACX,IAAAuB,EAAe,QAAQ,QAAQ,CAAAY,MAAA;;AAAK,cAAAxC,IAAAwC,KAAA,gBAAAA,EAAG,YAAH,gBAAAxC,EAAA,KAAAwC;AAAA,KAAc,GAClDZ,EAAe,UAAU,CAAA;AAAA,EAC3B,GACC,CAAA,CAAE,GA0IE,EAAE,QApIME,EAAY,CAACE,GAAaE,MAAgB;AACvD,IAAAZ,EAAU,UAAUU,GACpBR,EAAU,UAAUU;AAGpB,UAAMO,IAAUT,EAAO,WAAA;AACvB,QAAIS,GAAS;AACX,YAAMC,IAAkBD,EAAQ,cAAc,SAAS;AACvD,MAAIC,KAAiBA,EAAgB,aAAa,yBAAyB,EAAE;AAAA,IAC/E;AAGA,QAAItB,GAAoB;AACtB,YAAMuB,IAAKX,EAAO,YAAY,CAACY,MAAW;;AACxC,YAAIA,EAAE,MAAM,cAAcA,EAAE,OAAO,SAASV,EAAO,OAAO,gBAAgB,qBAAqB;AAC7F,gBAAME,KAAOpC,IAAA4C,EAAE,OAAO,aAAT,gBAAA5C,EAAmB;AAChC,UAAIoC,KAAQP,EAAqBO,CAAI,OAAsBA,CAAI;AAAA,QACjE;AAAA,MACF,CAAC;AACD,MAAAR,EAAe,QAAQ,KAAKe,CAAE;AAAA,IAChC;AAGA,QAAItB,GAAoB;AACtB,UAAIwB,IAAiE;AAGrE,YAAMC,IAAMd,EAAO,YAAY,CAACY,MAAW;;AACzC,YACEA,EAAE,MAAM,gBACPA,EAAE,OAAO,SAASV,EAAO,OAAO,gBAAgB,uBAChDU,EAAE,OAAO,SAASV,EAAO,OAAO,gBAAgB,uBAChDU,EAAE,OAAO,SAASV,EAAO,OAAO,gBAAgB,0BACjD;AACA,gBAAME,KAAOpC,IAAA4C,EAAE,OAAO,aAAT,gBAAA5C,EAAmB;AAChC,UAAIoC,KAAQP,EAAqBO,CAAI,MACnCS,IAAkB,EAAE,MAAAT,GAAM,GAAGQ,EAAE,MAAM,MAAM,GAAGA,EAAE,MAAM,KAAA;AAAA,QAE1D;AAAA,MACF,CAAC;AACD,MAAAhB,EAAe,QAAQ,KAAKkB,CAAG;AAG/B,YAAML,IAAUT,EAAO,WAAA;AACvB,UAAIS,GAAS;AACX,cAAMM,IAAa,CAACC,MAAmB;AACrC,UAAIH,KACFG,EAAG,eAAA,GACHA,EAAG,gBAAA,GACH3B,EAAmBwB,EAAgB,MAAM,EAAE,GAAGA,EAAgB,GAAG,GAAGA,EAAgB,GAAG,GACvFA,IAAkB,QACRG,EAAG,OAAuB,QAAQ,yBAAyB,MAErEA,EAAG,eAAA,GACHA,EAAG,gBAAA;AAAA,QAEP;AACAP,QAAAA,EAAQ,iBAAiB,eAAeM,GAAY,EAAI,GACxDnB,EAAe,QAAQ,KAAK,EAAE,SAAS,MAAMa,EAAQ,oBAAoB,eAAeM,GAAY,EAAI,EAAA,CAAG;AAAA,MAC7G;AAAA,IACF;AAGA,QAAI3B,GAAoB;AACtB,YAAM6B,IAAKjB,EAAO,YAAY,CAACY,MAAW;;AACxC,YAAIA,EAAE,OAAO,SAASV,EAAO,OAAO,gBAAgB,qBAAqB;AACvE,gBAAME,KAAOpC,IAAA4C,EAAE,OAAO,aAAT,gBAAA5C,EAAmB;AAChC,cAAIoC,KAAQP,EAAqBO,CAAI,GAAG;AACtC,kBAAMH,IAAQD,EAAO,SAAA;AACrB,gBAAIC,GAAO;AACT,oBAAMiB,IAAYjB,EAAM,mBAAmBG,CAAI;AAK/C,kBAAI,EAJcc,KAAA,gBAAAA,EAAW;AAAA,gBAAK,CAACV,MAAA;;AACjC,2BAAAW,KAAAnD,IAAAwC,EAAE,YAAF,gBAAAxC,EAAW,yBAAX,gBAAAmD,EAAiC,WAAW,uBAC5C,GAACC,KAAAC,IAAAb,EAAE,YAAF,gBAAAa,EAAW,yBAAX,QAAAD,EAAiC,SAAS;AAAA;AAAA,kBAE7B;AACd,gBAAAzB,EAAa,UAAUK,EAAO,iBAAiBL,EAAa,SAAS,CAAC;AAAA,kBACpE,OAAO,IAAIO,EAAO,MAAME,GAAM,GAAGA,GAAM,CAAC;AAAA,kBACxC,SAAS;AAAA,oBACP,aAAa;AAAA,oBACb,YAAYF,EAAO,OAAO,uBAAuB;AAAA,oBACjD,sBAAsB;AAAA,oBACtB,yBAAyB,EAAE,OAAO,iCAAA;AAAA,kBAAiC;AAAA,gBACrE,CACD,CAAC;AACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,QAAIP,EAAa,QAAQ,WACvBA,EAAa,UAAUK,EAAO,iBAAiBL,EAAa,SAAS,EAAE;AAAA,MAE3E,CAAC;AACD,MAAAC,EAAe,QAAQ,KAAKqB,CAAE;AAE9B,YAAMK,IAAKtB,EAAO,aAAa,MAAM;AACnC,QAAIL,EAAa,QAAQ,WACvBA,EAAa,UAAUK,EAAO,iBAAiBL,EAAa,SAAS,EAAE;AAAA,MAE3E,CAAC;AACD,MAAAC,EAAe,QAAQ,KAAK0B,CAAE;AAAA,IAChC;AAGA,QAAItC,GAAa;AACf,YAAMmB,IAAe,CAAA;AACrB,iBAAWC,KAAQpB,GAAa;AAC9B,cAAMqB,IAAapB,KAAA,gBAAAA,EAAqB,SAASmB,IAC3CE,IAAgBpB,KAAA,gBAAAA,EAA4B,SAASkB;AAC3D,YAAIG,IAAa;AACjB,QAAIF,IAAYE,IAAa,8BACpBD,MAAeC,IAAa,iCAErCJ,EAAM,KAAK;AAAA,UACT,OAAO,IAAID,EAAO,MAAME,GAAM,GAAGA,GAAM,CAAC;AAAA,UACxC,SAAS;AAAA,YACP,aAAa;AAAA,YACb,WAAWC,IAAa,KAAK;AAAA,YAC7B,YAAYH,EAAO,OAAO,uBAAuB;AAAA,YACjD,sBAAsBK;AAAA,YACtB,yBAAyB;AAAA,cACvB,OAAOD,IAAgB,2BAA2BD,IAAa,wBAAwB;AAAA,YAAA;AAAA,UACzF;AAAA,QACF,CACD;AAAA,MACH;AACA,MAAAZ,EAAe,UAAUO,EAAO,iBAAiBP,EAAe,SAASU,CAAK;AAAA,IAChF;AAAA,EACF,GAAG,CAACf,GAAoBC,GAAoBQ,GAAsBb,GAAaC,GAAqBC,CAA0B,CAAC,EAEtH;AACX;AC1PA,MAAMqC,KAAoB;AAAA,EACxB,cAAc;AAAA,EACd,iBAAiB,MAAM;AAAA,EAAC;AAAA,EACxB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,WAAW,CAAA;AACb;AAEO,SAASC,EAAiBC,GAAmC;AAClE,SAAOA,EAASF,EAAK;AACvB;AACAC,EAAc,WAAW,MAAMD;ACC/B,IAAIG,IAAkB;AAEtB,MAAMC,KAAmD;AAAA,EACvD,YAAY;AAAA,EAAO,YAAY;AAAA,EAAO,MAAM;AAAA,EAAS,KAAK;AAAA,EAC1D,MAAM;AAAA,EAAS,KAAK;AAAA,EAAQ,SAAS;AAAA,EAAY,QAAQ;AAAA,EACzD,MAAM;AAAA,EAAS,KAAK;AAAA,EAAQ,UAAU;AAAA,EAAO,WAAW;AAC1D;AAEA,SAASC,GAAUC,GAAqB;AAEtC,MAAIC,IAAQ,GACRC,IAAS;AACb,QAAMC,IAASH,EAAI,QAAQ,UAAU,IAAI,EAAE,MAAM,wBAAa;AAC9D,aAAWI,KAASD,GAAQ;AAC1B,UAAME,IAAY,OAAO,KAAKD,CAAK,GAC7BE,IAAgB,OAAO,KAAKF,CAAK,KAAK,MAAM,KAAKA,CAAK,KAAK,OAAO,KAAKA,CAAK;AAClF,IAAIC,MAAWJ,IAAQ,KAAK,IAAI,GAAGA,IAAQ,CAAC,IAC5CC,KAAU,KAAO,OAAOD,CAAK,IAAIG,EAAM,SAAS;AAAA,GAC5C,CAACC,KAAa,CAACC,KAAiB,WAAW,KAAKF,CAAK,KAAGH;AAAA,EAC9D;AACA,SAAOC,EAAO,QAAA;AAChB;AAEA,SAASK,GAAWC,GAAsB;AACxC,SAAOA,EACJ,MAAM;AAAA,CAAI,EACV,IAAI,OAAQjC,EAAK,QAAA,CAAS,EAC1B,KAAK;AAAA,CAAI,EACT,QAAQ,WAAW;AAAA;AAAA,CAAM,EACzB,KAAA;AACL;AAEA,SAASkC,GAAUC,GAAqB;AACtC,QAAMC,IAAY;AAClB,SAAOD,EACJ,QAAQ,QAAQ,GAAG,EACnB,QAAQC,GAAW;AAAA,GAAM,EACzB,MAAM;AAAA,CAAI,EACV,IAAI,CAAApC,MAAQA,EAAK,MAAM,EACvB,OAAO,CAAAA,MAAQA,EAAK,SAAS,CAAC,EAC9B,KAAK;AAAA,CAAI;AACd;AAIA,SAASqC,GAAiB;AAAA,EACxB,OAAAC;AAAA,EAAO,UAAAC;AAAA,EAAU,UAAAC,IAAW;AAAA,EAAQ,QAAAC,IAAS;AAAA,EAAS,WAAAC;AAAA,EACtD,UAAAC,IAAW;AAAA,EAAO,aAAAC;AAAA,EAAa,UAAAC,IAAW;AAAA,EAAM,MAAAC;AAAA,EAAM,UAAAC;AAAA,EACtD,WAAAC,IAAY;AAAA,EAAI,UAAAC,IAAW;AAAA,EAAO,eAAAC;AAAA,EAAe,iBAAAC,IAAkB;AAAA,EAAU,kBAAAC;AAAA,EAAkB,eAAAC;AAAA,EAAe,aAAAC;AAChH,GAAoB;AAClB,QAAMC,IAAOC,EAAcV,CAAI,GACzBW,IAAmBV,KAAYQ,EAAK,UACpCzF,IAAQD,EAAA,GACRqB,IAAYC,EAAY,IAAI,GAC5BK,IAAiBL,EAAc,EAAE,GACjCuE,IAAYC;AAAA,IAChB,MAAM,qBAAqB,OAAO,WAAA,CAAY,GAAGpC,GAAQiB,CAAQ,KAAK,MAAM;AAAA,IAC5E,CAACA,CAAQ;AAAA,EAAA,GAELoB,IAAiB,OAAOnB,KAAW,WAAW,GAAGA,CAAM,OAAOA,GAC9DoB,IAAkBnB,IAAY,OAAOkB,CAAc,KAAKlB,CAAS,QAAQkB;AAE/E,SAAA3F,EAAU,MACD,MAAM;AACX,IAAAuB,EAAe,QAAQ,QAAQ,CAAAY,MAAA;;AAAK,cAAAxC,IAAAwC,KAAA,gBAAAA,EAAG,YAAH,gBAAAxC,EAAA,KAAAwC;AAAA,KAAc,GAClDZ,EAAe,UAAU,CAAA;AACzB,UAAMI,IAASV,EAAU;AACzB,QAAIU,GAAQ;AAAE,YAAMkE,IAAIlE,EAAO,SAAA;AAAY,MAAIkE,OAAK,QAAA;AAAA,IAAW;AAAA,EACjE,GACC,CAAA,CAAE,GAEL7F,EAAU,MAAM;AACd,QAAI,CAAC0E,EAAU;AACf,UAAM/C,IAASV,EAAU;AACzB,QAAI,CAACU,EAAQ;AACb,UAAMC,IAAQD,EAAO,SAAA;AACrB,IAAI,CAACC,KAASA,EAAM,SAAA,MAAeyC,KACnCzC,EAAM,SAASyC,CAAK;AAAA,EACtB,GAAG,CAACA,GAAOK,CAAQ,CAAC,qBASjBoB,GAAA,EAAY,UAAAd,GAAoB,iBAAAY,GAAkC,iBAAAV,GAAkC,kBAAAC,GAAoC,aAAAE,GACvI,UAAA,gBAAAU;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,QAAO;AAAA,MACP,UAAAzB;AAAA,MACA,MAAMkB;AAAA,MACN,OAAApB;AAAA,MACA,OAAOxE,MAAU,UAAU,iBAAiB;AAAA,MAC5C,UAAU,CAAAoG,MAAK3B,KAAA,gBAAAA,EAAW2B,KAAK;AAAA,MAC/B,SAfuB,CAACtE,GAAQuE,MAAmB;AACvD,QAAAjF,EAAU,UAAUU,GACpBJ,EAAe,UAAU,CAAA,GACzB4E,GAAYxE,GAAQuE,GAAgB,EAAE,UAAA3B,GAAU,OAAAF,GAAO,aAAAM,GAAa,eAAAM,GAAe,iBAAAC,GAAiB;AAAA,MACtG;AAAA,MAYM,SAASkB,GAAa,EAAE,UAAA1B,GAAU,UAAUc,GAAkB,UAAAZ,GAAU,aAAa,IAAO,iBAAAM,GAAiB,eAAAE,EAAA,CAAe;AAAA,IAAA;AAAA,EAAA,GAEhI;AAEJ;AAIA,SAASiB,GAAgB;AAAA,EACvB,OAAAhC;AAAA,EAAO,UAAAC;AAAA,EAAU,UAAAC,IAAW;AAAA,EAAQ,QAAAC,IAAS;AAAA,EAAS,WAAAC;AAAA,EACtD,UAAAC,IAAW;AAAA,EAAO,aAAAC;AAAA,EAAa,UAAAC,IAAW;AAAA,EAAM,MAAAC;AAAA,EAAM,UAAAC;AAAA,EACtD,WAAAC,IAAY;AAAA,EAAI,UAAAC,IAAW;AAAA,EAC3B,aAAArE;AAAA,EAAa,qBAAAC;AAAA,EAAqB,4BAAAC;AAAA,EAA4B,YAAAC;AAAA,EAC9D,oBAAAC;AAAA,EAAoB,oBAAAC;AAAA,EAAoB,eAAAiE;AAAA,EAAe,iBAAAC,IAAkB;AAAA,EAAU,kBAAAC;AAAA,EAAkB,eAAAC;AAAA,EAAe,aAAAC;AACtH,GAAoB;AAClB,QAAMC,IAAOC,EAAcV,CAAI,GACzBW,IAAmBV,KAAYQ,EAAK,UACpCzF,IAAQD,EAAA,GACRqB,IAAYC,EAAY,IAAI,GAC5BK,IAAiBL,EAAc,EAAE,GACjCuE,IAAYC;AAAA,IAChB,MAAM,qBAAqB,OAAO,WAAA,CAAY,GAAGpC,GAAQiB,CAAQ,KAAK,MAAM;AAAA,IAC5E,CAACA,CAAQ;AAAA,EAAA,GAELoB,IAAiB,OAAOnB,KAAW,WAAW,GAAGA,CAAM,OAAOA,GAC9DoB,IAAkBnB,IAAY,OAAOkB,CAAc,KAAKlB,CAAS,QAAQkB,GAGzE,EAAE,QAAQW,GAAA,IAA2B7F,GAAoB;AAAA,IAC7D,aAAAE;AAAA,IAAa,qBAAAC;AAAA,IAAqB,4BAAAC;AAAA,IAA4B,YAAAC;AAAA,IAC9D,oBAAAC;AAAA,IAAoB,oBAAAC;AAAA,EAAA,CACrB,GAEKuF,IAAepD,EAAc,CAAAqD,MAAKA,EAAE,YAAY;AAEtD,SAAAxG,EAAU,MACD,MAAM;AACX,IAAAuB,EAAe,QAAQ,QAAQ,CAAAY,MAAA;;AAAK,cAAAxC,IAAAwC,KAAA,gBAAAA,EAAG,YAAH,gBAAAxC,EAAA,KAAAwC;AAAA,KAAc,GAClDZ,EAAe,UAAU,CAAA;AACzB,UAAMI,IAASV,EAAU;AACzB,QAAIU,GAAQ;AAAE,YAAMkE,IAAIlE,EAAO,SAAA;AAAY,MAAIkE,OAAK,QAAA;AAAA,IAAW;AAAA,EACjE,GACC,CAAA,CAAE,GAEL7F,EAAU,MAAM;AACd,QAAI,CAAC0E,EAAU;AACf,UAAM/C,IAASV,EAAU;AACzB,QAAI,CAACU,EAAQ;AACb,UAAMC,IAAQD,EAAO,SAAA;AACrB,IAAI,CAACC,KAASA,EAAM,SAAA,MAAeyC,KACnCzC,EAAM,SAASyC,CAAK;AAAA,EACtB,GAAG,CAACA,GAAOK,CAAQ,CAAC,GAEpB1E,EAAU,MAAM;AACd,IAAI,CAACuG,KAAgB,CAACtF,EAAU,WAAW,CAACN,MAC5CM,EAAU,QAAQ,mBAAmBsF,CAAY,GACjDtF,EAAU,QAAQ,YAAY,EAAE,YAAYsF,GAAc,QAAQ,GAAG,GACrEpD,EAAc,SAAA,EAAW,gBAAgB,IAAI;AAAA,EAC/C,GAAG,CAACoD,GAAc5F,CAAW,CAAC,qBAY3BmF,GAAA,EAAY,UAAAd,GAAoB,iBAAAY,GAAkC,iBAAAV,GAAkC,kBAAAC,GAAoC,aAAAE,GACvI,UAAA,gBAAAU;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,QAAO;AAAA,MACP,UAAAzB;AAAA,MACA,MAAMkB;AAAA,MACN,OAAApB;AAAA,MACA,OAAOxE,MAAU,UAAU,iBAAiB;AAAA,MAC5C,UAAU,CAAAoG,MAAK3B,KAAA,gBAAAA,EAAW2B,KAAK;AAAA,MAC/B,SAlBuB,CAACtE,GAAQuE,MAAmB;AACvD,QAAAjF,EAAU,UAAUU,GACpBJ,EAAe,UAAU,CAAA,GAEzB+E,GAAuB3E,GAAQuE,CAAc,GAE7CC,GAAYxE,GAAQuE,GAAgB,EAAE,UAAA3B,GAAU,OAAAF,GAAO,aAAAM,GAAa,eAAAM,GAAe,iBAAAC,GAAiB;AAAA,MACtG;AAAA,MAYM,SAASkB,GAAa,EAAE,UAAA1B,GAAU,UAAUc,GAAkB,UAAAZ,GAAU,aAAa,CAAC,CAAC7D,GAAoB,iBAAAmE,GAAiB,eAAAE,GAAe;AAAA,IAAA;AAAA,EAAA,GAE/I;AAEJ;AAIO,SAASqB,GAAqB,EAAE,gBAAAC,IAAiB,IAAO,WAAA3B,IAAY,IAAI,GAAG4B,KAAyB;AACzG,SAAID,IAAuB,gBAAAX,EAACM,IAAA,EAAgB,WAAAtB,GAAuB,GAAG4B,GAAM,IACrE,gBAAAZ,EAAC3B,IAAA,EAAiB,WAAAW,GAAuB,GAAG4B,EAAA,CAAM;AAC3D;AAIA,SAASP,GAAa,EAAE,UAAA1B,GAAU,UAAAI,GAAU,UAAAF,GAAU,aAAAgC,GAAa,iBAAA1B,IAAkB,UAAU,eAAAE,KAO5F;;AACD,QAAMyB,IAAIzB,KAAiB,CAAA;AAC3B,SAAO;AAAA;AAAA,IAEL,aAAcyB,EAAE,eAAe;AAAA,IAC/B,SAAS,EAAE,SAASA,EAAE,WAAW,GAAA;AAAA,IACjC,sBAAsBA,EAAE,wBAAwB;AAAA,IAChD,iBAAiBA,EAAE,mBAAmB;AAAA,IACtC,gBAAgBA,EAAE,kBAAkB;AAAA,IACpC,SAASA,EAAE,WAAW;AAAA,IACtB,qBAAsBA,EAAE,uBAAuB;AAAA,IAC/C,SAASA,EAAE,WAAW;AAAA,IACtB,eAAeA,EAAE,iBAAiB;AAAA,IAClC,cAAcA,EAAE,gBAAgB;AAAA,IAChC,YAAaA,EAAE,cAAc;AAAA,IAC7B,kBAAmBA,EAAE,oBAAoB;AAAA,IACzC,eAAgBA,EAAE,iBAAiB;AAAA,IACnC,yBAAyB,EAAE,SAASA,EAAE,2BAA2B,GAAA;AAAA,IACjE,iBAAiBA,EAAE,mBAAmB;AAAA,IACtC,eAAeA,EAAE,iBAAiB;AAAA,IAClC,4BAA4BA,EAAE,8BAA8B;AAAA,IAC5D,kBAAkBA,EAAE,oBAAoB;AAAA,IACxC,4BAA4BA,EAAE,8BAA8B;AAAA,IAC5D,yBAA0BA,EAAE,2BAA2B;AAAA,IACvD,OAAO,EAAE,SAASA,EAAE,SAAS,GAAA;AAAA,IAC7B,gBAAgB,EAAE,SAASA,EAAE,kBAAkB,GAAA;AAAA,IAC/C,UAAUA,EAAE,YAAY;AAAA,IACxB,YAAY,EAAE,SAAUA,EAAE,cAAc,KAAS,OAAgB,MAAA;AAAA,IACjE,SAAS,EAAE,OAAKlH,IAAAkH,EAAE,YAAF,gBAAAlH,EAAW,QAAO,GAAG,UAAQmD,IAAA+D,EAAE,YAAF,gBAAA/D,EAAW,WAAU,EAAA;AAAA,IAClE,GAAI+D,EAAE,eAAe,EAAE,aAAaA,EAAE,YAAA;AAAA,IACtC,GAAIA,EAAE,kBAAkB,EAAE,gBAAgBA,EAAE,eAAA;AAAA,IAC5C,GAAIA,EAAE,cAAc,EAAE,YAAYA,EAAE,WAAA;AAAA,IACpC,GAAIA,EAAE,iBAAiB,EAAE,eAAeA,EAAE,cAAA;AAAA,IAC1C,GAAIA,EAAE,UAAU,EAAE,QAAQA,EAAE,OAAA;AAAA,IAC5B,GAAIA,EAAE,yBAAyB,UAAa,EAAE,sBAAsBA,EAAE,qBAAA;AAAA,IACtE,GAAIA,EAAE,wBAAwB,UAAa,EAAE,qBAAqBA,EAAE,oBAAA;AAAA;AAAA,IAEpE,UAAAnC;AAAA,IACA,UAAAI;AAAA,IACA,UAAW+B,EAAE,aAAajC,IAAW,OAAO;AAAA;AAAA,IAE5C,iBAAiB;AAAA,IACjB,aAAAgC;AAAA,IACA,qBAAsBC,EAAE,wBAAwBD,IAAc,SAAS;AAAA,IACvE,sBAAsB;AAAA,IACtB,aAAa1B,MAAoB;AAAA,IACjC,oBAAoB;AAAA,IACpB,2BAA2B;AAAA,IAC3B,qBAAqB;AAAA,IACrB,WAAW;AAAA,MACT,YAAUlC,IAAA6D,EAAE,cAAF,gBAAA7D,EAAa,aAAY;AAAA,MACnC,cAAYD,IAAA8D,EAAE,cAAF,gBAAA9D,EAAa,eAAc;AAAA,MACvC,yBAAuB+D,IAAAD,EAAE,cAAF,gBAAAC,EAAa,0BAAyB;AAAA,MAC7D,2BAAyBC,IAAAF,EAAE,cAAF,gBAAAE,EAAa,4BAA2B;AAAA,IAAA;AAAA,IAEnE,YAAYF,EAAE,cAAc;AAAA,IAC5B,qBAAqB;AAAA,IACrB,mBAAmB;AAAA,IACnB,mBAAmB;AAAA,IACnB,cAAc;AAAA,IACd,QAAQ,EAAE,cAAc,IAAM,aAAa,GAAA;AAAA,IAC3C,SAAS;AAAA,MACP,gBAAcG,IAAAH,EAAE,YAAF,gBAAAG,EAAW,iBAAgB;AAAA,MACzC,gBAAcC,IAAAJ,EAAE,YAAF,gBAAAI,EAAW,iBAAgB;AAAA,MACzC,cAAYC,IAAAL,EAAE,YAAF,gBAAAK,EAAW,eAAc;AAAA,MACrC,kBAAgBC,IAAAN,EAAE,YAAF,gBAAAM,EAAW,mBAAkB;AAAA,MAC7C,KAAIC,IAAAP,EAAE,YAAF,gBAAAO,EAAW,eAAc,UAAa,EAAE,WAAWP,EAAE,QAAQ,UAAA;AAAA,IAAU;AAAA,EAC7E;AAEJ;AAIA,SAASV,GACPxE,GACAuE,GACA,EAAE,UAAA3B,GAAU,OAAAF,GAAO,aAAAM,GAAa,eAAAM,GAAe,iBAAAC,IAAkB,YAOjE;AAEA,QAAMmC,IAAW,MAAM1F,EAAO,OAAA;AAC9B,EAAA0F,EAAA,GACA,sBAAsBA,CAAQ,GAC9B,WAAWA,GAAU,EAAE,GACvB,WAAWA,GAAU,GAAG;AACxB,QAAMC,IAAS3F,EAAO,oBAAA,EAAsB;AAC5C,MAAI2F,GAAQ;AACV,UAAMC,IAAK,IAAI,eAAeF,CAAQ;AACtC,IAAAE,EAAG,QAAQD,CAAM,GACjB3F,EAAO,aAAa,MAAM4F,EAAG,WAAA,CAAY;AAAA,EAC3C;AAEA,EAAA5F,EAAO,cAAc;AAAA,IACnB,qBAAqB;AAAA,IAAU,mBAAmB;AAAA,IAClD,mBAAmB;AAAA,IAAU,cAAc;AAAA,IAAmB,YAAY;AAAA,EAAA,CAC3E;AAGD,QAAM6F,IAAKtB,EAAe,QACpBuB,IAAKvB,EAAe;AAE1B,EAAAvE,EAAO,UAAU;AAAA,IACf,IAAI;AAAA,IAAyB,OAAO;AAAA,IACpC,aAAa,CAAC6F,EAAG,UAAUC,EAAG,IAAI;AAAA,IAClC,KAAK,CAACC,MAAY;;AAChB,YAAMC,IAAMD,EAAG,aAAA;AACf,UAAIC,KAAO,CAACA,EAAI;AACd,kBAAU,UAAU,YAAUhI,IAAA+H,EAAG,SAAA,MAAH,gBAAA/H,EAAe,gBAAgBgI,OAAQ,EAAE;AAAA,WAClE;AACL,cAAMC,IAAMF,EAAG,YAAA;AACf,QAAIE,KAAK,UAAU,UAAU,aAAW9E,IAAA4E,EAAG,SAAA,MAAH,gBAAA5E,EAAe,eAAe8E,EAAI,gBAAe,MAAM;AAAA,CAAI;AAAA,MACrG;AAAA,IACF;AAAA,EAAA,CACD,GAEDjG,EAAO,UAAU;AAAA,IACf,IAAI;AAAA,IAAwB,OAAO;AAAA,IACnC,aAAa,CAAC6F,EAAG,UAAUC,EAAG,IAAI;AAAA,IAClC,KAAK,CAACC,MAAY;;AAChB,YAAMC,IAAMD,EAAG,aAAA;AACf,UAAIC,KAAO,CAACA,EAAI;AACd,kBAAU,UAAU,YAAUhI,IAAA+H,EAAG,SAAA,MAAH,gBAAA/H,EAAe,gBAAgBgI,OAAQ,EAAE,GACvED,EAAG,aAAa,OAAO,CAAC,EAAE,OAAOC,GAAK,MAAM,GAAA,CAAI,CAAC;AAAA,WAC5C;AACL,cAAMC,IAAMF,EAAG,YAAA;AACf,YAAIE,GAAK;AACP,gBAAMhG,IAAQ8F,EAAG,SAAA;AACjB,UAAI9F,MACF,UAAU,UAAU,UAAUA,EAAM,eAAegG,EAAI,UAAU,IAAI;AAAA,CAAI,GACzEF,EAAG,aAAa,OAAO,CAAC,EAAE,OAAO,IAAIxB,EAAe,MAAM0B,EAAI,YAAY,GAAGA,EAAI,aAAa,GAAG,CAAC,GAAG,MAAM,GAAA,CAAI,CAAC;AAAA,QAEpH;AAAA,MACF;AAAA,IACF;AAAA,EAAA,CACD,GAEDjG,EAAO,UAAU;AAAA,IACf,IAAI;AAAA,IAA0B,OAAO;AAAA,IACrC,aAAa,CAAC6F,EAAG,UAAUC,EAAG,IAAI;AAAA,IAClC,KAAK,OAAOC,MAAY;AACtB,UAAI;AACF,cAAMG,IAAO,MAAM,UAAU,UAAU,SAAA;AACvC,YAAIA,GAAM;AACR,gBAAMF,IAAMD,EAAG,aAAA;AACf,UAAIC,KAAKD,EAAG,aAAa,SAAS,CAAC,EAAE,OAAOC,GAAK,MAAAE,GAAM,kBAAkB,GAAA,CAAM,CAAC;AAAA,QAClF;AAAA,MACF,QAAQ;AAAA,MAAoC;AAAA,IAC9C;AAAA,EAAA,CACD,GAEDlG,EAAO,UAAU;AAAA,IACf,IAAI;AAAA,IAA8B,OAAO;AAAA,IACzC,aAAa,CAAC6F,EAAG,UAAUC,EAAG,IAAI;AAAA,IAClC,KAAK,CAACC,MAAY;AAAE,YAAM7B,IAAI6B,EAAG,SAAA;AAAY,MAAI7B,KAAG6B,EAAG,aAAa7B,EAAE,mBAAmB;AAAA,IAAG;AAAA,EAAA,CAC7F,GAGDlE,EAAO,UAAU;AAAA,IACf,IAAI;AAAA,IAA0B,OAAO;AAAA,IACrC,aAAa,CAAC6F,EAAG,QAAQA,EAAG,MAAMC,EAAG,IAAI;AAAA,IACzC,oBAAoB;AAAA,IAAgB,kBAAkB;AAAA,IACtD,KAAK,OAAOC,MAAY;;AACtB,YAAM9F,IAAQ8F,EAAG,SAAA;AACjB,UAAI,CAAC9F,EAAO;AACZ,YAAMkG,IAASlG,EAAM,cAAA;AACrB,UAAIkG,MAAW,SAASA,MAAW;AACjC,YAAI;AACF,gBAAMC,IAAMnG,EAAM,SAAA,GACZoG,IAAYzE,GAAUwE,CAAG;AAC/B,UAAIC,MAAcD,KAAKL,EAAG,aAAa,iBAAiB,CAAC,EAAE,OAAO9F,EAAM,kBAAA,GAAqB,MAAMoG,EAAA,CAAW,CAAC;AAAA,QACjH,QAAQ;AAAA,QAAsB;AAAA,eACrBF,MAAW;AACpB,YAAI;AACF,gBAAMC,IAAMnG,EAAM,SAAA,GACZoG,IAAYjE,GAAWgE,CAAG;AAChC,UAAIC,MAAcD,KAAKL,EAAG,aAAa,iBAAiB,CAAC,EAAE,OAAO9F,EAAM,kBAAA,GAAqB,MAAMoG,EAAA,CAAW,CAAC;AAAA,QACjH,QAAQ;AAAA,QAAuB;AAAA,eACtBF,MAAW;AACpB,YAAI;AACF,gBAAMC,IAAMnG,EAAM,SAAA,GACZoG,IAAY/D,GAAU8D,CAAG;AAC/B,UAAIC,MAAcD,KAAKL,EAAG,aAAa,iBAAiB,CAAC,EAAE,OAAO9F,EAAM,kBAAA,GAAqB,MAAMoG,EAAA,CAAW,CAAC;AAAA,QACjH,QAAQ;AAAA,QAAsB;AAAA;AAE9B,gBAAMrI,IAAA+H,EAAG,UAAU,8BAA8B,MAA3C,gBAAA/H,EAA8C;AAAA,IAExD;AAAA,EAAA,CACD,GAGDgC,EAAO,UAAU;AAAA,IACf,IAAI;AAAA,IAAyB,OAAO;AAAA,IACpC,aAAa,CAAC6F,EAAG,UAAUA,EAAG,QAAQC,EAAG,IAAI;AAAA,IAC7C,oBAAoB;AAAA,IAAc,kBAAkB;AAAA,IACpD,KAAK,MAAA;;AAAM,cAAA9H,IAAAgC,EAAO,UAAU,sCAAsC,MAAvD,gBAAAhC,EAA0D;AAAA;AAAA,EAAI,CAC1E;AAGD,QAAMiC,IAAQD,EAAO,SAAA;AACrB,MAAIC,GAAO;AACT,UAAMkG,IAASlG,EAAM,cAAA;AACrB,IAAIkG,MAAW,SAASA,MAAW,UACjC5B,EAAe,UAAU,yBAAyB4B,GAAQ;AAAA,MACxD,kBAAkB;AAAA,QAChB,EAAE,MAAM,KAAK,OAAO,IAAA;AAAA,QAAO,EAAE,MAAM,KAAK,OAAO,IAAA;AAAA,QAAO,EAAE,MAAM,KAAK,OAAO,IAAA;AAAA,QAC1E,EAAE,MAAM,KAAK,OAAO,KAAK,OAAO,CAAC,QAAQ,EAAA;AAAA,QACzC,EAAE,MAAM,KAAK,OAAO,KAAK,OAAO,CAAC,UAAU,SAAS,EAAA;AAAA,QACpD,EAAE,MAAM,KAAK,OAAO,KAAK,OAAO,CAAC,QAAQ,EAAA;AAAA,MAAE;AAAA,MAE7C,UAAU,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC;AAAA,MACzD,kBAAkB;AAAA,QAChB,EAAE,MAAM,KAAK,OAAO,IAAA;AAAA,QAAO,EAAE,MAAM,KAAK,OAAO,IAAA;AAAA,QAAO,EAAE,MAAM,KAAK,OAAO,IAAA;AAAA,QAC1E,EAAE,MAAM,KAAK,OAAO,IAAA;AAAA,QAAO,EAAE,MAAM,KAAK,OAAO,IAAA;AAAA,QAAO,EAAE,MAAM,KAAK,OAAO,IAAA;AAAA,MAAI;AAAA,MAEhF,cAAc;AAAA,QACZ;AAAA,UACE,YAAY;AAAA,UACZ,WAAW;AAAA,UACX,QAAQ,EAAE,cAAc5B,EAAe,UAAU,aAAa,cAAA;AAAA,QAAc;AAAA,QAE9E;AAAA,UACE,YAAY;AAAA,UACZ,QAAQ,EAAE,cAAcA,EAAe,UAAU,aAAa,OAAA;AAAA,QAAO;AAAA,MACvE;AAAA,MAEF,aAAa;AAAA,IAAA,CACd,GACDA,EAAe,UAAU,+BAA+B4B,GAAQ;AAAA,MAC9D,mBAAmB,CAAC,GAAG;AAAA,MACvB,wBAAwB,CAACG,GAAUC,MAAkB;AACnD,cAAMC,IAAoBF,EAAI,gBAAgB;AAAA,UAC5C,iBAAiB;AAAA,UAAG,aAAa;AAAA,UACjC,eAAeC,EAAS;AAAA,UAAY,WAAWA,EAAS;AAAA,QAAA,CACzD;AAED,YADcC,EAAkB,MAAM,SAAS,GACpC;AACT,gBAAMC,IAAqB,CAAA,GACrBC,IAAW;AACjB,cAAIxC;AACJ,kBAAQA,IAAIwC,EAAS,KAAKF,EAAkB,MAAM,GAAG,EAAE,CAAC,OAAO;AAC7D,YAAItC,EAAE,CAAC,EAAE,WAAW,IAAI,MAAY,IAAA,IAC1BA,EAAE,CAAC,EAAE,SAAS,IAAI,KAAGuC,EAAS,KAAKvC,EAAE,CAAC,CAAC;AAEnD,gBAAMyC,IAAWF,EAASA,EAAS,SAAS,CAAC;AAC7C,cAAIE;AACF,mBAAO;AAAA,cACL,aAAa,CAAC;AAAA,gBACZ,OAAO,IAAIA,CAAQ;AAAA,gBACnB,MAAMpC,EAAe,UAAU,mBAAmB;AAAA,gBAClD,YAAY,GAAGoC,CAAQ;AAAA,gBACvB,OAAO;AAAA,kBACL,iBAAiBJ,EAAS;AAAA,kBAAY,aAAaA,EAAS;AAAA,kBAC5D,eAAeA,EAAS;AAAA,kBAAY,WAAWA,EAAS;AAAA,gBAAA;AAAA,cAC1D,CACD;AAAA,YAAA;AAAA,QAGP;AACA,eAAO,EAAE,aAAa,GAAC;AAAA,MACzB;AAAA,IAAA,CACD,KAEDhC,EAAe,UAAU,yBAAyB4B,GAAQ;AAAA,MACxD,kBAAkB;AAAA,QAChB,EAAE,MAAM,KAAK,OAAO,IAAA;AAAA,QAAO,EAAE,MAAM,KAAK,OAAO,IAAA;AAAA,QAAO,EAAE,MAAM,KAAK,OAAO,IAAA;AAAA,QAC1E,EAAE,MAAM,KAAK,OAAO,KAAK,OAAO,CAAC,QAAQ,EAAA;AAAA,QACzC,EAAE,MAAM,KAAK,OAAO,KAAK,OAAO,CAAC,UAAU,SAAS,EAAA;AAAA,MAAE;AAAA,MAExD,UAAU,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC;AAAA,MAC7C,kBAAkB;AAAA,QAChB,EAAE,MAAM,KAAK,OAAO,IAAA;AAAA,QAAO,EAAE,MAAM,KAAK,OAAO,IAAA;AAAA,QAAO,EAAE,MAAM,KAAK,OAAO,IAAA;AAAA,QAC1E,EAAE,MAAM,KAAK,OAAO,IAAA;AAAA,QAAO,EAAE,MAAM,KAAK,OAAO,IAAA;AAAA,MAAI;AAAA,IACrD,CACD;AAAA,EAEL;AAIA,EADc5B,EAAe,UAAU,aAAA,EAC5B,KAAK,CAACqC,MAAWA,EAAE,OAAO,SAAS,MAC5CrC,EAAe,UAAU,SAAS,EAAE,IAAI,WAAW,GACnDA,EAAe,UAAU,yBAAyB,WAAW;AAAA,IAC3D,UAAU,CAAC,QAAQ,SAAS,QAAQ,SAAS,aAAa,UAAU,UAAU,SAAS,YAAY,gBAAgB,YAAY,MAAM,UAAU,cAAc,aAAa,YAAY;AAAA,IACtL,cAAc,CAAC,UAAU,OAAO,SAAS,WAAW,IAAI;AAAA,IACxD,WAAW,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK;AAAA,IACrC,SAAS;AAAA,IACT,WAAW;AAAA,MACT,MAAM;AAAA,QACJ,CAAC,QAAQ,SAAS;AAAA,QAAG,CAAC,mBAAmB,QAAQ;AAAA,QAAG,CAAC,kBAAkB,QAAQ;AAAA,QAC/E,CAAC,8FAA8F,SAAS;AAAA,QACxG,CAAC,iDAAiD,iBAAiB;AAAA,QACnE,CAAC,qCAAqC,iBAAiB;AAAA,QACvD,CAAC,0BAA0B,iBAAiB;AAAA,QAC5C,CAAC,oCAAoC,UAAU;AAAA,QAC/C,CAAC,2BAA2B,YAAY;AAAA,QACxC,CAAC,cAAc,WAAW;AAAA,QAAG,CAAC,WAAW,UAAU;AAAA,QACnD,CAAC,kBAAkB,UAAU;AAAA,QAAG,CAAC,iBAAiB,YAAY;AAAA,MAAA;AAAA,IAChE;AAAA,EACF,CACM,IAKN3B,MAAa,iBACVlB,MACH6C,EAAe,UAAU,WAAW,mBAAmB,YAAY9F,IAAc,iBAAiB,GAClGiD,IAAkB,KAEpB6C,EAAe,UAAU,+BAA+B,cAAc;AAAA,IACpE,mBAAmB,CAAC,GAAG;AAAA,IACvB,wBAAwB,CAAC+B,GAAUL,MAAa;AAC9C,YAAMO,IAAoBF,EAAI,gBAAgB;AAAA,QAC5C,iBAAiBL,EAAI;AAAA,QAAY,aAAa;AAAA,QAC9C,eAAeA,EAAI;AAAA,QAAY,WAAWA,EAAI;AAAA,MAAA,CAC/C,GACKY,IAAcnI,GAAuD;AAC3E,UAAImI,EAAY,SAAS,EAAG,QAAO,EAAE,aAAAA,EAAA;AACrC,YAAMC,IAAQ,EAAE,iBAAiBb,EAAI,YAAY,eAAeA,EAAI,YAAY,aAAaA,EAAI,QAAQ,WAAWA,EAAI,OAAA;AACxH,aAAI,kBAAkB,KAAKO,CAAiB,IACnC;AAAA,QACL,aAAa;AAAA,UACX,EAAE,OAAO,OAAO,MAAMjC,EAAe,UAAU,mBAAmB,UAAU,YAAY,aAAa,iBAAiBA,EAAe,UAAU,6BAA6B,iBAAiB,QAAQ,cAAc,OAAAuC,EAAA;AAAA,UACnN,EAAE,OAAO,QAAQ,MAAMvC,EAAe,UAAU,mBAAmB,UAAU,YAAY,cAAc,iBAAiBA,EAAe,UAAU,6BAA6B,iBAAiB,QAAQ,eAAe,OAAAuC,EAAA;AAAA,UACtN,EAAE,OAAO,QAAQ,MAAMvC,EAAe,UAAU,mBAAmB,UAAU,YAAY,cAAc,iBAAiBA,EAAe,UAAU,6BAA6B,iBAAiB,QAAQ,kBAAkB,OAAAuC,EAAA;AAAA,UACzN,EAAE,OAAO,SAAS,MAAMvC,EAAe,UAAU,mBAAmB,UAAU,YAAY,eAAe,iBAAiBA,EAAe,UAAU,6BAA6B,iBAAiB,QAAQ,gBAAgB,OAAAuC,EAAA;AAAA,UACzN,EAAE,OAAO,SAAS,MAAMvC,EAAe,UAAU,mBAAmB,UAAU,YAAY,eAAe,iBAAiBA,EAAe,UAAU,6BAA6B,iBAAiB,QAAQ,gBAAgB,OAAAuC,EAAA;AAAA,QAAM;AAAA,MACjO,IAGG,EAAE,aAAa,GAAC;AAAA,IACzB;AAAA,EAAA,CACD,IAGC,CAACpE,KAASM,OAAoB,cAAc,EAAE,aAAAA,GAAa,GAC/DM,KAAA,QAAAA,EAAgBtD,GAAQuE,IACxBvE,EAAO,cAAc,EAAE,aAAauD,MAAoB,UAAU;AACpE;AC1iBO,SAASwD,GAAyB;AAAA,EACvC,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAArE,IAAW;AAAA,EACX,QAAAC,IAAS;AAAA,EACT,UAAAE,IAAW;AAAA,EACX,kBAAAmE,IAAmB;AAAA,EACnB,UAAAjE,IAAW;AAAA,EACX,UAAAE,IAAW;AAAA,EACX,OAAAjF;AAAA,EACA,SAAAiJ;AACF,GAAwB;AACtB,QAAMC,IAAWnJ,EAAA,GACXoJ,IAAgBnJ,MAAUkJ,MAAa,UAAU,OAAO,YACxDE,IAAI,OAAOzE,KAAW,WAAW,GAAGA,CAAM,OAAOA;AAEvD,SACE,gBAAAuB;AAAA,IAACmD;AAAA,IAAA;AAAA,MACC,QAAQD;AAAA,MACR,UAAA1E;AAAA,MACA,OAAOyE;AAAA,MACP,UAAAL;AAAA,MACA,UAAAC;AAAA,MACA,SAAAE;AAAA,MACA,SAAS;AAAA,QACP,UAAApE;AAAA,QACA,kBAAAmE;AAAA,QACA,UAAUjE,IAAW,OAAO;AAAA,QAC5B,UAAAE;AAAA,QACA,iBAAiB;AAAA,QACjB,SAAS,EAAE,SAAS,GAAA;AAAA,QACpB,sBAAsB;AAAA,QACtB,aAAa;AAAA,QACb,SAAS;AAAA,QACT,sBAAsB;AAAA,MAAA;AAAA,IACxB;AAAA,EAAA;AAGN;ACtBC,OAAe,oBAAoB;AAAA,EAClC,UAAUqE,GAAWC,GAAe;AAClC,WAAIA,MAAU,SAAe,IAAIC,GAAA,IAC7BD,MAAU,UAAUA,MAAU,gBAAgBA,MAAU,UAAgB,IAAIE,GAAA,IAC5EF,MAAU,gBAAgBA,MAAU,eAAqB,IAAIG,GAAA,IAC1D,IAAIC,GAAA;AAAA,EACb;AACF;AAGA3H,EAAO,OAAO,YAAY,eAAe;AAAA,EACvC,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AAAA;AAAA,IAEL,EAAE,OAAO,mBAAmB,YAAY,SAAA;AAAA,IACxC,EAAE,OAAO,qBAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,UAAU,YAAY,SAAA;AAAA,IAC/B,EAAE,OAAO,gBAAgB,YAAY,SAAA;AAAA;AAAA;AAAA,IAErC,EAAE,OAAO,UAAU,YAAY,SAAA;AAAA,IAC/B,EAAE,OAAO,WAAW,YAAY,SAAA;AAAA,IAChC,EAAE,OAAO,WAAW,YAAY,SAAA;AAAA,IAChC,EAAE,OAAO,QAAQ,YAAY,SAAA;AAAA,IAC7B,EAAE,OAAO,cAAc,YAAY,SAAA;AAAA,IACnC,EAAE,OAAO,YAAY,YAAY,SAAA;AAAA,IACjC,EAAE,OAAO,YAAY,YAAY,SAAA;AAAA;AAAA,IAEjC,EAAE,OAAO,cAAc,YAAY,SAAA;AAAA,IACnC,EAAE,OAAO,cAAc,YAAY,SAAA;AAAA,IACnC,EAAE,OAAO,aAAa,YAAY,SAAA;AAAA,IAClC,EAAE,OAAO,aAAa,YAAY,SAAA;AAAA,IAClC,EAAE,OAAO,aAAa,YAAY,SAAA;AAAA,IAClC,EAAE,OAAO,aAAa,YAAY,SAAA;AAAA,IAClC,EAAE,OAAO,UAAU,YAAY,SAAA;AAAA,IAC/B,EAAE,OAAO,aAAa,YAAY,SAAA;AAAA,IAClC,EAAE,OAAO,qBAAqB,YAAY,SAAA;AAAA;AAAA,IAE1C,EAAE,OAAO,OAAO,YAAY,SAAA;AAAA,IAC5B,EAAE,OAAO,kBAAkB,YAAY,SAAA;AAAA,IACvC,EAAE,OAAO,mBAAmB,YAAY,SAAA;AAAA;AAAA,IAExC,EAAE,OAAO,mBAAmB,YAAY,SAAA;AAAA,IACxC,EAAE,OAAO,2BAA2B,YAAY,SAAA;AAAA,IAChD,EAAE,OAAO,2BAA2B,YAAY,SAAA;AAAA,IAChD,EAAE,OAAO,oBAAoB,YAAY,SAAA;AAAA,IACzC,EAAE,OAAO,kBAAkB,YAAY,SAAA;AAAA,IACvC,EAAE,OAAO,mBAAmB,YAAY,SAAA;AAAA,IACxC,EAAE,OAAO,sBAAsB,YAAY,SAAA;AAAA,IAC3C,EAAE,OAAO,oBAAoB,YAAY,SAAA;AAAA,IACzC,EAAE,OAAO,sBAAsB,YAAY,SAAA;AAAA,EAAS;AAAA,EAEtD,QAAQ;AAAA,IACN,qBAAqB;AAAA,IACrB,qBAAqB;AAAA,IACrB,kCAAkC;AAAA,IAClC,8BAA8B;AAAA,IAC9B,sCAAsC;AAAA,IACtC,+BAA+B;AAAA,IAC/B,qCAAqC;AAAA,IACrC,2BAA2B;AAAA,IAC3B,uCAAuC;AAAA,IACvC,gCAAgC;AAAA,IAChC,sCAAsC;AAAA,IACtC,iCAAiC;AAAA,IACjC,6BAA6B;AAAA,IAC7B,2BAA2B;AAAA,IAC3B,2BAA2B;AAAA,IAC3B,kCAAkC;AAAA,IAClC,8BAA8B;AAAA,IAC9B,0CAA0C;AAAA,IAC1C,wBAAwB;AAAA,IACxB,oBAAoB;AAAA,IACpB,aAAe;AAAA,EAAA;AAEnB,CAAC;AAKD4H,EAAmB,mBAAmB;AAAA,EACpC,QAAQC,EAAa;AAAA,EACrB,QAAQC,EAAW;AAAA,EACnB,sBAAsB;AAAA,EACtB,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,kBAAkBC,EAAqB;AAAA,EACvC,KAAKC,EAAQ;AACf,CAAC;AAEDJ,EAAmB,sBAAsB;AAAA,EACvC,sBAAsB;AAAA,EACtB,oBAAoB;AACtB,CAAC;AAIDA,EAAmB,kBAAkB,EAAI;AACzCK,EAAmB,kBAAkB,EAAI;AAEzCA,EAAmB,mBAAmB;AAAA,EACpC,QAAQJ,EAAa;AAAA,EACrB,QAAQC,EAAW;AAAA,EACnB,sBAAsB;AAAA,EACtB,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,kBAAkBC,EAAqB;AAAA,EACvC,KAAKC,EAAQ;AACf,CAAC;AAGDhI,EAAO,OAAO,YAAY,gBAAgB;AAAA,EACxC,MAAM;AAAA,EACN,SAAS;AAAA,EACT,OAAO;AAAA,IACL,EAAE,OAAO,mBAAoB,YAAY,SAAA;AAAA,IACzC,EAAE,OAAO,qBAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,UAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,gBAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,UAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,WAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,WAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,QAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,cAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,YAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,YAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,cAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,cAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,aAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,aAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,aAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,aAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,UAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,aAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,qBAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,OAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,kBAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,mBAAqB,YAAY,SAAA;AAAA,IAC1C,EAAE,OAAO,mBAAgC,YAAY,SAAA;AAAA,IACrD,EAAE,OAAO,2BAAgC,YAAY,SAAA;AAAA,IACrD,EAAE,OAAO,oBAAgC,YAAY,SAAA;AAAA,IACrD,EAAE,OAAO,kBAAgC,YAAY,SAAA;AAAA,IACrD,EAAE,OAAO,mBAAgC,YAAY,SAAA;AAAA,IACrD,EAAE,OAAO,oBAAgC,YAAY,SAAA;AAAA,IACrD,EAAE,OAAO,sBAAgC,YAAY,SAAA;AAAA,EAAS;AAAA,EAEhE,QAAQ;AAAA,IACN,qBAAuC;AAAA,IACvC,qBAAuC;AAAA,IACvC,kCAAuC;AAAA,IACvC,8BAAuC;AAAA,IACvC,sCAAuC;AAAA,IACvC,+BAAuC;AAAA,IACvC,qCAAuC;AAAA,IACvC,2BAAuC;AAAA,IACvC,uCAAuC;AAAA,IACvC,iCAAuC;AAAA,IACvC,uCAAuC;AAAA,IACvC,2BAAuC;AAAA,IACvC,2BAAuC;AAAA,IACvC,kCAAuC;AAAA,IACvC,8BAAuC;AAAA,IACvC,0CAA0C;AAAA,IAC1C,wBAAuC;AAAA,IACvC,oBAAuC;AAAA,IACvC,gBAAuC;AAAA,IACvC,aAAuC;AAAA,EAAA;AAE3C,CAAC;AAEDkI,GAAO,OAAO,EAAE,QAAAlI,GAAQ;AAGvB,OAAe,SAASA;AAKzBmI,GAAyBvD,EAAoB;AAC7CwD,GAA6BvB,EAAwB;AACrDwB,GAAA;AAGO,SAASC,GAAiBtK,GAAyB;AACxD,EAAAgC,EAAO,OAAO,SAAShC,MAAU,SAAS,gBAAgB,cAAc;AAC1E;"}
|
|
1
|
+
{"version":3,"file":"monaco-setup.js","sources":["../src/hooks/useAppTheme.ts","../src/services/dk-repl.ts","../src/hooks/useBreakpointGutter.ts","../src/store/debug-store.ts","../src/lib/components/input/EditorView.monaco.tsx","../src/lib/components/input/DiffEditorView.monaco.tsx","../src/monaco-setup.ts"],"sourcesContent":["/**\n * useAppTheme — returns 'dark' | 'light' and re-renders on change.\n *\n * Detects theme from (in priority order):\n * 1. VS Code webview: data-vscode-theme-kind on <body> (set by VS Code host)\n * 2. Generic: data-theme on <html> (daakia / other web apps)\n * 3. Fallback: 'dark'\n */\nimport { useState, useEffect } from 'react';\n\nfunction resolveTheme(): 'dark' | 'light' {\n const vsKind =\n document.body?.getAttribute('data-vscode-theme-kind') ||\n document.documentElement.getAttribute('data-vscode-theme-kind');\n if (vsKind) return vsKind === 'vscode-light' ? 'light' : 'dark';\n return (document.documentElement.getAttribute('data-theme') as 'dark' | 'light') || 'dark';\n}\n\nexport function useAppTheme(): 'dark' | 'light' {\n const [theme, setTheme] = useState<'dark' | 'light'>(resolveTheme);\n\n useEffect(() => {\n const update = () => setTheme(resolveTheme());\n const htmlObs = new MutationObserver(update);\n htmlObs.observe(document.documentElement, { attributes: true, attributeFilter: ['data-theme', 'data-vscode-theme-kind'] });\n const bodyObs = new MutationObserver(update);\n if (document.body) bodyObs.observe(document.body, { attributes: true, attributeFilter: ['data-vscode-theme-kind'] });\n return () => { htmlObs.disconnect(); bodyObs.disconnect(); };\n }, []);\n\n return theme;\n}\n","// Stub — dk-repl completions are daakia-specific and not used in standalone DUI.\nexport const DK_TYPE_DEFS = '';\nexport function getDkCompletions(_text: string, _monaco: unknown, _pos: unknown): unknown[] {\n return [];\n}\n","import { useRef, useEffect, useCallback, MutableRefObject } from 'react';\n\nexport interface BreakpointGutterOptions {\n breakpoints?: number[];\n disabledBreakpoints?: number[];\n conditionalBreakpointLines?: number[];\n /** Currently paused line (1-based) — shows yellow highlight */\n pausedLine?: number | null;\n onToggleBreakpoint?: (line: number) => void;\n onGlyphContextMenu?: (line: number, pos: { x: number; y: number }) => void;\n}\n\n/**\n * Encapsulates all breakpoint gutter logic for a Monaco editor:\n * - Line validation (only skips empty lines)\n * - Breakpoint dot decorations (red/disabled/conditional)\n * - Glyph margin click & context-menu handlers\n * - Hover hint (faded dot on valid, non-breakpointed lines)\n *\n * Returns `attach(editor, monaco)` to be called in onMount,\n * and handles cleanup/decoration updates via effects.\n */\nexport function useBreakpointGutter(options: BreakpointGutterOptions) {\n const {\n breakpoints,\n disabledBreakpoints,\n conditionalBreakpointLines,\n pausedLine,\n onToggleBreakpoint,\n onGlyphContextMenu,\n } = options;\n\n const editorRef = useRef<any>(null);\n const monacoRef = useRef<any>(null);\n const decorationsRef = useRef<string[]>([]);\n const pausedDecoRef = useRef<string[]>([]);\n const hoverDecoRef = useRef<string[]>([]);\n const disposablesRef = useRef<any[]>([]);\n\n const isBreakpointableLine = useCallback((lineNo: number): boolean => {\n const editor = editorRef.current;\n if (!editor) return true;\n const model = editor.getModel();\n if (!model || lineNo > model.getLineCount()) return false;\n const lineContent = model.getLineContent(lineNo).trim();\n return !!lineContent;\n }, []);\n\n // Sync breakpoint decorations when breakpoints change\n useEffect(() => {\n const editor = editorRef.current;\n const monaco = monacoRef.current;\n if (!editor || !monaco) return;\n\n const decos: any[] = [];\n\n if (breakpoints) {\n for (const line of breakpoints) {\n // Skip breakpoint glyph on the paused line — the arrow \"gulps\" it\n if (pausedLine && line === pausedLine) continue;\n\n const isDisabled = disabledBreakpoints?.includes(line);\n const isConditional = conditionalBreakpointLines?.includes(line);\n let glyphClass = 'daakia-bp-glyph';\n if (isDisabled) glyphClass = 'daakia-bp-glyph--disabled';\n else if (isConditional) glyphClass = 'daakia-bp-glyph--conditional';\n\n decos.push({\n range: new monaco.Range(line, 1, line, 1),\n options: {\n isWholeLine: true,\n className: isDisabled ? '' : 'daakia-bp-line',\n stickiness: monaco.editor.TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,\n glyphMarginClassName: glyphClass,\n glyphMarginHoverMessage: {\n value: isConditional ? 'Conditional Breakpoint' : isDisabled ? 'Disabled Breakpoint' : 'Breakpoint',\n },\n },\n });\n }\n }\n\n decorationsRef.current = editor.deltaDecorations(decorationsRef.current, decos);\n }, [breakpoints, disabledBreakpoints, conditionalBreakpointLines, pausedLine]);\n\n // Sync paused-line highlight (yellow background + arrow in glyph margin)\n useEffect(() => {\n const editor = editorRef.current;\n const monaco = monacoRef.current;\n if (!editor || !monaco) return;\n\n if (pausedLine) {\n // Use combined class when paused line is also a breakpoint line\n const isOnBreakpoint = breakpoints?.includes(pausedLine);\n const glyphClass = isOnBreakpoint\n ? 'daakia-paused-line__arrow daakia-paused-line__arrow--with-bp'\n : 'daakia-paused-line__arrow';\n\n pausedDecoRef.current = editor.deltaDecorations(pausedDecoRef.current, [{\n range: new monaco.Range(pausedLine, 1, pausedLine, 1),\n options: {\n isWholeLine: true,\n className: 'daakia-paused-line',\n glyphMarginClassName: glyphClass,\n stickiness: monaco.editor.TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,\n },\n }]);\n // Scroll to the paused line\n editor.revealLineInCenter(pausedLine);\n } else {\n pausedDecoRef.current = editor.deltaDecorations(pausedDecoRef.current, []);\n }\n }, [pausedLine, breakpoints]);\n\n // Cleanup disposables on unmount\n useEffect(() => {\n return () => {\n disposablesRef.current.forEach(d => d?.dispose?.());\n disposablesRef.current = [];\n };\n }, []);\n\n /**\n * Call this inside Monaco's onMount handler to attach all gutter interactions.\n * Returns the disposables (also tracked internally for auto-cleanup).\n */\n const attach = useCallback((editor: any, monaco: any) => {\n editorRef.current = editor;\n monacoRef.current = monaco;\n\n // Mark the entire margin container so RightClickMenu can detect gutter clicks\n const domNode = editor.getDomNode();\n if (domNode) {\n const marginContainer = domNode.querySelector('.margin');\n if (marginContainer) marginContainer.setAttribute('data-daakia-bp-gutter', '');\n }\n\n // Left-click to toggle breakpoint (right-click is handled separately for context menu)\n if (onToggleBreakpoint) {\n const d1 = editor.onMouseDown((e: any) => {\n if (e.event.leftButton && e.target.type === monaco.editor.MouseTargetType.GUTTER_GLYPH_MARGIN) {\n const line = e.target.position?.lineNumber;\n if (line && isBreakpointableLine(line)) onToggleBreakpoint(line);\n }\n });\n disposablesRef.current.push(d1);\n }\n\n // Right-click context menu — use DOM-level listener to intercept BEFORE Monaco shows its own menu\n if (onGlyphContextMenu) {\n let glyphRightClick: { line: number; x: number; y: number } | null = null;\n\n // Detect right-click on any gutter zone (glyph margin, line numbers, line decorations)\n const d2a = editor.onMouseDown((e: any) => {\n if (\n e.event.rightButton &&\n (e.target.type === monaco.editor.MouseTargetType.GUTTER_GLYPH_MARGIN ||\n e.target.type === monaco.editor.MouseTargetType.GUTTER_LINE_NUMBERS ||\n e.target.type === monaco.editor.MouseTargetType.GUTTER_LINE_DECORATIONS)\n ) {\n const line = e.target.position?.lineNumber;\n if (line && isBreakpointableLine(line)) {\n glyphRightClick = { line, x: e.event.posx, y: e.event.posy };\n }\n }\n });\n disposablesRef.current.push(d2a);\n\n // DOM-level contextmenu intercept — prevents Monaco's built-in menu on gutter area\n const domNode = editor.getDomNode();\n if (domNode) {\n const domHandler = (ev: MouseEvent) => {\n if (glyphRightClick) {\n ev.preventDefault();\n ev.stopPropagation();\n onGlyphContextMenu(glyphRightClick.line, { x: glyphRightClick.x, y: glyphRightClick.y });\n glyphRightClick = null;\n } else if ((ev.target as HTMLElement).closest('[data-daakia-bp-gutter]')) {\n // Fallback: block Monaco's default menu for any gutter right-click\n ev.preventDefault();\n ev.stopPropagation();\n }\n };\n domNode.addEventListener('contextmenu', domHandler, true); // capture phase\n disposablesRef.current.push({ dispose: () => domNode.removeEventListener('contextmenu', domHandler, true) });\n }\n }\n\n // Hover hint: faded dot on valid non-breakpointed lines\n if (onToggleBreakpoint) {\n const d3 = editor.onMouseMove((e: any) => {\n if (e.target.type === monaco.editor.MouseTargetType.GUTTER_GLYPH_MARGIN) {\n const line = e.target.position?.lineNumber;\n if (line && isBreakpointableLine(line)) {\n const model = editor.getModel();\n if (model) {\n const lineDecos = model.getLineDecorations(line);\n const hasBpDeco = lineDecos?.some((d: any) =>\n d.options?.glyphMarginClassName?.startsWith('daakia-bp-glyph') &&\n !d.options?.glyphMarginClassName?.includes('hover')\n );\n if (!hasBpDeco) {\n hoverDecoRef.current = editor.deltaDecorations(hoverDecoRef.current, [{\n range: new monaco.Range(line, 1, line, 1),\n options: {\n isWholeLine: false,\n stickiness: monaco.editor.TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,\n glyphMarginClassName: 'daakia-bp-glyph--hover',\n glyphMarginHoverMessage: { value: 'Left-click to add a breakpoint' },\n },\n }]);\n return;\n }\n }\n }\n }\n // Clear hover when not on glyph margin\n if (hoverDecoRef.current.length) {\n hoverDecoRef.current = editor.deltaDecorations(hoverDecoRef.current, []);\n }\n });\n disposablesRef.current.push(d3);\n\n const d4 = editor.onMouseLeave(() => {\n if (hoverDecoRef.current.length) {\n hoverDecoRef.current = editor.deltaDecorations(hoverDecoRef.current, []);\n }\n });\n disposablesRef.current.push(d4);\n }\n\n // Apply breakpoint decorations immediately after attach (fixes disappearing on remount)\n if (breakpoints) {\n const decos: any[] = [];\n for (const line of breakpoints) {\n const isDisabled = disabledBreakpoints?.includes(line);\n const isConditional = conditionalBreakpointLines?.includes(line);\n let glyphClass = 'daakia-bp-glyph';\n if (isDisabled) glyphClass = 'daakia-bp-glyph--disabled';\n else if (isConditional) glyphClass = 'daakia-bp-glyph--conditional';\n\n decos.push({\n range: new monaco.Range(line, 1, line, 1),\n options: {\n isWholeLine: true,\n className: isDisabled ? '' : 'daakia-bp-line',\n stickiness: monaco.editor.TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges,\n glyphMarginClassName: glyphClass,\n glyphMarginHoverMessage: {\n value: isConditional ? 'Conditional Breakpoint' : isDisabled ? 'Disabled Breakpoint' : 'Breakpoint',\n },\n },\n });\n }\n decorationsRef.current = editor.deltaDecorations(decorationsRef.current, decos);\n }\n }, [onToggleBreakpoint, onGlyphContextMenu, isBreakpointableLine, breakpoints, disabledBreakpoints, conditionalBreakpointLines]);\n\n return { attach };\n}\n","// Stub — debug store is daakia-specific.\ninterface DebugState {\n navigateLine: number | null;\n setNavigateLine: (line: number | null) => void;\n active: boolean;\n status: 'idle' | 'running' | 'paused';\n variables: { name: string; value: unknown; type: string }[];\n}\n\nconst state: DebugState = {\n navigateLine: null,\n setNavigateLine: () => {},\n active: false,\n status: 'idle',\n variables: [],\n};\n\nexport function useDebugStore<T>(selector: (s: DebugState) => T): T {\n return selector(state);\n}\nuseDebugStore.getState = () => state;\n","import Editor, { type OnMount } from '@monaco-editor/react';\nimport { useRef, useMemo, useEffect } from 'react';\nimport { useAppTheme } from '../../../hooks/useAppTheme';\nimport { getDkCompletions, DK_TYPE_DEFS } from '../../../services/dk-repl';\nimport { initGraphQLCompletionProvider } from '../../../services/graphql-completion';\nimport { useEditorBase } from '../../core/EditorBase';\nimport { EditorShell } from './EditorView.shell';\nimport type { EditorViewProps, EditorLanguage, EditorOptions, EditorContextMenuMode } from './EditorView';\n\n// ─── Debug-only imports — only loaded when debugSupported=true ─────────────────\nimport { useBreakpointGutter } from '../../../hooks/useBreakpointGutter';\nimport { useDebugVariableHover } from '../../../hooks/useDebugVariableHover';\nimport { useDebugStore } from '../../../store/debug-store';\n\n// This file is only ever reached by '@salilvnair/dui/monaco-setup' — a\n// separate, explicit opt-in subpath, never referenced (statically or via\n// lazy()) from the main package entry. That's what makes a plain top-level\n// import safe here: importing monaco-setup already requires Monaco installed.\n// See monaco-runtime.ts for why an in-place lazy()/dynamic-import approach\n// inside the always-loaded EditorView.tsx does not work.\n\nlet dkLibRegistered = false;\n\nconst EXT_MAP: Partial<Record<EditorLanguage, string>> = {\n javascript: '.js', typescript: '.ts', json: '.json', xml: '.xml',\n html: '.html', css: '.css', graphql: '.graphql', python: '.py',\n yaml: '.yaml', sql: '.sql', markdown: '.md', plaintext: '.txt', proto: '.proto',\n};\n\nfunction formatXml(xml: string): string {\n const INDENT = ' ';\n let depth = 0;\n let result = '';\n const tokens = xml.replace(/>\\s*</g, '><').split(/(?<=>)(?=<)/);\n for (const token of tokens) {\n const isClosing = /^<\\//.test(token);\n const isSelfClosing = /\\/>$/.test(token) || /^<!/.test(token) || /^<\\?/.test(token);\n if (isClosing) depth = Math.max(0, depth - 1);\n result += INDENT.repeat(depth) + token.trim() + '\\n';\n if (!isClosing && !isSelfClosing && /^<[^/!?]/.test(token)) depth++;\n }\n return result.trimEnd();\n}\n\nfunction formatYaml(yaml: string): string {\n return yaml\n .split('\\n')\n .map(line => line.trimEnd())\n .join('\\n')\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim();\n}\n\nfunction formatSql(sql: string): string {\n const CLAUSE_RE = /\\b(SELECT|DISTINCT|FROM|WHERE|INNER JOIN|LEFT JOIN|RIGHT JOIN|FULL OUTER JOIN|FULL JOIN|CROSS JOIN|JOIN|ON|AND|OR|NOT|ORDER BY|GROUP BY|HAVING|LIMIT|OFFSET|UNION ALL|UNION|INTERSECT|EXCEPT|INSERT INTO|VALUES|UPDATE|SET|DELETE FROM|CREATE TABLE|DROP TABLE|ALTER TABLE|WITH)\\b/gi;\n return sql\n .replace(/\\s+/g, ' ')\n .replace(CLAUSE_RE, '\\n$1')\n .split('\\n')\n .map(line => line.trim())\n .filter(line => line.length > 0)\n .join('\\n');\n}\n\n// ─── Simple variant — no debug hooks at all ───────────────────────────────────\n\nfunction EditorViewSimple({\n value, onChange, language = 'json', height = '200px', minHeight,\n readOnly = false, placeholder, wordWrap = true, size, fontSize,\n className = '', bordered = false, onEditorMount, contextMenuMode = 'native', contextMenuItems, editorOptions, accentColor,\n}: EditorViewProps) {\n const base = useEditorBase(size);\n const resolvedFontSize = fontSize ?? base.fontSize;\n const theme = useAppTheme();\n const editorRef = useRef<any>(null);\n const disposablesRef = useRef<any[]>([]);\n const modelPath = useMemo(\n () => `inmemory://daakia/${crypto.randomUUID()}${EXT_MAP[language] || '.txt'}`,\n [language],\n );\n const resolvedHeight = typeof height === 'number' ? `${height}px` : height;\n const containerHeight = minHeight ? `max(${resolvedHeight}, ${minHeight}px)` : resolvedHeight;\n\n useEffect(() => {\n return () => {\n disposablesRef.current.forEach(d => d?.dispose?.());\n disposablesRef.current = [];\n const editor = editorRef.current;\n if (editor) { const m = editor.getModel(); if (m) m.dispose(); }\n };\n }, []);\n\n // No manual model.setValue() sync here — the controlled `value` prop on\n // <Editor> below already keeps the model in sync on every change (that's\n // what \"controlled\" means for @monaco-editor/react, readOnly or not). A\n // redundant manual setValue() bypass used to live here; it fired in a\n // separate, later effect than the library's own internal sync, triggering\n // a second, out-of-band re-tokenization pass — which is what caused\n // readOnly editors (e.g. Daakia's response JSON viewer) to briefly render\n // monochrome and only pick up real syntax colors a moment later.\n\n const handleMount: OnMount = (editor, monacoInstance) => {\n editorRef.current = editor;\n disposablesRef.current = [];\n mountCommon(editor, monacoInstance, { language, value, placeholder, onEditorMount, contextMenuMode });\n };\n\n const resolvedTheme = theme === 'light' ? 'daakia-light' : 'daakia-dark';\n\n return (\n <EditorShell bordered={bordered} containerHeight={containerHeight} contextMenuMode={contextMenuMode} contextMenuItems={contextMenuItems} accentColor={accentColor}>\n <Editor\n height=\"100%\"\n language={language}\n path={modelPath}\n value={value}\n theme={resolvedTheme}\n onChange={v => onChange?.(v ?? '')}\n onMount={handleMount}\n options={buildOptions({ readOnly, fontSize: resolvedFontSize, wordWrap, glyphMargin: false, contextMenuMode, editorOptions, theme: resolvedTheme })}\n />\n </EditorShell>\n );\n}\n\n// ─── Debug variant — subscribes to debug store + breakpoint hooks ─────────────\n\nfunction EditorViewDebug({\n value, onChange, language = 'json', height = '200px', minHeight,\n readOnly = false, placeholder, wordWrap = true, size, fontSize,\n className = '', bordered = false,\n breakpoints, disabledBreakpoints, conditionalBreakpointLines, pausedLine,\n onToggleBreakpoint, onGlyphContextMenu, onEditorMount, contextMenuMode = 'native', contextMenuItems, editorOptions, accentColor,\n}: EditorViewProps) {\n const base = useEditorBase(size);\n const resolvedFontSize = fontSize ?? base.fontSize;\n const theme = useAppTheme();\n const editorRef = useRef<any>(null);\n const disposablesRef = useRef<any[]>([]);\n const modelPath = useMemo(\n () => `inmemory://daakia/${crypto.randomUUID()}${EXT_MAP[language] || '.txt'}`,\n [language],\n );\n const resolvedHeight = typeof height === 'number' ? `${height}px` : height;\n const containerHeight = minHeight ? `max(${resolvedHeight}, ${minHeight}px)` : resolvedHeight;\n\n // Debug hooks — always called here (React rules), never called in Simple variant\n const { attach: attachBreakpointGutter } = useBreakpointGutter({\n breakpoints, disabledBreakpoints, conditionalBreakpointLines, pausedLine,\n onToggleBreakpoint, onGlyphContextMenu,\n });\n const { attach: attachDebugHover } = useDebugVariableHover();\n const navigateLine = useDebugStore(s => s.navigateLine);\n\n useEffect(() => {\n return () => {\n disposablesRef.current.forEach(d => d?.dispose?.());\n disposablesRef.current = [];\n const editor = editorRef.current;\n if (editor) { const m = editor.getModel(); if (m) m.dispose(); }\n };\n }, []);\n\n // See EditorViewSimple above — no manual model.setValue() sync needed;\n // the controlled `value` prop on <Editor> below already handles it, and a\n // redundant bypass here caused the same delayed-tokenization symptom.\n\n useEffect(() => {\n if (!navigateLine || !editorRef.current || !breakpoints) return;\n editorRef.current.revealLineInCenter(navigateLine);\n editorRef.current.setPosition({ lineNumber: navigateLine, column: 1 });\n useDebugStore.getState().setNavigateLine(null);\n }, [navigateLine, breakpoints]);\n\n const handleMount: OnMount = (editor, monacoInstance) => {\n editorRef.current = editor;\n disposablesRef.current = [];\n // Attach debug features\n attachBreakpointGutter(editor, monacoInstance);\n attachDebugHover(editor, monacoInstance);\n mountCommon(editor, monacoInstance, { language, value, placeholder, onEditorMount, contextMenuMode });\n };\n\n const resolvedTheme = theme === 'light' ? 'daakia-light' : 'daakia-dark';\n\n return (\n <EditorShell bordered={bordered} containerHeight={containerHeight} contextMenuMode={contextMenuMode} contextMenuItems={contextMenuItems} accentColor={accentColor}>\n <Editor\n height=\"100%\"\n language={language}\n path={modelPath}\n value={value}\n theme={resolvedTheme}\n onChange={v => onChange?.(v ?? '')}\n onMount={handleMount}\n options={buildOptions({ readOnly, fontSize: resolvedFontSize, wordWrap, glyphMargin: !!onToggleBreakpoint, contextMenuMode, editorOptions, theme: resolvedTheme })}\n />\n </EditorShell>\n );\n}\n\n// ─── Public export — registered into monaco-runtime by monaco-setup.ts ──────\n\nexport function EditorViewMonacoImpl({ debugSupported = false, className = '', ...rest }: EditorViewProps) {\n if (debugSupported) return <EditorViewDebug className={className} {...rest} />;\n return <EditorViewSimple className={className} {...rest} />;\n}\n\n// ─── Shared Monaco options builder ───────────────────────────────────────────\n\nfunction buildOptions({ readOnly, fontSize, wordWrap, glyphMargin, contextMenuMode = 'native', editorOptions, theme }: {\n readOnly: boolean;\n fontSize: number;\n wordWrap: boolean;\n glyphMargin: boolean;\n contextMenuMode?: EditorContextMenuMode;\n editorOptions?: EditorOptions;\n theme: string;\n}) {\n const o = editorOptions ?? {};\n return {\n // Baked into construction options (not just the top-level <Editor theme=\"\"> prop)\n // so Monaco applies it before its first paint — @monaco-editor/react creates the\n // editor first and only calls the global setTheme() afterward as a separate step,\n // which is what caused a flash of the default white 'vs' theme on every remount\n // (tab switch, subtab switch, new-tab-then-close) before this fix.\n theme,\n // ── Consumer-overridable defaults ────────────────────────────────────────\n lineNumbers: (o.lineNumbers ?? 'on') as 'on' | 'off' | 'relative' | 'interval',\n minimap: { enabled: o.minimap ?? false },\n scrollBeyondLastLine: o.scrollBeyondLastLine ?? false,\n smoothScrolling: o.smoothScrolling ?? false,\n mouseWheelZoom: o.mouseWheelZoom ?? false,\n folding: o.folding ?? true,\n showFoldingControls: (o.showFoldingControls ?? 'mouseover') as 'always' | 'never' | 'mouseover',\n tabSize: o.tabSize ?? 2,\n formatOnPaste: o.formatOnPaste ?? true,\n formatOnType: o.formatOnType ?? true,\n autoIndent: (o.autoIndent ?? 'full') as 'none' | 'keep' | 'brackets' | 'advanced' | 'full',\n renderWhitespace: (o.renderWhitespace ?? 'selection') as 'none' | 'boundary' | 'selection' | 'trailing' | 'all',\n matchBrackets: (o.matchBrackets ?? 'always') as 'never' | 'near' | 'always',\n bracketPairColorization: { enabled: o.bracketPairColorization ?? true },\n colorDecorators: o.colorDecorators ?? true,\n linkedEditing: o.linkedEditing ?? true,\n copyWithSyntaxHighlighting: o.copyWithSyntaxHighlighting ?? true,\n quickSuggestions: o.quickSuggestions ?? true,\n suggestOnTriggerCharacters: o.suggestOnTriggerCharacters ?? true,\n acceptSuggestionOnEnter: (o.acceptSuggestionOnEnter ?? 'on') as 'on' | 'off' | 'smart',\n hover: { enabled: o.hover ?? true },\n parameterHints: { enabled: o.parameterHints ?? true },\n codeLens: o.codeLens ?? false,\n inlayHints: { enabled: (o.inlayHints ?? false) ? 'on' as const : 'off' as const },\n padding: { top: o.padding?.top ?? 8, bottom: o.padding?.bottom ?? 8 },\n ...(o.cursorStyle && { cursorStyle: o.cursorStyle as any }),\n ...(o.cursorBlinking && { cursorBlinking: o.cursorBlinking as any }),\n ...(o.lineHeight && { lineHeight: o.lineHeight }),\n ...(o.letterSpacing && { letterSpacing: o.letterSpacing }),\n ...(o.rulers && { rulers: o.rulers }),\n ...(o.lineDecorationsWidth !== undefined && { lineDecorationsWidth: o.lineDecorationsWidth }),\n ...(o.lineNumbersMinChars !== undefined && { lineNumbersMinChars: o.lineNumbersMinChars }),\n // ── Prop-level overrides (top-level EditorView props win over editorOptions) ─\n readOnly,\n fontSize,\n wordWrap: (o.wordWrap ?? (wordWrap ? 'on' : 'off')) as 'off' | 'on' | 'wordWrapColumn' | 'bounded',\n // ── DUI structural — never overridable ──────────────────────────────────\n automaticLayout: true,\n glyphMargin,\n renderLineHighlight: (o.renderLineHighlight ?? (glyphMargin ? 'line' : 'none')) as 'none' | 'gutter' | 'line' | 'all',\n fixedOverflowWidgets: true,\n contextmenu: contextMenuMode === 'native',\n overviewRulerLanes: 0,\n hideCursorInOverviewRuler: true,\n overviewRulerBorder: false,\n scrollbar: {\n vertical: o.scrollbar?.vertical ?? 'auto',\n horizontal: o.scrollbar?.horizontal ?? 'auto',\n verticalScrollbarSize: o.scrollbar?.verticalScrollbarSize ?? 6,\n horizontalScrollbarSize: o.scrollbar?.horizontalScrollbarSize ?? 6,\n },\n fontFamily: o.fontFamily ?? 'Menlo, Monaco, \"Courier New\", monospace',\n autoClosingBrackets: 'always' as const,\n autoClosingQuotes: 'always' as const,\n autoClosingDelete: 'always' as const,\n autoSurround: 'languageDefined' as const,\n guides: { bracketPairs: true, indentation: true },\n suggest: {\n showKeywords: o.suggest?.showKeywords ?? true,\n showSnippets: o.suggest?.showSnippets ?? true,\n showValues: o.suggest?.showValues ?? true,\n showProperties: o.suggest?.showProperties ?? true,\n ...(o.suggest?.showIcons !== undefined && { showIcons: o.suggest.showIcons }),\n },\n };\n}\n\n// ─── Shared mount logic (everything that isn't debug-specific) ────────────────\n\nfunction mountCommon(\n editor: any,\n monacoInstance: any,\n { language, value, placeholder, onEditorMount, contextMenuMode = 'native' }: {\n language: EditorLanguage;\n value: string;\n placeholder?: string;\n onEditorMount?: (editor: any, monaco: any) => void;\n contextMenuMode?: EditorContextMenuMode;\n },\n) {\n // Layout fixes for flex/overflow containers\n const relayout = () => editor.layout();\n relayout();\n requestAnimationFrame(relayout);\n setTimeout(relayout, 50);\n setTimeout(relayout, 200);\n const parent = editor.getContainerDomNode().parentElement;\n if (parent) {\n const ro = new ResizeObserver(relayout);\n ro.observe(parent);\n editor.onDidDispose(() => ro.disconnect());\n }\n\n editor.updateOptions({\n autoClosingBrackets: 'always', autoClosingQuotes: 'always',\n autoClosingDelete: 'always', autoSurround: 'languageDefined', autoIndent: 'full',\n });\n\n // Clipboard overrides — modern Clipboard API (webview-compatible)\n const KM = monacoInstance.KeyMod;\n const KC = monacoInstance.KeyCode;\n\n editor.addAction({\n id: 'daakia.clipboard.copy', label: 'Copy',\n keybindings: [KM.CtrlCmd | KC.KeyC],\n run: (ed: any) => {\n const sel = ed.getSelection();\n if (sel && !sel.isEmpty()) {\n navigator.clipboard.writeText(ed.getModel()?.getValueInRange(sel) || '');\n } else {\n const pos = ed.getPosition();\n if (pos) navigator.clipboard.writeText((ed.getModel()?.getLineContent(pos.lineNumber) || '') + '\\n');\n }\n },\n });\n\n editor.addAction({\n id: 'daakia.clipboard.cut', label: 'Cut',\n keybindings: [KM.CtrlCmd | KC.KeyX],\n run: (ed: any) => {\n const sel = ed.getSelection();\n if (sel && !sel.isEmpty()) {\n navigator.clipboard.writeText(ed.getModel()?.getValueInRange(sel) || '');\n ed.executeEdits('cut', [{ range: sel, text: '' }]);\n } else {\n const pos = ed.getPosition();\n if (pos) {\n const model = ed.getModel();\n if (model) {\n navigator.clipboard.writeText(model.getLineContent(pos.lineNumber) + '\\n');\n ed.executeEdits('cut', [{ range: new monacoInstance.Range(pos.lineNumber, 1, pos.lineNumber + 1, 1), text: '' }]);\n }\n }\n }\n },\n });\n\n editor.addAction({\n id: 'daakia.clipboard.paste', label: 'Paste',\n keybindings: [KM.CtrlCmd | KC.KeyV],\n run: async (ed: any) => {\n try {\n const text = await navigator.clipboard.readText();\n if (text) {\n const sel = ed.getSelection();\n if (sel) ed.executeEdits('paste', [{ range: sel, text, forceMoveMarkers: true }]);\n }\n } catch { /* clipboard permission denied */ }\n },\n });\n\n editor.addAction({\n id: 'daakia.clipboard.selectAll', label: 'Select All',\n keybindings: [KM.CtrlCmd | KC.KeyA],\n run: (ed: any) => { const m = ed.getModel(); if (m) ed.setSelection(m.getFullModelRange()); },\n });\n\n // Format Document — Shift+Alt+F\n editor.addAction({\n id: 'daakia.format.document', label: 'Format Document',\n keybindings: [KM.Shift | KM.Alt | KC.KeyF],\n contextMenuGroupId: 'modification', contextMenuOrder: 1.5,\n run: async (ed: any) => {\n const model = ed.getModel();\n if (!model) return;\n const langId = model.getLanguageId();\n if (langId === 'xml' || langId === 'html') {\n try {\n const raw = model.getValue();\n const formatted = formatXml(raw);\n if (formatted !== raw) ed.executeEdits('daakia.format', [{ range: model.getFullModelRange(), text: formatted }]);\n } catch { /* malformed XML */ }\n } else if (langId === 'yaml') {\n try {\n const raw = model.getValue();\n const formatted = formatYaml(raw);\n if (formatted !== raw) ed.executeEdits('daakia.format', [{ range: model.getFullModelRange(), text: formatted }]);\n } catch { /* malformed YAML */ }\n } else if (langId === 'sql') {\n try {\n const raw = model.getValue();\n const formatted = formatSql(raw);\n if (formatted !== raw) ed.executeEdits('daakia.format', [{ range: model.getFullModelRange(), text: formatted }]);\n } catch { /* malformed SQL */ }\n } else {\n await ed.getAction('editor.action.formatDocument')?.run();\n }\n },\n });\n\n // Find & Replace — Ctrl+Shift+H\n editor.addAction({\n id: 'daakia.findAndReplace', label: 'Find and Replace',\n keybindings: [KM.CtrlCmd | KM.Shift | KC.KeyH],\n contextMenuGroupId: 'navigation', contextMenuOrder: 1.5,\n run: () => editor.getAction('editor.action.startFindReplaceAction')?.run(),\n });\n\n // Auto-closing config per language\n const model = editor.getModel();\n if (model) {\n const langId = model.getLanguageId();\n if (langId === 'xml' || langId === 'html') {\n monacoInstance.languages.setLanguageConfiguration(langId, {\n autoClosingPairs: [\n { open: '{', close: '}' }, { open: '[', close: ']' }, { open: '(', close: ')' },\n { open: '\"', close: '\"', notIn: ['string'] },\n { open: \"'\", close: \"'\", notIn: ['string', 'comment'] },\n { open: '<', close: '>', notIn: ['string'] },\n ],\n brackets: [['{', '}'], ['[', ']'], ['(', ')'], ['<', '>']],\n surroundingPairs: [\n { open: '{', close: '}' }, { open: '[', close: ']' }, { open: '(', close: ')' },\n { open: '\"', close: '\"' }, { open: \"'\", close: \"'\" }, { open: '<', close: '>' },\n ],\n onEnterRules: [\n {\n beforeText: /<([_:\\w][_:\\w\\-.\\d]*)([^/>]*(?!\\/)>)\\s*$/i,\n afterText: /^<\\/([_:\\w][_:\\w\\-.\\d]*)\\s*>$/i,\n action: { indentAction: monacoInstance.languages.IndentAction.IndentOutdent },\n },\n {\n beforeText: /<([_:\\w][_:\\w\\-.\\d]*)([^/>]*(?!\\/)>)\\s*$/i,\n action: { indentAction: monacoInstance.languages.IndentAction.Indent },\n },\n ],\n wordPattern: /(-?\\d*\\.\\d\\w*)|([^\\`\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\=\\+\\[\\{\\]\\}\\\\\\|\\;\\:\\'\\\"\\,\\.\\<\\>\\/\\?\\s]+)/g,\n });\n monacoInstance.languages.registerCompletionItemProvider(langId, {\n triggerCharacters: ['/'],\n provideCompletionItems: (mdl: any, position: any) => {\n const textUntilPosition = mdl.getValueInRange({\n startLineNumber: 1, startColumn: 1,\n endLineNumber: position.lineNumber, endColumn: position.column,\n });\n const match = textUntilPosition.match(/<\\/\\s*$/);\n if (match) {\n const openTags: string[] = [];\n const tagRegex = /<\\/?([_:\\w][_:\\w\\-.\\d]*)[^>]*\\/?>/g;\n let m;\n while ((m = tagRegex.exec(textUntilPosition.slice(0, -2))) !== null) {\n if (m[0].startsWith('</')) openTags.pop();\n else if (!m[0].endsWith('/>')) openTags.push(m[1]);\n }\n const lastOpen = openTags[openTags.length - 1];\n if (lastOpen) {\n return {\n suggestions: [{\n label: `/${lastOpen}>`,\n kind: monacoInstance.languages.CompletionItemKind.Keyword,\n insertText: `${lastOpen}>`,\n range: {\n startLineNumber: position.lineNumber, startColumn: position.column,\n endLineNumber: position.lineNumber, endColumn: position.column,\n },\n }],\n };\n }\n }\n return { suggestions: [] };\n },\n });\n } else {\n monacoInstance.languages.setLanguageConfiguration(langId, {\n autoClosingPairs: [\n { open: '{', close: '}' }, { open: '[', close: ']' }, { open: '(', close: ')' },\n { open: '\"', close: '\"', notIn: ['string'] },\n { open: \"'\", close: \"'\", notIn: ['string', 'comment'] },\n ],\n brackets: [['{', '}'], ['[', ']'], ['(', ')']],\n surroundingPairs: [\n { open: '{', close: '}' }, { open: '[', close: ']' }, { open: '(', close: ')' },\n { open: '\"', close: '\"' }, { open: \"'\", close: \"'\" },\n ],\n });\n }\n }\n\n // GraphQL tokenizer + completion\n const langs = monacoInstance.languages.getLanguages();\n if (!langs.some((l: any) => l.id === 'graphql')) {\n monacoInstance.languages.register({ id: 'graphql' });\n monacoInstance.languages.setMonarchTokensProvider('graphql', {\n keywords: ['type', 'input', 'enum', 'union', 'interface', 'scalar', 'schema', 'query', 'mutation', 'subscription', 'fragment', 'on', 'extend', 'implements', 'directive', 'repeatable'],\n typeKeywords: ['String', 'Int', 'Float', 'Boolean', 'ID'],\n operators: ['!', '=', '|', '&', '...'],\n symbols: /[=!|&]+/,\n tokenizer: {\n root: [\n [/#.*$/, 'comment'], [/\"([^\"\\\\]|\\\\.)*\"/, 'string'], [/\"\"\"[\\s\\S]*?\"\"\"/, 'string'],\n [/\\b(type|input|enum|union|interface|scalar|schema|extend|implements|directive|repeatable)\\b/, 'keyword'],\n [/\\b(query|mutation|subscription|fragment|on)\\b/, 'keyword.control'],\n [/\\b(String|Int|Float|Boolean|ID)\\b/, 'type.identifier'],\n [/\\b[A-Z][a-zA-Z0-9_]*\\b/, 'type.identifier'],\n [/\\b[a-z_][a-zA-Z0-9_]*(?=\\s*[:(])/, 'variable'],\n [/\\b[a-z_][a-zA-Z0-9_]*\\b/, 'identifier'],\n [/[{}()\\[\\]]/, '@brackets'], [/[!:=|&]/, 'operator'],\n [/\\$[a-zA-Z_]\\w*/, 'variable'], [/@[a-zA-Z_]\\w*/, 'annotation'],\n ],\n },\n } as any);\n }\n if (language === 'graphql') initGraphQLCompletionProvider(monacoInstance);\n\n // dk + console intellisense — JavaScript editors only\n if (language === 'javascript') {\n if (!dkLibRegistered) {\n monacoInstance.languages.typescript.javascriptDefaults.addExtraLib(DK_TYPE_DEFS, 'dk-globals.d.ts');\n dkLibRegistered = true;\n }\n monacoInstance.languages.registerCompletionItemProvider('javascript', {\n triggerCharacters: ['.'],\n provideCompletionItems: (mdl: any, pos: any) => {\n const textUntilPosition = mdl.getValueInRange({\n startLineNumber: pos.lineNumber, startColumn: 1,\n endLineNumber: pos.lineNumber, endColumn: pos.column,\n });\n const suggestions = getDkCompletions(textUntilPosition, monacoInstance, pos);\n if (suggestions.length > 0) return { suggestions };\n const range = { startLineNumber: pos.lineNumber, endLineNumber: pos.lineNumber, startColumn: pos.column, endColumn: pos.column };\n if (/\\bconsole\\.\\s*$/.test(textUntilPosition)) {\n return {\n suggestions: [\n { label: 'log', kind: monacoInstance.languages.CompletionItemKind.Function, insertText: 'log(${1})', insertTextRules: monacoInstance.languages.CompletionItemInsertTextRule.InsertAsSnippet, detail: 'Log output', range },\n { label: 'info', kind: monacoInstance.languages.CompletionItemKind.Function, insertText: 'info(${1})', insertTextRules: monacoInstance.languages.CompletionItemInsertTextRule.InsertAsSnippet, detail: 'Info output', range },\n { label: 'warn', kind: monacoInstance.languages.CompletionItemKind.Function, insertText: 'warn(${1})', insertTextRules: monacoInstance.languages.CompletionItemInsertTextRule.InsertAsSnippet, detail: 'Warning output', range },\n { label: 'error', kind: monacoInstance.languages.CompletionItemKind.Function, insertText: 'error(${1})', insertTextRules: monacoInstance.languages.CompletionItemInsertTextRule.InsertAsSnippet, detail: 'Error output', range },\n { label: 'debug', kind: monacoInstance.languages.CompletionItemKind.Function, insertText: 'debug(${1})', insertTextRules: monacoInstance.languages.CompletionItemInsertTextRule.InsertAsSnippet, detail: 'Debug output', range },\n ],\n };\n }\n return { suggestions: [] };\n },\n });\n }\n\n if (!value && placeholder) editor.updateOptions({ placeholder });\n onEditorMount?.(editor, monacoInstance);\n editor.updateOptions({ contextmenu: contextMenuMode === 'native' });\n}\n","import { DiffEditor, type DiffOnMount } from '@monaco-editor/react';\nimport { useAppTheme } from '../../../hooks/useAppTheme';\nimport type { DiffEditorViewProps } from './DiffEditorView';\n\n// This file is only ever reached by '@salilvnair/dui/monaco-setup' — see\n// EditorView.monaco.tsx for why that makes a plain top-level import safe.\n\nexport function DiffEditorViewMonacoImpl({\n original,\n modified,\n language = 'sql',\n height = 300,\n readOnly = true,\n renderSideBySide = true,\n wordWrap = false,\n fontSize = 12,\n theme,\n onMount,\n}: DiffEditorViewProps) {\n const appTheme = useAppTheme();\n const resolvedTheme = theme ?? (appTheme === 'light' ? 'vs' : 'vs-dark');\n const h = typeof height === 'number' ? `${height}px` : height;\n\n return (\n <DiffEditor\n height={h}\n language={language}\n theme={resolvedTheme}\n original={original}\n modified={modified}\n onMount={onMount as DiffOnMount | undefined}\n options={{\n readOnly,\n renderSideBySide,\n // Monaco silently drops to inline/unified rendering below its own\n // width threshold regardless of renderSideBySide — this diff editor\n // is often mounted inside narrow panels (e.g. Merkle's expanded\n // table row), so pin side-by-side explicitly instead of letting it\n // auto-collapse.\n useInlineViewWhenSpaceIsLimited: false,\n wordWrap: wordWrap ? 'on' : 'off',\n fontSize,\n automaticLayout: true,\n minimap: { enabled: false },\n scrollBeyondLastLine: false,\n lineNumbers: 'on',\n folding: true,\n ignoreTrimWhitespace: false,\n }}\n />\n );\n}\n","/**\n * Self-host Monaco Editor — no CDN required.\n * This configures workers inline so the webview CSP doesn't need external access.\n * Also defines a custom \"vscode-dark+\" theme to match real VS Code colors.\n */\nimport { loader } from '@monaco-editor/react';\nimport * as monaco from 'monaco-editor';\nimport { markMonacoReady, registerMonacoEditorImpl, registerMonacoDiffEditorImpl } from './lib/monaco-runtime';\nimport { EditorViewMonacoImpl } from './lib/components/input/EditorView.monaco';\nimport { DiffEditorViewMonacoImpl } from './lib/components/input/DiffEditorView.monaco';\nimport editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker&inline';\nimport jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker&inline';\nimport htmlWorker from 'monaco-editor/esm/vs/language/html/html.worker?worker&inline';\nimport tsWorker from 'monaco-editor/esm/vs/language/typescript/ts.worker?worker&inline';\nimport {\n javascriptDefaults,\n typescriptDefaults,\n ScriptTarget,\n ModuleKind,\n ModuleResolutionKind,\n JsxEmit,\n} from 'monaco-editor/esm/vs/language/typescript/monaco.contribution';\n\n(window as any).MonacoEnvironment = {\n getWorker(_: string, label: string) {\n if (label === 'json') return new jsonWorker();\n if (label === 'html' || label === 'handlebars' || label === 'razor') return new htmlWorker();\n if (label === 'typescript' || label === 'javascript') return new tsWorker();\n return new editorWorker();\n },\n};\n\n// Define VS Code \"Dark+\" matching theme\nmonaco.editor.defineTheme('daakia-dark', {\n base: 'vs-dark',\n inherit: true,\n rules: [\n // JSON\n { token: 'string.key.json', foreground: '9CDCFE' },\n { token: 'string.value.json', foreground: 'CE9178' },\n { token: 'number', foreground: 'B5CEA8' },\n { token: 'keyword.json', foreground: '569CD6' }, // true/false/null\n // General\n { token: 'string', foreground: 'CE9178' },\n { token: 'keyword', foreground: '569CD6' },\n { token: 'comment', foreground: '6A9955' },\n { token: 'type', foreground: '4EC9B0' },\n { token: 'identifier', foreground: '9CDCFE' },\n { token: 'variable', foreground: '9CDCFE' },\n { token: 'constant', foreground: '4FC1FF' },\n // JS/TS\n { token: 'keyword.js', foreground: 'C586C0' },\n { token: 'keyword.ts', foreground: 'C586C0' },\n { token: 'string.js', foreground: 'CE9178' },\n { token: 'string.ts', foreground: 'CE9178' },\n { token: 'number.js', foreground: 'B5CEA8' },\n { token: 'number.ts', foreground: 'B5CEA8' },\n { token: 'regexp', foreground: 'D16969' },\n { token: 'delimiter', foreground: 'D4D4D4' },\n { token: 'delimiter.bracket', foreground: 'FFD700' },\n // XML/HTML\n { token: 'tag', foreground: '569CD6' },\n { token: 'attribute.name', foreground: '9CDCFE' },\n { token: 'attribute.value', foreground: 'CE9178' },\n // GraphQL\n { token: 'keyword.graphql', foreground: 'C586C0' },\n { token: 'keyword.control.graphql', foreground: 'C586C0' },\n { token: 'type.identifier.graphql', foreground: 'E5C07B' },\n { token: 'variable.graphql', foreground: '9CDCFE' },\n { token: 'string.graphql', foreground: 'CE9178' },\n { token: 'comment.graphql', foreground: '6A9955' },\n { token: 'annotation.graphql', foreground: 'DCDCAA' },\n { token: 'operator.graphql', foreground: 'D4D4D4' },\n { token: 'identifier.graphql', foreground: 'D4D4D4' },\n ],\n colors: {\n 'editor.background': '#1e1e1e',\n 'editor.foreground': '#D4D4D4',\n 'editor.lineHighlightBackground': '#2a2a2a',\n 'editor.selectionBackground': '#264f78',\n 'editor.inactiveSelectionBackground': '#3a3d41',\n 'editorLineNumber.foreground': '#858585',\n 'editorLineNumber.activeForeground': '#C6C6C6',\n 'editorCursor.foreground': '#AEAFAD',\n 'editor.selectionHighlightBackground': '#ADD6FF26',\n 'editorIndentGuide.background': '#404040',\n 'editorIndentGuide.activeBackground': '#707070',\n 'editorBracketMatch.background': '#0064001a',\n 'editorBracketMatch.border': '#888888',\n 'editorGutter.background': '#1e1e1e',\n 'editorWidget.background': '#252526',\n 'editorSuggestWidget.background': '#252526',\n 'editorSuggestWidget.border': '#454545',\n 'editorSuggestWidget.selectedBackground': '#04395e',\n 'list.hoverBackground': '#2a2d2e',\n 'input.background': '#3c3c3c',\n 'focusBorder': '#6366f1',\n },\n});\n\n// Configure TypeScript/JavaScript language service for full IntelliSense\n// allowNonTsExtensions is critical — without it, in-memory models (no .js/.ts extension)\n// won't get definition/reference/rename support from the TypeScript worker.\njavascriptDefaults.setCompilerOptions({\n target: ScriptTarget.ESNext,\n module: ModuleKind.ESNext,\n allowNonTsExtensions: true,\n allowJs: true,\n checkJs: true,\n strict: false,\n noEmit: true,\n esModuleInterop: true,\n moduleResolution: ModuleResolutionKind.NodeJs,\n jsx: JsxEmit.React,\n});\n\njavascriptDefaults.setDiagnosticsOptions({\n noSemanticValidation: false,\n noSyntaxValidation: false,\n});\n\n// Ensure all models are immediately synced to the TypeScript worker\n// (required for Go to Definition, Peek, etc. to work)\njavascriptDefaults.setEagerModelSync(true);\ntypescriptDefaults.setEagerModelSync(true);\n\ntypescriptDefaults.setCompilerOptions({\n target: ScriptTarget.ESNext,\n module: ModuleKind.ESNext,\n allowNonTsExtensions: true,\n allowJs: true,\n strict: false,\n noEmit: true,\n esModuleInterop: true,\n moduleResolution: ModuleResolutionKind.NodeJs,\n jsx: JsxEmit.React,\n});\n\n// Define VS Code \"Light+\" matching theme\nmonaco.editor.defineTheme('daakia-light', {\n base: 'vs',\n inherit: true,\n rules: [\n { token: 'string.key.json', foreground: '0451a5' },\n { token: 'string.value.json', foreground: 'a31515' },\n { token: 'number', foreground: '09885a' },\n { token: 'keyword.json', foreground: '0000ff' },\n { token: 'string', foreground: 'a31515' },\n { token: 'keyword', foreground: '0000ff' },\n { token: 'comment', foreground: '008000' },\n { token: 'type', foreground: '267f99' },\n { token: 'identifier', foreground: '001080' },\n { token: 'variable', foreground: '001080' },\n { token: 'constant', foreground: '0070c1' },\n { token: 'keyword.js', foreground: 'af00db' },\n { token: 'keyword.ts', foreground: 'af00db' },\n { token: 'string.js', foreground: 'a31515' },\n { token: 'string.ts', foreground: 'a31515' },\n { token: 'number.js', foreground: '09885a' },\n { token: 'number.ts', foreground: '09885a' },\n { token: 'regexp', foreground: 'c41a16' },\n { token: 'delimiter', foreground: '000000' },\n { token: 'delimiter.bracket', foreground: '000000' },\n { token: 'tag', foreground: '800000' },\n { token: 'attribute.name', foreground: 'ff0000' },\n { token: 'attribute.value', foreground: '0451a5' },\n { token: 'keyword.graphql', foreground: 'af00db' },\n { token: 'type.identifier.graphql', foreground: '267f99' },\n { token: 'variable.graphql', foreground: '001080' },\n { token: 'string.graphql', foreground: 'a31515' },\n { token: 'comment.graphql', foreground: '008000' },\n { token: 'operator.graphql', foreground: '000000' },\n { token: 'identifier.graphql', foreground: '000000' },\n ],\n colors: {\n 'editor.background': '#ffffff',\n 'editor.foreground': '#000000',\n 'editor.lineHighlightBackground': '#f5f5f5',\n 'editor.selectionBackground': '#add6ff',\n 'editor.inactiveSelectionBackground': '#e5ebf1',\n 'editorLineNumber.foreground': '#237893',\n 'editorLineNumber.activeForeground': '#0b216f',\n 'editorCursor.foreground': '#000000',\n 'editor.selectionHighlightBackground': '#add6ff4d',\n 'editorIndentGuide.background1': '#d3d3d3',\n 'editorIndentGuide.activeBackground1': '#939393',\n 'editorGutter.background': '#ffffff',\n 'editorWidget.background': '#f3f3f3',\n 'editorSuggestWidget.background': '#f3f3f3',\n 'editorSuggestWidget.border': '#c8c8c8',\n 'editorSuggestWidget.selectedBackground': '#0060c0',\n 'list.hoverBackground': '#f0f0f0',\n 'input.background': '#ffffff',\n 'input.border': '#d1d5db',\n 'focusBorder': '#6366f1',\n },\n});\n\nloader.config({ monaco });\n\n// Expose monaco globally for context menu access to editor instances\n(window as any).monaco = monaco;\n\n// Register the real Monaco-backed implementations, then flip the shared\n// readiness gate — EditorView/DiffEditorView now render these instead of\n// their lightweight fallback.\nregisterMonacoEditorImpl(EditorViewMonacoImpl);\nregisterMonacoDiffEditorImpl(DiffEditorViewMonacoImpl);\nmarkMonacoReady();\n\n/** Call this whenever the app theme changes to re-theme all open Monaco editors */\nexport function applyMonacoTheme(theme: 'dark' | 'light') {\n monaco.editor.setTheme(theme === 'dark' ? 'daakia-dark' : 'daakia-light');\n}\n\nexport { monaco };\n"],"names":["resolveTheme","vsKind","_a","useAppTheme","theme","setTheme","useState","useEffect","update","htmlObs","bodyObs","DK_TYPE_DEFS","getDkCompletions","_text","_monaco","_pos","useBreakpointGutter","options","breakpoints","disabledBreakpoints","conditionalBreakpointLines","pausedLine","onToggleBreakpoint","onGlyphContextMenu","editorRef","useRef","monacoRef","decorationsRef","pausedDecoRef","hoverDecoRef","disposablesRef","isBreakpointableLine","useCallback","lineNo","editor","model","monaco","decos","line","isDisabled","isConditional","glyphClass","d","domNode","marginContainer","d1","e","glyphRightClick","d2a","domHandler","ev","d3","lineDecos","_b","_d","_c","d4","state","useDebugStore","selector","dkLibRegistered","EXT_MAP","formatXml","xml","depth","result","tokens","token","isClosing","isSelfClosing","formatYaml","yaml","formatSql","sql","CLAUSE_RE","EditorViewSimple","value","onChange","language","height","minHeight","readOnly","placeholder","wordWrap","size","fontSize","className","bordered","onEditorMount","contextMenuMode","contextMenuItems","editorOptions","accentColor","base","useEditorBase","resolvedFontSize","modelPath","useMemo","resolvedHeight","containerHeight","m","handleMount","monacoInstance","mountCommon","resolvedTheme","EditorShell","jsx","Editor","v","buildOptions","EditorViewDebug","attachBreakpointGutter","navigateLine","s","EditorViewMonacoImpl","debugSupported","rest","glyphMargin","o","_e","_f","_g","_h","_i","_j","_k","relayout","parent","ro","KM","KC","ed","sel","pos","text","langId","raw","formatted","mdl","position","textUntilPosition","openTags","tagRegex","lastOpen","l","suggestions","range","DiffEditorViewMonacoImpl","original","modified","renderSideBySide","onMount","appTheme","h","DiffEditor","_","label","jsonWorker","htmlWorker","tsWorker","editorWorker","javascriptDefaults","ScriptTarget","ModuleKind","ModuleResolutionKind","JsxEmit","typescriptDefaults","loader","registerMonacoEditorImpl","registerMonacoDiffEditorImpl","markMonacoReady","applyMonacoTheme"],"mappings":"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"}
|