@asymmetric-effort/specifyjs 0.2.97 → 0.2.100
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/dist/specifyjs-build.cjs.js +160 -1
- package/dist/specifyjs-build.cjs.js.map +7 -1
- package/dist/specifyjs-build.d.ts +1 -110
- package/dist/specifyjs-build.esm.js +160 -1
- package/dist/specifyjs-build.esm.js.map +7 -1
- package/dist/specifyjs-client.cjs.js +2 -1
- package/dist/specifyjs-client.cjs.js.map +7 -1
- package/dist/specifyjs-client.d.ts +1 -159
- package/dist/specifyjs-client.esm.js +2 -1
- package/dist/specifyjs-client.esm.js.map +7 -1
- package/dist/specifyjs-components.cjs.js +8 -1
- package/dist/specifyjs-components.cjs.js.map +7 -1
- package/dist/specifyjs-components.d.ts +1 -3334
- package/dist/specifyjs-components.esm.js +8 -1
- package/dist/specifyjs-components.esm.js.map +7 -1
- package/dist/specifyjs-dom.cjs.js +2 -1
- package/dist/specifyjs-dom.cjs.js.map +7 -1
- package/dist/specifyjs-dom.d.ts +1 -107
- package/dist/specifyjs-dom.esm.js +2 -1
- package/dist/specifyjs-dom.esm.js.map +7 -1
- package/dist/specifyjs-jsx-dev-runtime.cjs.js +2 -1
- package/dist/specifyjs-jsx-dev-runtime.cjs.js.map +7 -1
- package/dist/specifyjs-jsx-dev-runtime.esm.js +2 -1
- package/dist/specifyjs-jsx-dev-runtime.esm.js.map +7 -1
- package/dist/specifyjs-jsx-runtime.cjs.js +2 -1
- package/dist/specifyjs-jsx-runtime.cjs.js.map +7 -1
- package/dist/specifyjs-jsx-runtime.esm.js +2 -1
- package/dist/specifyjs-jsx-runtime.esm.js.map +7 -1
- package/dist/specifyjs-server.cjs.js +2 -1
- package/dist/specifyjs-server.cjs.js.map +7 -1
- package/dist/specifyjs-server.d.ts +1 -136
- package/dist/specifyjs-server.esm.js +2 -1
- package/dist/specifyjs-server.esm.js.map +7 -1
- package/dist/specifyjs-telemetry.cjs.js +2 -1
- package/dist/specifyjs-telemetry.cjs.js.map +7 -1
- package/dist/specifyjs-telemetry.d.ts +1 -165
- package/dist/specifyjs-telemetry.esm.js +2 -1
- package/dist/specifyjs-telemetry.esm.js.map +7 -1
- package/dist/specifyjs.cjs.js +2 -1
- package/dist/specifyjs.cjs.js.map +7 -1
- package/dist/specifyjs.d.ts +1 -581
- package/dist/specifyjs.esm.js +2 -1
- package/dist/specifyjs.esm.js.map +7 -1
- package/dist/types/build/index.d.ts +5 -0
- package/dist/types/build/index.d.ts.map +1 -0
- package/dist/types/build/noscript-plugin.d.ts +63 -0
- package/dist/types/build/noscript-plugin.d.ts.map +1 -0
- package/dist/types/build/seo-plugin.d.ts +43 -0
- package/dist/types/build/seo-plugin.d.ts.map +1 -0
- package/dist/types/client/graphql.d.ts +64 -0
- package/dist/types/client/graphql.d.ts.map +1 -0
- package/dist/types/client/index.d.ts +4 -0
- package/dist/types/client/index.d.ts.map +1 -0
- package/dist/types/client/protobuf.d.ts +40 -0
- package/dist/types/client/protobuf.d.ts.map +1 -0
- package/dist/types/client/rest.d.ts +61 -0
- package/dist/types/client/rest.d.ts.map +1 -0
- package/dist/types/components/ad/adsense/src/AdSense.d.ts +19 -0
- package/dist/types/components/ad/adsense/src/index.d.ts +2 -0
- package/dist/types/components/analytics/google-analytics/src/GoogleAnalytics.d.ts +13 -0
- package/dist/types/components/analytics/google-analytics/src/index.d.ts +2 -0
- package/dist/types/components/component.d.ts +39 -0
- package/dist/types/components/component.d.ts.map +1 -0
- package/dist/types/components/data/analog-clock/src/AnalogClock.d.ts +17 -0
- package/dist/types/components/data/analog-clock/src/index.d.ts +2 -0
- package/dist/types/components/data/avatar/src/Avatar.d.ts +19 -0
- package/dist/types/components/data/avatar/src/index.d.ts +2 -0
- package/dist/types/components/data/badge/src/Badge.d.ts +17 -0
- package/dist/types/components/data/badge/src/index.d.ts +2 -0
- package/dist/types/components/data/data-grid/src/DataGrid.d.ts +47 -0
- package/dist/types/components/data/data-grid/src/index.d.ts +2 -0
- package/dist/types/components/data/digital-clock/src/DigitalClock.d.ts +15 -0
- package/dist/types/components/data/digital-clock/src/index.d.ts +2 -0
- package/dist/types/components/data/list-view/src/ListView.d.ts +23 -0
- package/dist/types/components/data/list-view/src/index.d.ts +2 -0
- package/dist/types/components/data/tag/src/Tag.d.ts +21 -0
- package/dist/types/components/data/tag/src/index.d.ts +2 -0
- package/dist/types/components/data/virtual-scroll/src/VirtualScroll.d.ts +13 -0
- package/dist/types/components/data/virtual-scroll/src/index.d.ts +2 -0
- package/dist/types/components/error-boundary.d.ts +23 -0
- package/dist/types/components/error-boundary.d.ts.map +1 -0
- package/dist/types/components/errors/_shared/src/HttpErrorPage.d.ts +15 -0
- package/dist/types/components/errors/_shared/src/index.d.ts +2 -0
- package/dist/types/components/errors/http-400/src/Http400.d.ts +9 -0
- package/dist/types/components/errors/http-400/src/index.d.ts +2 -0
- package/dist/types/components/errors/http-401/src/Http401.d.ts +9 -0
- package/dist/types/components/errors/http-401/src/index.d.ts +2 -0
- package/dist/types/components/errors/http-403/src/Http403.d.ts +9 -0
- package/dist/types/components/errors/http-403/src/index.d.ts +2 -0
- package/dist/types/components/errors/http-404/src/Http404.d.ts +9 -0
- package/dist/types/components/errors/http-404/src/index.d.ts +2 -0
- package/dist/types/components/errors/http-405/src/Http405.d.ts +9 -0
- package/dist/types/components/errors/http-405/src/index.d.ts +2 -0
- package/dist/types/components/errors/http-408/src/Http408.d.ts +9 -0
- package/dist/types/components/errors/http-408/src/index.d.ts +2 -0
- package/dist/types/components/errors/http-429/src/Http429.d.ts +9 -0
- package/dist/types/components/errors/http-429/src/index.d.ts +2 -0
- package/dist/types/components/errors/http-500/src/Http500.d.ts +9 -0
- package/dist/types/components/errors/http-500/src/index.d.ts +2 -0
- package/dist/types/components/errors/http-502/src/Http502.d.ts +9 -0
- package/dist/types/components/errors/http-502/src/index.d.ts +2 -0
- package/dist/types/components/errors/http-503/src/Http503.d.ts +9 -0
- package/dist/types/components/errors/http-503/src/index.d.ts +2 -0
- package/dist/types/components/errors/http-504/src/Http504.d.ts +9 -0
- package/dist/types/components/errors/http-504/src/index.d.ts +2 -0
- package/dist/types/components/feedback/alert/src/Alert.d.ts +25 -0
- package/dist/types/components/feedback/alert/src/index.d.ts +2 -0
- package/dist/types/components/feedback/empty-state/src/EmptyState.d.ts +17 -0
- package/dist/types/components/feedback/empty-state/src/index.d.ts +2 -0
- package/dist/types/components/feedback/progress-bar/src/ProgressBar.d.ts +23 -0
- package/dist/types/components/feedback/progress-bar/src/index.d.ts +2 -0
- package/dist/types/components/feedback/skeleton/src/Skeleton.d.ts +15 -0
- package/dist/types/components/feedback/skeleton/src/index.d.ts +2 -0
- package/dist/types/components/feedback/spinner/src/Spinner.d.ts +13 -0
- package/dist/types/components/feedback/spinner/src/index.d.ts +2 -0
- package/dist/types/components/form/button/src/Button.d.ts +25 -0
- package/dist/types/components/form/button/src/index.d.ts +2 -0
- package/dist/types/components/form/checkbox/src/Checkbox.d.ts +19 -0
- package/dist/types/components/form/checkbox/src/index.d.ts +2 -0
- package/dist/types/components/form/color-picker/src/ColorPicker.d.ts +19 -0
- package/dist/types/components/form/color-picker/src/index.d.ts +2 -0
- package/dist/types/components/form/color-wheel/src/ColorWheel.d.ts +17 -0
- package/dist/types/components/form/color-wheel/src/index.d.ts +2 -0
- package/dist/types/components/form/datepicker/src/DatePicker.d.ts +23 -0
- package/dist/types/components/form/datepicker/src/index.d.ts +2 -0
- package/dist/types/components/form/file-upload/src/FileUpload.d.ts +19 -0
- package/dist/types/components/form/file-upload/src/index.d.ts +2 -0
- package/dist/types/components/form/multiline/src/MultilineField.d.ts +41 -0
- package/dist/types/components/form/multiline/src/index.d.ts +2 -0
- package/dist/types/components/form/number-spinner/src/NumberSpinner.d.ts +25 -0
- package/dist/types/components/form/number-spinner/src/index.d.ts +2 -0
- package/dist/types/components/form/radio/src/RadioGroup.d.ts +26 -0
- package/dist/types/components/form/radio/src/index.d.ts +2 -0
- package/dist/types/components/form/select/src/Select.d.ts +33 -0
- package/dist/types/components/form/select/src/index.d.ts +2 -0
- package/dist/types/components/form/slider/src/Slider.d.ts +33 -0
- package/dist/types/components/form/slider/src/index.d.ts +2 -0
- package/dist/types/components/form/texteditor/src/TextEditor.d.ts +46 -0
- package/dist/types/components/form/texteditor/src/index.d.ts +2 -0
- package/dist/types/components/form/textfield/src/TextField.d.ts +48 -0
- package/dist/types/components/form/textfield/src/index.d.ts +2 -0
- package/dist/types/components/form/timepicker/src/TimePicker.d.ts +29 -0
- package/dist/types/components/form/timepicker/src/index.d.ts +2 -0
- package/dist/types/components/form/toggle/src/Toggle.d.ts +19 -0
- package/dist/types/components/form/toggle/src/index.d.ts +2 -0
- package/dist/types/components/form/wrapper/src/FormFieldWrapper.d.ts +67 -0
- package/dist/types/components/form/wrapper/src/index.d.ts +2 -0
- package/dist/types/components/layout/card/src/Card.d.ts +31 -0
- package/dist/types/components/layout/card/src/index.d.ts +2 -0
- package/dist/types/components/layout/desktop-background/src/DesktopBackground.d.ts +23 -0
- package/dist/types/components/layout/desktop-background/src/index.d.ts +2 -0
- package/dist/types/components/layout/draggable-window/src/DraggableWindow.d.ts +59 -0
- package/dist/types/components/layout/draggable-window/src/index.d.ts +2 -0
- package/dist/types/components/layout/flex-container/src/FlexContainer.d.ts +42 -0
- package/dist/types/components/layout/flex-container/src/index.d.ts +2 -0
- package/dist/types/components/layout/footer/src/Footer.d.ts +25 -0
- package/dist/types/components/layout/footer/src/index.d.ts +2 -0
- package/dist/types/components/layout/grid/src/Grid.d.ts +54 -0
- package/dist/types/components/layout/grid/src/index.d.ts +2 -0
- package/dist/types/components/layout/panel/src/Panel.d.ts +23 -0
- package/dist/types/components/layout/panel/src/index.d.ts +2 -0
- package/dist/types/components/layout/scroll-container/src/ScrollContainer.d.ts +21 -0
- package/dist/types/components/layout/scroll-container/src/index.d.ts +2 -0
- package/dist/types/components/layout/splitter/src/Splitter.d.ts +19 -0
- package/dist/types/components/layout/splitter/src/index.d.ts +2 -0
- package/dist/types/components/layout/tabs/src/Tabs.d.ts +29 -0
- package/dist/types/components/layout/tabs/src/index.d.ts +2 -0
- package/dist/types/components/layout/window-manager/src/WindowManager.d.ts +106 -0
- package/dist/types/components/layout/window-manager/src/index.d.ts +2 -0
- package/dist/types/components/math/src/index.d.ts +5 -0
- package/dist/types/components/math/src/mat.d.ts +71 -0
- package/dist/types/components/math/src/mat4.d.ts +101 -0
- package/dist/types/components/math/src/quaternion.d.ts +62 -0
- package/dist/types/components/math/src/solver.d.ts +55 -0
- package/dist/types/components/math/src/vec.d.ts +54 -0
- package/dist/types/components/media/carousel/src/Carousel.d.ts +23 -0
- package/dist/types/components/media/carousel/src/index.d.ts +2 -0
- package/dist/types/components/media/image/src/Image.d.ts +23 -0
- package/dist/types/components/media/image/src/index.d.ts +2 -0
- package/dist/types/components/media/video-player/src/VideoPlayer.d.ts +27 -0
- package/dist/types/components/media/video-player/src/index.d.ts +2 -0
- package/dist/types/components/nav/accordion/src/Accordion.d.ts +52 -0
- package/dist/types/components/nav/accordion/src/index.d.ts +2 -0
- package/dist/types/components/nav/breadcrumb/src/Breadcrumb.d.ts +20 -0
- package/dist/types/components/nav/breadcrumb/src/index.d.ts +2 -0
- package/dist/types/components/nav/dock/src/Dock.d.ts +46 -0
- package/dist/types/components/nav/dock/src/index.d.ts +2 -0
- package/dist/types/components/nav/dropdown/src/Dropdown.d.ts +36 -0
- package/dist/types/components/nav/dropdown/src/index.d.ts +2 -0
- package/dist/types/components/nav/menubar/src/Menubar.d.ts +27 -0
- package/dist/types/components/nav/menubar/src/index.d.ts +2 -0
- package/dist/types/components/nav/pagination/src/Pagination.d.ts +19 -0
- package/dist/types/components/nav/pagination/src/index.d.ts +2 -0
- package/dist/types/components/nav/sidebar/src/Sidebar.d.ts +29 -0
- package/dist/types/components/nav/sidebar/src/index.d.ts +2 -0
- package/dist/types/components/nav/stepper/src/Stepper.d.ts +25 -0
- package/dist/types/components/nav/stepper/src/index.d.ts +2 -0
- package/dist/types/components/nav/system-tray/src/SystemTray.d.ts +47 -0
- package/dist/types/components/nav/system-tray/src/index.d.ts +2 -0
- package/dist/types/components/nav/toolbar/src/Toolbar.d.ts +27 -0
- package/dist/types/components/nav/toolbar/src/index.d.ts +2 -0
- package/dist/types/components/nav/treenav/src/TreeNav.d.ts +34 -0
- package/dist/types/components/nav/treenav/src/TreeNode.d.ts +74 -0
- package/dist/types/components/nav/treenav/src/index.d.ts +4 -0
- package/dist/types/components/nav/wrapper/src/NavWrapper.d.ts +73 -0
- package/dist/types/components/nav/wrapper/src/index.d.ts +2 -0
- package/dist/types/components/overlay/context-menu/src/ContextMenu.d.ts +21 -0
- package/dist/types/components/overlay/context-menu/src/index.d.ts +2 -0
- package/dist/types/components/overlay/drawer/src/Drawer.d.ts +22 -0
- package/dist/types/components/overlay/drawer/src/index.d.ts +2 -0
- package/dist/types/components/overlay/modal/src/Modal.d.ts +22 -0
- package/dist/types/components/overlay/modal/src/index.d.ts +2 -0
- package/dist/types/components/overlay/popover/src/Popover.d.ts +20 -0
- package/dist/types/components/overlay/popover/src/index.d.ts +2 -0
- package/dist/types/components/overlay/toast/src/Toast.d.ts +59 -0
- package/dist/types/components/overlay/toast/src/index.d.ts +2 -0
- package/dist/types/components/overlay/tooltip/src/Tooltip.d.ts +14 -0
- package/dist/types/components/overlay/tooltip/src/index.d.ts +2 -0
- package/dist/types/components/page/ide/src/IDE.d.ts +5 -0
- package/dist/types/components/page/ide/src/index.d.ts +2 -0
- package/dist/types/components/page/trading-dashboard/src/TradingDashboard.d.ts +5 -0
- package/dist/types/components/page/trading-dashboard/src/index.d.ts +2 -0
- package/dist/types/components/page/unity-desktop/src/UnityApp.d.ts +30 -0
- package/dist/types/components/page/unity-desktop/src/UnityDesktop.d.ts +30 -0
- package/dist/types/components/page/unity-desktop/src/index.d.ts +4 -0
- package/dist/types/components/page/word-processor/src/WordProcessor.d.ts +7 -0
- package/dist/types/components/page/word-processor/src/index.d.ts +2 -0
- package/dist/types/components/profiler.d.ts +6 -0
- package/dist/types/components/profiler.d.ts.map +1 -0
- package/dist/types/components/strict-mode.d.ts +6 -0
- package/dist/types/components/strict-mode.d.ts.map +1 -0
- package/dist/types/components/suspense.d.ts +6 -0
- package/dist/types/components/suspense.d.ts.map +1 -0
- package/dist/types/components/viz/2D-bar-graph/src/BarGraph.d.ts +61 -0
- package/dist/types/components/viz/2D-bar-graph/src/index.d.ts +2 -0
- package/dist/types/components/viz/2D-cartesian-raw/src/CartesianGraph2D.d.ts +40 -0
- package/dist/types/components/viz/2D-cartesian-raw/src/index.d.ts +2 -0
- package/dist/types/components/viz/2D-complex-graph/src/ComplexGraph2D.d.ts +33 -0
- package/dist/types/components/viz/2D-complex-graph/src/index.d.ts +2 -0
- package/dist/types/components/viz/2D-discrete-cartesian/src/DiscreteCartesian2D.d.ts +31 -0
- package/dist/types/components/viz/2D-discrete-cartesian/src/index.d.ts +2 -0
- package/dist/types/components/viz/2D-line-graph/src/LineGraph.d.ts +53 -0
- package/dist/types/components/viz/2D-line-graph/src/index.d.ts +2 -0
- package/dist/types/components/viz/2D-pie-graph/src/PieGraph.d.ts +49 -0
- package/dist/types/components/viz/2D-pie-graph/src/index.d.ts +3 -0
- package/dist/types/components/viz/2D-polar-graph/src/PolarGraph2D.d.ts +35 -0
- package/dist/types/components/viz/2D-polar-graph/src/index.d.ts +2 -0
- package/dist/types/components/viz/3d-layers/src/ThreeDLayers.d.ts +35 -0
- package/dist/types/components/viz/3d-layers/src/index.d.ts +2 -0
- package/dist/types/components/viz/3dSpace/src/Space3D.d.ts +63 -0
- package/dist/types/components/viz/3dSpace/src/animation.d.ts +75 -0
- package/dist/types/components/viz/3dSpace/src/bounds.d.ts +36 -0
- package/dist/types/components/viz/3dSpace/src/camera-controller.d.ts +59 -0
- package/dist/types/components/viz/3dSpace/src/camera.d.ts +43 -0
- package/dist/types/components/viz/3dSpace/src/collision.d.ts +54 -0
- package/dist/types/components/viz/3dSpace/src/cpu-pipeline.d.ts +47 -0
- package/dist/types/components/viz/3dSpace/src/index.d.ts +32 -0
- package/dist/types/components/viz/3dSpace/src/light.d.ts +23 -0
- package/dist/types/components/viz/3dSpace/src/lighting-model.d.ts +34 -0
- package/dist/types/components/viz/3dSpace/src/material.d.ts +12 -0
- package/dist/types/components/viz/3dSpace/src/mesh.d.ts +35 -0
- package/dist/types/components/viz/3dSpace/src/picking.d.ts +51 -0
- package/dist/types/components/viz/3dSpace/src/render-pipeline.d.ts +12 -0
- package/dist/types/components/viz/3dSpace/src/scene-graph.d.ts +20 -0
- package/dist/types/components/viz/3dSpace/src/scene-object.d.ts +31 -0
- package/dist/types/components/viz/3dSpace/src/terrain.d.ts +34 -0
- package/dist/types/components/viz/3dSpace/src/texture.d.ts +22 -0
- package/dist/types/components/viz/3dSpace/src/types.d.ts +42 -0
- package/dist/types/components/viz/3dSpace/src/viewport.d.ts +19 -0
- package/dist/types/components/viz/3dSpace/src/webgl-pipeline.d.ts +54 -0
- package/dist/types/components/viz/big-number/src/BigNumber.d.ts +29 -0
- package/dist/types/components/viz/big-number/src/index.d.ts +2 -0
- package/dist/types/components/viz/bloch-sphere/src/BlochSphere.d.ts +73 -0
- package/dist/types/components/viz/bloch-sphere/src/index.d.ts +2 -0
- package/dist/types/components/viz/box-plot/src/BoxPlot.d.ts +47 -0
- package/dist/types/components/viz/box-plot/src/index.d.ts +2 -0
- package/dist/types/components/viz/bubble-chart/src/BubbleChart.d.ts +38 -0
- package/dist/types/components/viz/bubble-chart/src/index.d.ts +2 -0
- package/dist/types/components/viz/calendar-heat-map/src/CalendarHeatMap.d.ts +29 -0
- package/dist/types/components/viz/calendar-heat-map/src/index.d.ts +2 -0
- package/dist/types/components/viz/chord/src/ChordDiagram.d.ts +25 -0
- package/dist/types/components/viz/chord/src/index.d.ts +2 -0
- package/dist/types/components/viz/decomposition-tree/src/DecompositionTree.d.ts +33 -0
- package/dist/types/components/viz/decomposition-tree/src/index.d.ts +2 -0
- package/dist/types/components/viz/earth-globe/src/EarthGlobe.d.ts +62 -0
- package/dist/types/components/viz/earth-globe/src/globe-data.d.ts +23 -0
- package/dist/types/components/viz/earth-globe/src/index.d.ts +5 -0
- package/dist/types/components/viz/force-graph/src/ForceGraph.d.ts +99 -0
- package/dist/types/components/viz/force-graph/src/index.d.ts +2 -0
- package/dist/types/components/viz/funnel/src/FunnelChart.d.ts +28 -0
- package/dist/types/components/viz/funnel/src/index.d.ts +2 -0
- package/dist/types/components/viz/gantt-chart/src/GanttChart.d.ts +33 -0
- package/dist/types/components/viz/gantt-chart/src/index.d.ts +2 -0
- package/dist/types/components/viz/gauge/src/Gauge.d.ts +37 -0
- package/dist/types/components/viz/gauge/src/index.d.ts +2 -0
- package/dist/types/components/viz/graph/src/HypercubeGraph.d.ts +43 -0
- package/dist/types/components/viz/graph/src/hypercube.d.ts +78 -0
- package/dist/types/components/viz/graph/src/index.d.ts +4 -0
- package/dist/types/components/viz/heat-map/src/HeatMap.d.ts +29 -0
- package/dist/types/components/viz/heat-map/src/index.d.ts +2 -0
- package/dist/types/components/viz/histogram/src/Histogram.d.ts +27 -0
- package/dist/types/components/viz/histogram/src/index.d.ts +2 -0
- package/dist/types/components/viz/lollipop/src/LollipopChart.d.ts +32 -0
- package/dist/types/components/viz/lollipop/src/index.d.ts +2 -0
- package/dist/types/components/viz/matrix/src/Matrix.d.ts +29 -0
- package/dist/types/components/viz/matrix/src/index.d.ts +2 -0
- package/dist/types/components/viz/partition/src/Partition.d.ts +31 -0
- package/dist/types/components/viz/partition/src/index.d.ts +2 -0
- package/dist/types/components/viz/pivot-table/src/PivotTable.d.ts +25 -0
- package/dist/types/components/viz/pivot-table/src/index.d.ts +2 -0
- package/dist/types/components/viz/radar-chart/src/RadarChart.d.ts +35 -0
- package/dist/types/components/viz/radar-chart/src/index.d.ts +2 -0
- package/dist/types/components/viz/sankey/src/SankeyDiagram.d.ts +38 -0
- package/dist/types/components/viz/sankey/src/index.d.ts +2 -0
- package/dist/types/components/viz/sunburst/src/Sunburst.d.ts +27 -0
- package/dist/types/components/viz/sunburst/src/index.d.ts +2 -0
- package/dist/types/components/viz/tree-map/src/TreeMap.d.ts +29 -0
- package/dist/types/components/viz/tree-map/src/index.d.ts +2 -0
- package/dist/types/components/viz/us-state-map/src/USStateMap.d.ts +23 -0
- package/dist/types/components/viz/us-state-map/src/index.d.ts +4 -0
- package/dist/types/components/viz/us-state-map/src/us-state-paths.d.ts +10 -0
- package/dist/types/components/viz/vector-field/src/VectorField.d.ts +61 -0
- package/dist/types/components/viz/vector-field/src/index.d.ts +2 -0
- package/dist/types/components/viz/waterfall/src/WaterfallChart.d.ts +32 -0
- package/dist/types/components/viz/waterfall/src/index.d.ts +2 -0
- package/dist/types/components/viz/word-cloud/src/WordCloud.d.ts +30 -0
- package/dist/types/components/viz/word-cloud/src/index.d.ts +2 -0
- package/dist/types/components/viz/wrapper/src/VizWrapper.d.ts +60 -0
- package/dist/types/components/viz/wrapper/src/index.d.ts +2 -0
- package/dist/types/compute/context.d.ts +20 -0
- package/dist/types/compute/context.d.ts.map +1 -0
- package/dist/types/compute/cpu-backend.d.ts +15 -0
- package/dist/types/compute/cpu-backend.d.ts.map +1 -0
- package/dist/types/compute/index.d.ts +3 -0
- package/dist/types/compute/index.d.ts.map +1 -0
- package/dist/types/compute/types.d.ts +57 -0
- package/dist/types/compute/types.d.ts.map +1 -0
- package/dist/types/compute/webgl-backend.d.ts +33 -0
- package/dist/types/compute/webgl-backend.d.ts.map +1 -0
- package/dist/types/compute/webgpu-backend.d.ts +50 -0
- package/dist/types/compute/webgpu-backend.d.ts.map +1 -0
- package/dist/types/context/create-context.d.ts +15 -0
- package/dist/types/context/create-context.d.ts.map +1 -0
- package/dist/types/core/children.d.ts +15 -0
- package/dist/types/core/children.d.ts.map +1 -0
- package/dist/types/core/clone-element.d.ts +10 -0
- package/dist/types/core/clone-element.d.ts.map +1 -0
- package/dist/types/core/create-element.d.ts +20 -0
- package/dist/types/core/create-element.d.ts.map +1 -0
- package/dist/types/core/create-ref.d.ts +7 -0
- package/dist/types/core/create-ref.d.ts.map +1 -0
- package/dist/types/core/fiber.d.ts +30 -0
- package/dist/types/core/fiber.d.ts.map +1 -0
- package/dist/types/core/forward-ref.d.ts +16 -0
- package/dist/types/core/forward-ref.d.ts.map +1 -0
- package/dist/types/core/fragment.d.ts +6 -0
- package/dist/types/core/fragment.d.ts.map +1 -0
- package/dist/types/core/is-valid-element.d.ts +7 -0
- package/dist/types/core/is-valid-element.d.ts.map +1 -0
- package/dist/types/core/lanes.d.ts +47 -0
- package/dist/types/core/lanes.d.ts.map +1 -0
- package/dist/types/core/lazy.d.ts +20 -0
- package/dist/types/core/lazy.d.ts.map +1 -0
- package/dist/types/core/memo.d.ts +13 -0
- package/dist/types/core/memo.d.ts.map +1 -0
- package/dist/types/core/reconciler.d.ts +12 -0
- package/dist/types/core/reconciler.d.ts.map +1 -0
- package/dist/types/core/scheduler-host-config.d.ts +37 -0
- package/dist/types/core/scheduler-host-config.d.ts.map +1 -0
- package/dist/types/core/scheduler.d.ts +29 -0
- package/dist/types/core/scheduler.d.ts.map +1 -0
- package/dist/types/core/src/build/index.d.ts +4 -0
- package/dist/types/core/src/build/noscript-plugin.d.ts +62 -0
- package/dist/types/core/src/build/seo-plugin.d.ts +42 -0
- package/dist/types/core/src/client/graphql.d.ts +63 -0
- package/dist/types/core/src/client/index.d.ts +3 -0
- package/dist/types/core/src/client/protobuf.d.ts +39 -0
- package/dist/types/core/src/client/rest.d.ts +60 -0
- package/dist/types/core/src/components/component.d.ts +38 -0
- package/dist/types/core/src/components/error-boundary.d.ts +22 -0
- package/dist/types/core/src/components/profiler.d.ts +5 -0
- package/dist/types/core/src/components/strict-mode.d.ts +5 -0
- package/dist/types/core/src/components/suspense.d.ts +5 -0
- package/dist/types/core/src/components-barrel.d.ts +100 -0
- package/dist/types/core/src/compute/context.d.ts +19 -0
- package/dist/types/core/src/compute/cpu-backend.d.ts +14 -0
- package/dist/types/core/src/compute/index.d.ts +2 -0
- package/dist/types/core/src/compute/types.d.ts +56 -0
- package/dist/types/core/src/compute/webgl-backend.d.ts +32 -0
- package/dist/types/core/src/compute/webgpu-backend.d.ts +49 -0
- package/dist/types/core/src/context/create-context.d.ts +14 -0
- package/dist/types/core/src/core/children.d.ts +14 -0
- package/dist/types/core/src/core/clone-element.d.ts +9 -0
- package/dist/types/core/src/core/create-element.d.ts +19 -0
- package/dist/types/core/src/core/create-ref.d.ts +6 -0
- package/dist/types/core/src/core/fiber.d.ts +29 -0
- package/dist/types/core/src/core/forward-ref.d.ts +15 -0
- package/dist/types/core/src/core/fragment.d.ts +5 -0
- package/dist/types/core/src/core/is-valid-element.d.ts +6 -0
- package/dist/types/core/src/core/lanes.d.ts +46 -0
- package/dist/types/core/src/core/lazy.d.ts +19 -0
- package/dist/types/core/src/core/memo.d.ts +12 -0
- package/dist/types/core/src/core/reconciler.d.ts +11 -0
- package/dist/types/core/src/core/scheduler-host-config.d.ts +36 -0
- package/dist/types/core/src/core/scheduler.d.ts +28 -0
- package/dist/types/core/src/core/transitions.d.ts +31 -0
- package/dist/types/core/src/devtools/index.d.ts +21 -0
- package/dist/types/core/src/dom/create-portal.d.ts +6 -0
- package/dist/types/core/src/dom/create-root.d.ts +23 -0
- package/dist/types/core/src/dom/flush-sync.d.ts +1 -0
- package/dist/types/core/src/dom/index.d.ts +4 -0
- package/dist/types/core/src/dom/legacy.d.ts +16 -0
- package/dist/types/core/src/dom/synthetic-event.d.ts +90 -0
- package/dist/types/core/src/dom/work-loop.d.ts +34 -0
- package/dist/types/core/src/features/feature-flags.d.ts +38 -0
- package/dist/types/core/src/features/index.d.ts +27 -0
- package/dist/types/core/src/hooks/dispatcher.d.ts +26 -0
- package/dist/types/core/src/hooks/hook-state.d.ts +46 -0
- package/dist/types/core/src/hooks/index.d.ts +47 -0
- package/dist/types/core/src/hooks/install-dispatcher.d.ts +2 -0
- package/dist/types/core/src/hooks/use-head.d.ts +54 -0
- package/dist/types/core/src/index.d.ts +23 -0
- package/dist/types/core/src/jsx-dev-runtime.d.ts +1 -0
- package/dist/types/core/src/jsx-runtime.d.ts +7 -0
- package/dist/types/core/src/router/index.d.ts +12 -0
- package/dist/types/core/src/router/link-component.d.ts +16 -0
- package/dist/types/core/src/router/match-path.d.ts +28 -0
- package/dist/types/core/src/router/route-component.d.ts +12 -0
- package/dist/types/core/src/router/router-component.d.ts +5 -0
- package/dist/types/core/src/router/router-context.d.ts +13 -0
- package/dist/types/core/src/router/router-store.d.ts +22 -0
- package/dist/types/core/src/router/use-navigate.d.ts +4 -0
- package/dist/types/core/src/router/use-params.d.ts +2 -0
- package/dist/types/core/src/router/use-router.d.ts +3 -0
- package/dist/types/core/src/server/index.d.ts +3 -0
- package/dist/types/core/src/server/render-to-pipeable-stream.d.ts +31 -0
- package/dist/types/core/src/server/render-to-readable-stream.d.ts +19 -0
- package/dist/types/core/src/server/render-to-string.d.ts +25 -0
- package/dist/types/core/src/shared/act.d.ts +1 -0
- package/dist/types/core/src/shared/aria-warnings.d.ts +1 -0
- package/dist/types/core/src/shared/async-compute.d.ts +63 -0
- package/dist/types/core/src/shared/component-registry.d.ts +53 -0
- package/dist/types/core/src/shared/render-guard.d.ts +47 -0
- package/dist/types/core/src/shared/secure-fetch.d.ts +21 -0
- package/dist/types/core/src/shared/types.d.ts +127 -0
- package/dist/types/core/src/shared/warnings.d.ts +19 -0
- package/dist/types/core/src/telemetry/index.d.ts +2 -0
- package/dist/types/core/src/telemetry/metrics.d.ts +67 -0
- package/dist/types/core/src/telemetry/tracing.d.ts +95 -0
- package/dist/types/core/transitions.d.ts +32 -0
- package/dist/types/core/transitions.d.ts.map +1 -0
- package/dist/types/devtools/index.d.ts +22 -0
- package/dist/types/devtools/index.d.ts.map +1 -0
- package/dist/types/dom/create-portal.d.ts +7 -0
- package/dist/types/dom/create-portal.d.ts.map +1 -0
- package/dist/types/dom/create-root.d.ts +24 -0
- package/dist/types/dom/create-root.d.ts.map +1 -0
- package/dist/types/dom/flush-sync.d.ts +2 -0
- package/dist/types/dom/flush-sync.d.ts.map +1 -0
- package/dist/types/dom/index.d.ts +5 -0
- package/dist/types/dom/index.d.ts.map +1 -0
- package/dist/types/dom/legacy.d.ts +17 -0
- package/dist/types/dom/legacy.d.ts.map +1 -0
- package/dist/types/dom/synthetic-event.d.ts +91 -0
- package/dist/types/dom/synthetic-event.d.ts.map +1 -0
- package/dist/types/dom/work-loop.d.ts +35 -0
- package/dist/types/dom/work-loop.d.ts.map +1 -0
- package/dist/types/features/feature-flags.d.ts +39 -0
- package/dist/types/features/feature-flags.d.ts.map +1 -0
- package/dist/types/features/index.d.ts +28 -0
- package/dist/types/features/index.d.ts.map +1 -0
- package/dist/types/hooks/dispatcher.d.ts +27 -0
- package/dist/types/hooks/dispatcher.d.ts.map +1 -0
- package/dist/types/hooks/hook-state.d.ts +47 -0
- package/dist/types/hooks/hook-state.d.ts.map +1 -0
- package/dist/types/hooks/index.d.ts +48 -0
- package/dist/types/hooks/index.d.ts.map +1 -0
- package/dist/types/hooks/install-dispatcher.d.ts +3 -0
- package/dist/types/hooks/install-dispatcher.d.ts.map +1 -0
- package/dist/types/hooks/use-head.d.ts +55 -0
- package/dist/types/hooks/use-head.d.ts.map +1 -0
- package/dist/types/index.d.ts +24 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/jsx-dev-runtime.d.ts +2 -0
- package/dist/types/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/types/jsx-runtime.d.ts +8 -0
- package/dist/types/jsx-runtime.d.ts.map +1 -0
- package/dist/types/router/index.d.ts +13 -0
- package/dist/types/router/index.d.ts.map +1 -0
- package/dist/types/router/link-component.d.ts +17 -0
- package/dist/types/router/link-component.d.ts.map +1 -0
- package/dist/types/router/match-path.d.ts +29 -0
- package/dist/types/router/match-path.d.ts.map +1 -0
- package/dist/types/router/route-component.d.ts +13 -0
- package/dist/types/router/route-component.d.ts.map +1 -0
- package/dist/types/router/router-component.d.ts +6 -0
- package/dist/types/router/router-component.d.ts.map +1 -0
- package/dist/types/router/router-context.d.ts +14 -0
- package/dist/types/router/router-context.d.ts.map +1 -0
- package/dist/types/router/router-store.d.ts +23 -0
- package/dist/types/router/router-store.d.ts.map +1 -0
- package/dist/types/router/use-navigate.d.ts +5 -0
- package/dist/types/router/use-navigate.d.ts.map +1 -0
- package/dist/types/router/use-params.d.ts +3 -0
- package/dist/types/router/use-params.d.ts.map +1 -0
- package/dist/types/router/use-router.d.ts +4 -0
- package/dist/types/router/use-router.d.ts.map +1 -0
- package/dist/types/server/index.d.ts +4 -0
- package/dist/types/server/index.d.ts.map +1 -0
- package/dist/types/server/render-to-pipeable-stream.d.ts +32 -0
- package/dist/types/server/render-to-pipeable-stream.d.ts.map +1 -0
- package/dist/types/server/render-to-readable-stream.d.ts +20 -0
- package/dist/types/server/render-to-readable-stream.d.ts.map +1 -0
- package/dist/types/server/render-to-string.d.ts +26 -0
- package/dist/types/server/render-to-string.d.ts.map +1 -0
- package/dist/types/shared/act.d.ts +2 -0
- package/dist/types/shared/act.d.ts.map +1 -0
- package/dist/types/shared/aria-warnings.d.ts +2 -0
- package/dist/types/shared/aria-warnings.d.ts.map +1 -0
- package/dist/types/shared/async-compute.d.ts +64 -0
- package/dist/types/shared/async-compute.d.ts.map +1 -0
- package/dist/types/shared/component-registry.d.ts +54 -0
- package/dist/types/shared/component-registry.d.ts.map +1 -0
- package/dist/types/shared/render-guard.d.ts +48 -0
- package/dist/types/shared/render-guard.d.ts.map +1 -0
- package/dist/types/shared/secure-fetch.d.ts +22 -0
- package/dist/types/shared/secure-fetch.d.ts.map +1 -0
- package/dist/types/shared/types.d.ts +128 -0
- package/dist/types/shared/types.d.ts.map +1 -0
- package/dist/types/shared/warnings.d.ts +20 -0
- package/dist/types/shared/warnings.d.ts.map +1 -0
- package/dist/types/telemetry/index.d.ts +3 -0
- package/dist/types/telemetry/index.d.ts.map +1 -0
- package/dist/types/telemetry/metrics.d.ts +68 -0
- package/dist/types/telemetry/metrics.d.ts.map +1 -0
- package/dist/types/telemetry/tracing.d.ts +96 -0
- package/dist/types/telemetry/tracing.d.ts.map +1 -0
- package/package.json +8 -17
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{"version":3,"file":"specifyjs-dom.esm.js","sources":["../../src/shared/types.ts","../../src/core/is-valid-element.ts","../../src/core/fiber.ts","../../src/core/reconciler.ts","../../src/hooks/hook-state.ts","../../src/core/scheduler.ts","../../src/shared/warnings.ts","../../src/shared/render-guard.ts","../../src/shared/component-registry.ts","../../src/core/scheduler-host-config.ts","../../src/dom/work-loop.ts","../../src/shared/aria-warnings.ts","../../src/dom/create-root.ts","../../src/dom/create-portal.ts","../../src/dom/flush-sync.ts","../../src/dom/legacy.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["SPEC_ELEMENT_TYPE","Symbol","for","SPEC_FRAGMENT_TYPE","SPEC_PORTAL_TYPE","SPEC_PROVIDER_TYPE","SPEC_CONSUMER_TYPE","SPEC_FORWARD_REF_TYPE","SPEC_MEMO_TYPE","SPEC_SUSPENSE_TYPE","SPEC_STRICT_MODE_TYPE","SPEC_PROFILER_TYPE","isValidElement","object","$$typeof","createFiberFromElement","element","lanes","createFiber","type","prototype","isSpecComponent","getFiberTag","key","ref","props","createFiberFromText","content","text","tag","pendingProps","stateNode","memoizedProps","memoizedState","return","child","sibling","index","alternate","effectTag","updateQueue","dependencies","childLanes","reconcileChildren","returnFiber","currentFirstChild","newChildren","elements","children","result","stack","length","node","pop","Array","isArray","i","push","coerceToFiberChildren","deleteRemainingChildren","resultingFirstChild","previousNewFiber","oldFiber","newIdx","lastPlacedIndex","nextOldFiber","newChild","newFiber","updateSlot","deleteChild","placeChild","createChild","existingChildren","map","Map","set","mapRemainingChildren","updateFromMap","delete","forEach","reconcileChildArray","existing","useFiber","created","reconcileSingleTextNode","isSameType","reconcileSingleChild","fiber","clone","current","wip","createWorkInProgressFromFiber","oldKey","updateTextNode","updateElement","newIndex","oldIndex","childToDelete","get","effectListHead","setCurrentFiber","getEffectList","pendingTasks","scheduleMicrotask","fn","queueMicrotask","Promise","resolve","then","warnedMessages","Set","warn","message","has","size","add","console","fiberRenderCounts","WeakMap","currentCycleId","fiberEffectCounts","currentCommitId","trackEffect","componentName","entry","commitId","count","typeMap","nextTypeIndex","registerComponentInstance","name","instanceCount","globalThis","lookup","values","__SPECIFYJS_COMPONENTS__","updateGlobalLookup","instanceId","getComponentName","MessageChannel","port1","onmessage","fiberRoots","createFiberRoot","container","rootFiber","containerNode","pendingChildren","callbackScheduled","pendingLanes","suspendedLanes","expirationTimes","fill","callbackNode","callbackPriority","isHydrating","performSyncWork","root","performWork","activeHydrationRoot","hydrationCursor","clear","createWorkInProgress","startFiber","unitOfWork","performUnitOfWork","workLoopSync","finishedWork","item","deletedFiber","commitDeletion","commitDeletions","parentDOM","getHostParentNode","before","getHostSibling","insertBefore","appendChild","commitWork","effectList","runEffects","instance","componentDidMount","prevProps","prevState","componentDidUpdate","commitEffects","commitRoot","parentNode","rootContainer","parent","findHostParentForHydration","candidate","getNextHydratableChild","nodeType","getNextHydratableSibling","tagName","toLowerCase","tryHydrateInstance","textNode","tryHydrateText","reconcileHostRoot","reconcileHostComponent","Component","cycleId","msg","error","Error","trackRender","strictModeDepth","effects","reconcileFunctionComponent","Constructor","_fiber","_enqueueUpdate","callback","fRoot","findRootForContainer","scheduleUpdateOnFiber","_pendingState","_forceUpdate","nextState","state","update","partial","shouldUpdate","shouldComponentUpdate","cloneFiberSubtree","render","reconcileClassComponent","reconcileFragment","provider","value","_context","_currentValue","reconcileContextProvider","reconcileForwardRef","innerType","compare","nextProps","a","b","keysA","Object","keys","keysB","is","shallowPropsEqual","reconcileMemoComponent","beginWork","completeWork","source","rootClone","cloneOneFiber","srcChild","cloneParent","src","currentSrc","prevClone","SVG_TAGS","isCustomElement","dom","includes","firstChild","nextSibling","domNode","isSvgTag","document","createElementNS","createElement","updateDOMProperties","process","env","NODE_ENV","undefined","alt","id","onClick","role","tabIndex","target","rel","checkAriaCompliance","ancestor","cid","setAttribute","appendAllChildren","String","createTextNode","nodeValue","parentFiber","contains","removeChild","removeHostChildren","destroy","next","componentWillUnmount","runCleanupEffects","outer","isHostParent","effect","create","EVENT_RE","test","eventName","slice","removeEventListener","removeAttribute","innerHTML","addEventListener","style","prop","html","__html","checked","Boolean","createRoot","_options","Element","DocumentFragment","fiberRoot","isMounted","unmount","hydrateRoot","initialChildren","elem","createPortal","flushSync","tasks","task","flushPendingTasks","containerRootMap","hydrate","unmountComponentAtNode"],"mappings":"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"}
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/shared/types.ts", "../src/core/is-valid-element.ts", "../src/core/fiber.ts", "../src/core/reconciler.ts", "../src/hooks/hook-state.ts", "../src/hooks/index.ts", "../src/core/scheduler.ts", "../src/core/lanes.ts", "../src/core/transitions.ts", "../src/shared/warnings.ts", "../src/shared/render-guard.ts", "../src/shared/component-registry.ts", "../src/hooks/dispatcher.ts", "../src/hooks/install-dispatcher.ts", "../src/devtools/index.ts", "../src/core/scheduler-host-config.ts", "../src/shared/aria-warnings.ts", "../src/dom/work-loop.ts", "../src/dom/create-root.ts", "../src/dom/create-portal.ts", "../src/dom/flush-sync.ts", "../src/dom/legacy.ts"],
|
|
4
|
+
"sourcesContent": ["// ============================================================================\n// SpecifyJS Core Types\n// ============================================================================\n// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\n/** Unique symbol to identify SpecifyJS elements */\nexport const SPEC_ELEMENT_TYPE = Symbol.for('spec.element');\nexport const SPEC_FRAGMENT_TYPE = Symbol.for('spec.fragment');\nexport const SPEC_PORTAL_TYPE = Symbol.for('spec.portal');\nexport const SPEC_PROVIDER_TYPE = Symbol.for('spec.provider');\nexport const SPEC_CONSUMER_TYPE = Symbol.for('spec.consumer');\nexport const SPEC_FORWARD_REF_TYPE = Symbol.for('spec.forward_ref');\nexport const SPEC_MEMO_TYPE = Symbol.for('spec.memo');\nexport const SPEC_LAZY_TYPE = Symbol.for('spec.lazy');\nexport const SPEC_SUSPENSE_TYPE = Symbol.for('spec.suspense');\nexport const SPEC_STRICT_MODE_TYPE = Symbol.for('spec.strict_mode');\nexport const SPEC_PROFILER_TYPE = Symbol.for('spec.profiler');\n\n/** A key used for reconciliation */\nexport type Key = string | number | null;\n\n/** A ref can be a callback, an object, or null */\nexport type Ref<T = unknown> = RefCallback<T> | RefObject<T> | null;\nexport type RefCallback<T> = (instance: T | null) => void;\nexport interface RefObject<T> {\n current: T | null;\n}\n\n/** Props are an arbitrary key-value map */\nexport type Props = Record<string, unknown> & {\n children?: SpecNode;\n key?: Key;\n ref?: Ref;\n};\n\n/** Valid child types in a SpecifyJS tree */\nexport type SpecChild = SpecElement | string | number | boolean | null | undefined;\nexport type SpecNode = SpecChild | SpecNode[];\n\n/** A functional component */\nexport type FunctionComponent<P extends Props = Props> = (props: P) => SpecNode;\n\n/** A class component constructor */\nexport interface ClassComponentConstructor<P extends Props = Props, S = unknown> {\n new (props: P): ClassComponentInstance<P, S>;\n getDerivedStateFromProps?(props: P, state: S): Partial<S> | null;\n getDerivedStateFromError?(error: unknown): Partial<S> | null;\n}\n\n/** Instance of a class component */\nexport interface ClassComponentInstance<P extends Props = Props, S = unknown> {\n props: P;\n state: S;\n setState(updater: Partial<S> | ((prevState: S, props: P) => Partial<S> | null)): void;\n forceUpdate(callback?: () => void): void;\n render(): SpecNode;\n componentDidMount?(): void;\n componentDidUpdate?(prevProps: P, prevState: S, snapshot?: unknown): void;\n componentWillUnmount?(): void;\n shouldComponentUpdate?(nextProps: P, nextState: S): boolean;\n getSnapshotBeforeUpdate?(prevProps: P, prevState: S): unknown;\n componentDidCatch?(error: unknown, info: ErrorInfo): void;\n // Internal: set by the reconciler for setState/forceUpdate wiring\n _fiber: unknown;\n _pendingState: Array<Partial<S> | ((prevState: S, props: P) => Partial<S> | null)>;\n _forceUpdate: boolean;\n _enqueueUpdate(callback?: () => void): void;\n}\n\nexport interface ErrorInfo {\n componentStack: string;\n}\n\n/** A component type can be a function, a class, or a special symbol type */\nexport type ComponentType<P extends Props = Props> =\n | FunctionComponent<P>\n | ClassComponentConstructor<P>\n | string\n | symbol;\n\n/** The core element structure \u2014 equivalent to React.Element */\nexport interface SpecElement<P extends Props = Props> {\n $$typeof: typeof SPEC_ELEMENT_TYPE;\n type: ComponentType<P>;\n props: P;\n key: Key;\n ref: Ref;\n}\n\n/** Fiber node types for the reconciler */\nexport const enum FiberTag {\n FunctionComponent = 0,\n ClassComponent = 1,\n HostRoot = 2,\n HostComponent = 3,\n HostText = 4,\n Fragment = 5,\n ContextProvider = 6,\n ContextConsumer = 7,\n ForwardRef = 8,\n MemoComponent = 9,\n LazyComponent = 10,\n SuspenseComponent = 11,\n Profiler = 12,\n Portal = 13,\n}\n\n/** Effect flags for fiber work */\nexport const enum EffectTag {\n NoEffect = 0,\n Placement = 1,\n Update = 2,\n Deletion = 4,\n ChildDeletion = 8,\n Snapshot = 16,\n Passive = 32,\n Layout = 64,\n Ref = 128,\n}\n\n/** Fiber node \u2014 the internal work unit */\nexport interface Fiber<P extends Props = Props> {\n tag: FiberTag;\n type: ComponentType<P> | null;\n key: Key;\n ref: Ref;\n\n stateNode: unknown;\n pendingProps: P;\n memoizedProps: P | null;\n memoizedState: unknown;\n\n return: Fiber | null;\n child: Fiber | null;\n sibling: Fiber | null;\n index: number;\n\n alternate: Fiber | null;\n effectTag: EffectTag;\n\n updateQueue: unknown;\n dependencies: unknown;\n\n lanes: number;\n childLanes: number;\n}\n\n/** Context type */\nexport interface SpecContext<T> {\n $$typeof: symbol;\n Provider: ComponentType;\n Consumer: ComponentType;\n _currentValue: T;\n _defaultValue: T;\n displayName?: string;\n}\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\nimport { SPEC_ELEMENT_TYPE, type SpecElement } from '../shared/types';\n\n/**\n * Checks if a value is a valid SpecifyJS element.\n * Equivalent to React.isValidElement.\n */\nexport function isValidElement(object: unknown): object is SpecElement {\n return (\n typeof object === 'object' &&\n object !== null &&\n (object as SpecElement).$$typeof === SPEC_ELEMENT_TYPE\n );\n}\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\nimport {\n type Fiber,\n type Props,\n type ComponentType,\n type Key,\n type Ref,\n type SpecElement,\n type SpecNode,\n FiberTag,\n EffectTag,\n SPEC_FRAGMENT_TYPE,\n SPEC_FORWARD_REF_TYPE,\n SPEC_MEMO_TYPE,\n SPEC_SUSPENSE_TYPE,\n SPEC_STRICT_MODE_TYPE,\n SPEC_PROFILER_TYPE,\n SPEC_PORTAL_TYPE,\n SPEC_PROVIDER_TYPE,\n SPEC_CONSUMER_TYPE,\n} from '../shared/types';\nimport { isValidElement } from './is-valid-element';\n\n/**\n * Determines the fiber tag for a given element type.\n */\nexport function getFiberTag(type: ComponentType): FiberTag {\n if (typeof type === 'string') {\n return FiberTag.HostComponent;\n }\n if (typeof type === 'function') {\n if ((type.prototype as Record<string, unknown>)?.isSpecComponent) {\n return FiberTag.ClassComponent;\n }\n return FiberTag.FunctionComponent;\n }\n if (typeof type === 'symbol') {\n if (type === SPEC_FRAGMENT_TYPE) return FiberTag.Fragment;\n if (type === SPEC_SUSPENSE_TYPE) return FiberTag.SuspenseComponent;\n if (type === SPEC_STRICT_MODE_TYPE) return FiberTag.Fragment; // StrictMode renders as fragment\n if (type === SPEC_PROFILER_TYPE) return FiberTag.Profiler;\n if (type === SPEC_PORTAL_TYPE) return FiberTag.Portal;\n }\n if (typeof type === 'object' && type !== null) {\n const $$typeof = (type as { $$typeof?: symbol }).$$typeof;\n if ($$typeof === SPEC_FORWARD_REF_TYPE) return FiberTag.ForwardRef;\n if ($$typeof === SPEC_MEMO_TYPE) return FiberTag.MemoComponent;\n if ($$typeof === SPEC_PROVIDER_TYPE) return FiberTag.ContextProvider;\n if ($$typeof === SPEC_CONSUMER_TYPE) return FiberTag.ContextConsumer;\n }\n return FiberTag.HostComponent;\n}\n\n/**\n * Creates a new fiber from a SpecifyJS element.\n */\nexport function createFiberFromElement(element: SpecElement, lanes: number = 0): Fiber {\n const tag = getFiberTag(element.type);\n\n return createFiber(tag, element.type, element.key, element.ref, element.props, lanes);\n}\n\n/**\n * Creates a fiber for a text node.\n */\nexport function createFiberFromText(content: string | number, lanes: number = 0): Fiber {\n return createFiber(\n FiberTag.HostText,\n null,\n null,\n null,\n { text: content } as unknown as Props,\n lanes,\n );\n}\n\n/**\n * Creates the root fiber for a container.\n */\nexport function createHostRootFiber(): Fiber {\n return createFiber(FiberTag.HostRoot, null, null, null, {} as Props, 0);\n}\n\n/**\n * Core fiber constructor.\n */\nexport function createFiber(\n tag: FiberTag,\n type: ComponentType | null,\n key: Key,\n ref: Ref,\n pendingProps: Props,\n lanes: number,\n): Fiber {\n return {\n tag,\n type,\n key,\n ref,\n stateNode: null,\n pendingProps,\n memoizedProps: null,\n memoizedState: null,\n return: null,\n child: null,\n sibling: null,\n index: 0,\n alternate: null,\n effectTag: EffectTag.NoEffect,\n updateQueue: null,\n dependencies: null,\n lanes,\n childLanes: 0,\n };\n}\n\n/**\n * Creates a working-in-progress clone of an existing fiber.\n */\nexport function createWorkInProgress(current: Fiber, pendingProps: Props): Fiber {\n let wip = current.alternate;\n\n if (wip === null) {\n wip = createFiber(\n current.tag,\n current.type,\n current.key,\n current.ref,\n pendingProps,\n current.lanes,\n );\n wip.stateNode = current.stateNode;\n wip.alternate = current;\n current.alternate = wip;\n } else {\n wip.pendingProps = pendingProps;\n wip.effectTag = EffectTag.NoEffect;\n wip.child = null;\n wip.sibling = null;\n }\n\n wip.memoizedProps = current.memoizedProps;\n wip.memoizedState = current.memoizedState;\n wip.updateQueue = current.updateQueue;\n wip.lanes = current.lanes;\n wip.childLanes = current.childLanes;\n\n return wip;\n}\n\n/**\n * Converts SpecNode children into fiber-compatible form.\n */\nexport function coerceToFiberChildren(children: SpecNode): Array<SpecElement | string | number> {\n const result: Array<SpecElement | string | number> = [];\n const stack: SpecNode[] = [children];\n\n while (stack.length > 0) {\n const node = stack.pop()!;\n if (node == null || typeof node === 'boolean') continue;\n if (Array.isArray(node)) {\n for (let i = node.length - 1; i >= 0; i--) {\n stack.push(node[i] as SpecNode);\n }\n continue;\n }\n if (isValidElement(node)) {\n result.push(node as SpecElement);\n } else if (typeof node === 'string' || typeof node === 'number') {\n result.push(node);\n }\n }\n\n return result;\n}\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\nimport {\n type Fiber,\n type Props,\n type SpecElement,\n type SpecNode,\n type Key,\n FiberTag,\n EffectTag,\n} from '../shared/types';\nimport { isValidElement } from './is-valid-element';\nimport { createFiberFromElement, createFiberFromText, coerceToFiberChildren } from './fiber';\n\n/**\n * The reconciler is responsible for diffing old and new virtual trees,\n * producing a set of fiber effects (placement, update, deletion) that\n * the renderer can apply to the host environment (DOM).\n */\n\n/**\n * Reconciles the children of a fiber, producing a linked list of child fibers.\n * This implements React's reconciliation algorithm including keyed diffing.\n */\nexport function reconcileChildren(\n returnFiber: Fiber,\n currentFirstChild: Fiber | null,\n newChildren: SpecNode,\n lanes: number,\n): Fiber | null {\n // Normalize to array\n const elements = coerceToFiberChildren(newChildren);\n\n if (elements.length === 0) {\n // Delete all existing children\n deleteRemainingChildren(returnFiber, currentFirstChild);\n return null;\n }\n\n // Single element optimization\n if (elements.length === 1 && !Array.isArray(elements[0])) {\n return reconcileSingleChild(returnFiber, currentFirstChild, elements[0]!, lanes);\n }\n\n // Multi-child reconciliation with keyed diffing\n return reconcileChildArray(returnFiber, currentFirstChild, elements, lanes);\n}\n\n/**\n * Reconcile when there's only a single new child.\n */\nfunction reconcileSingleChild(\n returnFiber: Fiber,\n currentFirstChild: Fiber | null,\n element: SpecElement | string | number,\n lanes: number,\n): Fiber {\n if (typeof element === 'string' || typeof element === 'number') {\n return reconcileSingleTextNode(returnFiber, currentFirstChild, element, lanes);\n }\n\n const key = element.key;\n let child = currentFirstChild;\n\n // Search existing children for a match by key and type\n while (child !== null) {\n if (child.key === key) {\n if (isSameType(child, element)) {\n // Reuse this fiber, delete siblings\n deleteRemainingChildren(returnFiber, child.sibling);\n const existing = useFiber(child, element.props);\n existing.ref = element.ref;\n existing.return = returnFiber;\n return existing;\n }\n // Key matches but type differs \u2014 delete this and all siblings\n deleteRemainingChildren(returnFiber, child);\n break;\n } else {\n // Key doesn't match, mark for deletion\n deleteChild(returnFiber, child);\n }\n child = child.sibling;\n }\n\n // No match found \u2014 create new fiber\n const created = createFiberFromElement(element, lanes);\n created.ref = element.ref;\n created.return = returnFiber;\n created.effectTag = EffectTag.Placement;\n return created;\n}\n\n/**\n * Reconcile a single text node.\n */\nfunction reconcileSingleTextNode(\n returnFiber: Fiber,\n currentFirstChild: Fiber | null,\n content: string | number,\n lanes: number,\n): Fiber {\n // If there's an existing text node, reuse it\n if (currentFirstChild !== null && currentFirstChild.tag === FiberTag.HostText) {\n deleteRemainingChildren(returnFiber, currentFirstChild.sibling);\n const existing = useFiber(currentFirstChild, { text: content } as unknown as Props);\n existing.return = returnFiber;\n return existing;\n }\n\n // Delete all existing children and create a fresh text fiber\n deleteRemainingChildren(returnFiber, currentFirstChild);\n const created = createFiberFromText(content, lanes);\n created.return = returnFiber;\n created.effectTag = EffectTag.Placement;\n return created;\n}\n\n/**\n * Multi-child reconciliation using React's two-pass algorithm:\n * 1. Linear scan for in-order matches\n * 2. Map-based search for out-of-order matches\n */\nfunction reconcileChildArray(\n returnFiber: Fiber,\n currentFirstChild: Fiber | null,\n newChildren: Array<SpecElement | string | number>,\n lanes: number,\n): Fiber | null {\n let resultingFirstChild: Fiber | null = null;\n let previousNewFiber: Fiber | null = null;\n\n let oldFiber = currentFirstChild;\n let newIdx = 0;\n let lastPlacedIndex = 0;\n let nextOldFiber: Fiber | null = null;\n\n // Pass 1: Walk old and new children in order, matching by key\n for (; oldFiber !== null && newIdx < newChildren.length; newIdx++) {\n if (oldFiber.index > newIdx) {\n nextOldFiber = oldFiber;\n oldFiber = null;\n } else {\n nextOldFiber = oldFiber.sibling;\n }\n\n const newChild = newChildren[newIdx]!;\n const newFiber = updateSlot(returnFiber, oldFiber, newChild, lanes);\n\n if (newFiber === null) {\n // Keys don't match \u2014 break out to pass 2\n if (oldFiber === null) {\n oldFiber = nextOldFiber;\n }\n break;\n }\n\n if (oldFiber && newFiber.alternate === null) {\n // New fiber was created (not reused), delete the old one\n deleteChild(returnFiber, oldFiber);\n }\n\n lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n\n if (previousNewFiber === null) {\n resultingFirstChild = newFiber;\n } else {\n previousNewFiber.sibling = newFiber;\n }\n previousNewFiber = newFiber;\n oldFiber = nextOldFiber;\n }\n\n // If we've consumed all new children, delete remaining old ones\n if (newIdx === newChildren.length) {\n deleteRemainingChildren(returnFiber, oldFiber);\n return resultingFirstChild;\n }\n\n // If no more old children, append remaining new children\n if (oldFiber === null) {\n for (; newIdx < newChildren.length; newIdx++) {\n const newFiber = createChild(returnFiber, newChildren[newIdx]!, lanes);\n if (newFiber === null) continue;\n\n lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n\n if (previousNewFiber === null) {\n resultingFirstChild = newFiber;\n } else {\n previousNewFiber.sibling = newFiber;\n }\n previousNewFiber = newFiber;\n }\n return resultingFirstChild;\n }\n\n // Pass 2: Build a map of remaining old children by key, then match\n const existingChildren = mapRemainingChildren(oldFiber);\n\n for (; newIdx < newChildren.length; newIdx++) {\n const newChild = newChildren[newIdx]!;\n const newFiber = updateFromMap(returnFiber, existingChildren, newChild, newIdx, lanes);\n\n if (newFiber !== null) {\n if (newFiber.alternate !== null) {\n // We reused an existing fiber \u2014 remove it from the map\n const key = newFiber.key !== null ? newFiber.key : newIdx;\n existingChildren.delete(key);\n }\n\n lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n\n if (previousNewFiber === null) {\n resultingFirstChild = newFiber;\n } else {\n previousNewFiber.sibling = newFiber;\n }\n previousNewFiber = newFiber;\n }\n }\n\n // Delete any remaining old children that weren't matched\n existingChildren.forEach((child) => {\n deleteChild(returnFiber, child);\n });\n\n return resultingFirstChild;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction isSameType(fiber: Fiber, element: SpecElement): boolean {\n return fiber.type === element.type;\n}\n\nfunction useFiber(fiber: Fiber, pendingProps: Props): Fiber {\n const clone = createWorkInProgressFromFiber(fiber, pendingProps);\n clone.index = 0;\n clone.sibling = null;\n return clone;\n}\n\nfunction createWorkInProgressFromFiber(current: Fiber, pendingProps: Props): Fiber {\n let wip = current.alternate;\n\n if (wip === null) {\n wip = {\n ...current,\n pendingProps,\n effectTag: EffectTag.NoEffect,\n child: null,\n sibling: null,\n alternate: current,\n };\n current.alternate = wip;\n } else {\n wip.pendingProps = pendingProps;\n wip.effectTag = EffectTag.NoEffect;\n wip.child = null;\n wip.sibling = null;\n }\n\n wip.memoizedProps = current.memoizedProps;\n wip.memoizedState = current.memoizedState;\n wip.updateQueue = current.updateQueue;\n\n return wip;\n}\n\nfunction updateSlot(\n returnFiber: Fiber,\n oldFiber: Fiber | null,\n newChild: SpecElement | string | number,\n lanes: number,\n): Fiber | null {\n const oldKey = oldFiber !== null ? oldFiber.key : null;\n\n // Text nodes have no key\n if (typeof newChild === 'string' || typeof newChild === 'number') {\n if (oldKey !== null) return null; // Key mismatch\n return updateTextNode(returnFiber, oldFiber, newChild, lanes);\n }\n\n // Element nodes\n if (isValidElement(newChild)) {\n const element = newChild as SpecElement;\n if (element.key === oldKey) {\n return updateElement(returnFiber, oldFiber, element, lanes);\n }\n return null; // Key mismatch\n }\n\n return null;\n}\n\nfunction updateTextNode(\n returnFiber: Fiber,\n current: Fiber | null,\n content: string | number,\n lanes: number,\n): Fiber {\n if (current === null || current.tag !== FiberTag.HostText) {\n const created = createFiberFromText(content, lanes);\n created.return = returnFiber;\n created.effectTag = EffectTag.Placement;\n return created;\n }\n const existing = useFiber(current, { text: content } as unknown as Props);\n existing.return = returnFiber;\n return existing;\n}\n\nfunction updateElement(\n returnFiber: Fiber,\n current: Fiber | null,\n element: SpecElement,\n lanes: number,\n): Fiber {\n if (current !== null && current.type === element.type) {\n const existing = useFiber(current, element.props);\n existing.ref = element.ref;\n existing.return = returnFiber;\n return existing;\n }\n const created = createFiberFromElement(element, lanes);\n created.ref = element.ref;\n created.return = returnFiber;\n created.effectTag = EffectTag.Placement;\n return created;\n}\n\nfunction createChild(\n returnFiber: Fiber,\n newChild: SpecElement | string | number,\n lanes: number,\n): Fiber | null {\n if (typeof newChild === 'string' || typeof newChild === 'number') {\n const created = createFiberFromText(newChild, lanes);\n created.return = returnFiber;\n created.effectTag = EffectTag.Placement;\n return created;\n }\n if (isValidElement(newChild)) {\n const created = createFiberFromElement(newChild as SpecElement, lanes);\n created.ref = (newChild as SpecElement).ref;\n created.return = returnFiber;\n created.effectTag = EffectTag.Placement;\n return created;\n }\n return null;\n}\n\nfunction placeChild(fiber: Fiber, lastPlacedIndex: number, newIndex: number): number {\n fiber.index = newIndex;\n\n const current = fiber.alternate;\n if (current !== null) {\n const oldIndex = current.index;\n if (oldIndex < lastPlacedIndex) {\n // This item moved forward\n fiber.effectTag = EffectTag.Placement;\n return lastPlacedIndex;\n }\n return oldIndex;\n }\n // New insertion\n fiber.effectTag = EffectTag.Placement;\n return lastPlacedIndex;\n}\n\nfunction deleteChild(returnFiber: Fiber, childToDelete: Fiber): void {\n childToDelete.effectTag = EffectTag.Deletion;\n // Track deletions on the parent\n if (!returnFiber.updateQueue) {\n returnFiber.updateQueue = [];\n }\n (returnFiber.updateQueue as Fiber[]).push(childToDelete);\n}\n\nfunction deleteRemainingChildren(returnFiber: Fiber, currentFirstChild: Fiber | null): void {\n let child = currentFirstChild;\n while (child !== null) {\n deleteChild(returnFiber, child);\n child = child.sibling;\n }\n}\n\nfunction mapRemainingChildren(currentFirstChild: Fiber): Map<Key | number, Fiber> {\n const map = new Map<Key | number, Fiber>();\n let child: Fiber | null = currentFirstChild;\n while (child !== null) {\n const key = child.key !== null ? child.key : child.index;\n map.set(key, child);\n child = child.sibling;\n }\n return map;\n}\n\nfunction updateFromMap(\n returnFiber: Fiber,\n existingChildren: Map<Key | number, Fiber>,\n newChild: SpecElement | string | number,\n newIndex: number,\n lanes: number,\n): Fiber | null {\n if (typeof newChild === 'string' || typeof newChild === 'number') {\n const matchedFiber = existingChildren.get(newIndex) || null;\n return updateTextNode(returnFiber, matchedFiber, newChild, lanes);\n }\n\n if (isValidElement(newChild)) {\n const element = newChild as SpecElement;\n const key = element.key !== null ? element.key : newIndex;\n const matchedFiber = existingChildren.get(key) || null;\n return updateElement(returnFiber, matchedFiber, element, lanes);\n }\n\n return null;\n}\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\nimport type { Fiber } from '../shared/types';\n\n/**\n * Internal hook state management.\n * Each fiber maintains a linked list of hook states.\n */\n\nexport interface Hook {\n memoizedState: unknown;\n queue: HookUpdate[] | null;\n next: Hook | null;\n}\n\nexport interface HookUpdate {\n action: unknown;\n}\n\nexport interface EffectHook {\n tag: EffectHookTag;\n create: () => void | (() => void);\n destroy: (() => void) | null | undefined;\n deps: readonly unknown[] | undefined;\n next: EffectHook | null;\n}\n\nexport const enum EffectHookTag {\n NoEffect = 0,\n HasEffect = 1,\n Layout = 2,\n Passive = 4,\n Insertion = 8,\n}\n\n// The currently rendering fiber and its hook cursor\nlet currentlyRenderingFiber: Fiber | null = null;\nlet workInProgressHook: Hook | null = null;\nlet currentHook: Hook | null = null;\nlet hookIndex = 0;\n\n// Effect lists per fiber\nlet effectListHead: EffectHook | null = null;\nlet effectListTail: EffectHook | null = null;\n\nexport function setCurrentFiber(fiber: Fiber | null): void {\n currentlyRenderingFiber = fiber;\n workInProgressHook = null;\n currentHook = null;\n hookIndex = 0;\n effectListHead = null;\n effectListTail = null;\n}\n\nexport function getCurrentFiber(): Fiber | null {\n return currentlyRenderingFiber;\n}\n\nexport function getCurrentHookIndex(): number {\n return hookIndex;\n}\n\n/* v8 ignore start -- internal utility, tested indirectly */\nexport function getHookIndex(): number {\n return hookIndex;\n}\n/* v8 ignore stop */\n\n/**\n * Allocate the next hook slot for the currently rendering fiber.\n * On mount: creates a new hook.\n * On update: advances to the next existing hook.\n */\nexport function allocateHook(): Hook {\n let hook: Hook;\n\n if (currentlyRenderingFiber === null) {\n throw new Error('Hooks can only be called inside a function component.');\n }\n\n const alternate = currentlyRenderingFiber.alternate;\n\n if (alternate !== null) {\n // Update path: clone from the previous render\n if (currentHook === null) {\n currentHook = (alternate.memoizedState as Hook) ?? null;\n } else {\n currentHook = currentHook.next;\n }\n\n if (currentHook === null) {\n throw new Error('Rendered more hooks than during the previous render.');\n }\n\n hook = {\n memoizedState: currentHook.memoizedState,\n queue: currentHook.queue,\n next: null,\n };\n } else {\n // Mount path: create fresh hook\n hook = {\n memoizedState: null,\n queue: null,\n next: null,\n };\n }\n\n // Append to the fiber's hook linked list\n if (workInProgressHook === null) {\n currentlyRenderingFiber.memoizedState = hook;\n workInProgressHook = hook;\n } else {\n workInProgressHook.next = hook;\n workInProgressHook = hook;\n }\n\n hookIndex++;\n return hook;\n}\n\n/**\n * Push an effect onto the current fiber's effect list.\n */\nexport function pushEffect(\n tag: EffectHookTag,\n create: () => void | (() => void),\n destroy: (() => void) | null | undefined,\n deps: readonly unknown[] | undefined,\n): EffectHook {\n const effect: EffectHook = {\n tag,\n create,\n destroy,\n deps,\n next: null,\n };\n\n if (effectListTail === null) {\n effectListHead = effect;\n effectListTail = effect;\n } else {\n effectListTail.next = effect;\n effectListTail = effect;\n }\n\n return effect;\n}\n\nexport function getEffectList(): EffectHook | null {\n return effectListHead;\n}\n\n/**\n * Compare dependency arrays.\n */\nexport function areDepsEqual(\n prevDeps: readonly unknown[] | undefined,\n nextDeps: readonly unknown[] | undefined,\n): boolean {\n if (prevDeps === undefined || nextDeps === undefined) {\n return false;\n }\n if (prevDeps.length !== nextDeps.length) {\n return false;\n }\n for (let i = 0; i < prevDeps.length; i++) {\n if (!Object.is(prevDeps[i], nextDeps[i])) {\n return false;\n }\n }\n return true;\n}\n", "// ============================================================================\n// SpecifyJS Hooks\n// ============================================================================\n// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\nimport type { SpecContext } from '../shared/types';\n\n// Internal: the currently rendering fiber sets these\ntype Dispatcher = {\n useState: typeof useState;\n useEffect: typeof useEffect;\n useContext: typeof useContext;\n useReducer: typeof useReducer;\n useCallback: typeof useCallback;\n useMemo: typeof useMemo;\n useRef: typeof useRef;\n useImperativeHandle: typeof useImperativeHandle;\n useLayoutEffect: typeof useLayoutEffect;\n useDebugValue: typeof useDebugValue;\n useId: typeof useId;\n useDeferredValue: typeof useDeferredValue;\n useTransition: typeof useTransition;\n useSyncExternalStore: typeof useSyncExternalStore;\n useInsertionEffect: typeof useInsertionEffect;\n};\n\nlet currentDispatcher: Dispatcher | null = null;\n\nexport function __setDispatcher(dispatcher: Dispatcher | null): void {\n currentDispatcher = dispatcher;\n}\n\nexport function __getDispatcher(): Dispatcher | null {\n return currentDispatcher;\n}\n\nfunction resolveDispatcher(): Dispatcher {\n if (currentDispatcher === null) {\n throw new Error(\n 'Invalid hook call. Hooks can only be called inside the body of a function component.',\n );\n }\n return currentDispatcher;\n}\n\nexport function useState<T>(\n initialState: T | (() => T),\n): [T, (action: T | ((prev: T) => T)) => void] {\n return resolveDispatcher().useState(initialState);\n}\n\nexport function useEffect(create: () => void | (() => void), deps?: readonly unknown[]): void {\n return resolveDispatcher().useEffect(create, deps);\n}\n\nexport function useContext<T>(context: SpecContext<T>): T {\n return resolveDispatcher().useContext(context);\n}\n\nexport function useReducer<S, A>(\n reducer: (state: S, action: A) => S,\n initialArg: S,\n init?: (arg: S) => S,\n): [S, (action: A) => void] {\n return resolveDispatcher().useReducer(reducer, initialArg, init);\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function useCallback<T extends (...args: any[]) => any>(\n callback: T,\n deps: readonly unknown[],\n): T {\n return resolveDispatcher().useCallback(callback, deps);\n}\n\nexport function useMemo<T>(factory: () => T, deps: readonly unknown[]): T {\n return resolveDispatcher().useMemo(factory, deps);\n}\n\nexport function useRef<T>(initialValue: T): { current: T };\nexport function useRef<T>(initialValue: T | null): { current: T | null };\nexport function useRef<T>(): { current: T | undefined };\nexport function useRef<T>(initialValue?: T): { current: T | undefined } {\n return resolveDispatcher().useRef(initialValue);\n}\n\nexport function useImperativeHandle<T>(\n ref: { current: T | null } | ((instance: T | null) => void) | null,\n createHandle: () => T,\n deps?: readonly unknown[],\n): void {\n return resolveDispatcher().useImperativeHandle(ref, createHandle, deps);\n}\n\nexport function useLayoutEffect(\n create: () => void | (() => void),\n deps?: readonly unknown[],\n): void {\n return resolveDispatcher().useLayoutEffect(create, deps);\n}\n\nexport function useDebugValue<T>(value: T, format?: (value: T) => unknown): void {\n return resolveDispatcher().useDebugValue(value, format);\n}\n\nexport function useId(): string {\n return resolveDispatcher().useId();\n}\n\nexport function useDeferredValue<T>(value: T): T {\n return resolveDispatcher().useDeferredValue(value);\n}\n\nexport function useTransition(): [boolean, (callback: () => void) => void] {\n return resolveDispatcher().useTransition();\n}\n\nexport function useSyncExternalStore<T>(\n subscribe: (onStoreChange: () => void) => () => void,\n getSnapshot: () => T,\n getServerSnapshot?: () => T,\n): T {\n return resolveDispatcher().useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n\nexport function useInsertionEffect(\n create: () => void | (() => void),\n deps?: readonly unknown[],\n): void {\n return resolveDispatcher().useInsertionEffect(create, deps);\n}\n\n// Custom hooks (not dispatcher-based)\nexport { useHead } from './use-head';\nexport type { HeadMeta, HeadHttpEquiv } from './use-head';\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\n/**\n * Minimal scheduler for batching updates and scheduling work.\n * This is the internal engine that drives re-renders.\n */\n\ntype Task = () => void;\n\nconst MAX_PENDING_TASKS = 10000;\nlet isBatchingUpdates = false;\nlet pendingTasks: Task[] = [];\n\n/**\n * Schedule a task. If inside a batch, it's deferred.\n * Otherwise it runs synchronously (or via microtask).\n */\nexport function scheduleUpdate(task: Task): void {\n if (isBatchingUpdates) {\n if (pendingTasks.length >= MAX_PENDING_TASKS) {\n if (typeof console !== 'undefined')\n console.warn(\n '[SpecifyJS] Scheduler: pending task queue exceeded 10000 \u2014 dropping oldest tasks',\n );\n pendingTasks = pendingTasks.slice(-Math.floor(MAX_PENDING_TASKS / 2));\n }\n pendingTasks.push(task);\n return;\n }\n task();\n}\n\n/**\n * Run a callback inside a batch \u2014 all updates are deferred\n * until the batch completes.\n */\nexport function batchUpdates<T>(fn: () => T): T {\n const prevBatching = isBatchingUpdates;\n isBatchingUpdates = true;\n try {\n return fn();\n } finally {\n isBatchingUpdates = prevBatching;\n if (!isBatchingUpdates) {\n flushPendingTasks();\n }\n }\n}\n\n/**\n * Flush all pending tasks synchronously.\n */\nexport function flushPendingTasks(): void {\n const tasks = pendingTasks;\n pendingTasks = [];\n for (const task of tasks) {\n task();\n }\n}\n\n/**\n * Schedule work via microtask for async batching.\n */\nexport function scheduleMicrotask(fn: () => void): void {\n if (typeof queueMicrotask === 'function') {\n queueMicrotask(fn);\n } else {\n /* v8 ignore next -- Promise fallback for environments without queueMicrotask */\n Promise.resolve().then(fn);\n }\n}\n\n/**\n * Check if we're currently batching.\n */\nexport function isBatching(): boolean {\n return isBatchingUpdates;\n}\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\n/**\n * Lane-based priority system for concurrent rendering.\n *\n * Lanes are bitmask values representing priority levels. Lower bits = higher\n * priority. Multiple lanes can be active simultaneously. The scheduler uses\n * lanes to determine which work to process first and whether to interrupt\n * lower-priority work for higher-priority updates.\n */\n\n// ---------------------------------------------------------------------------\n// Lane constants (bitmask values, lower = higher priority)\n// ---------------------------------------------------------------------------\n\nexport const NoLane = 0;\nexport const NoLanes = 0;\n\n/** Synchronous, blocking \u2014 used by flushSync */\nexport const SyncLane = /* .............. */ 0b00000001; // 1\n\n/** Continuous user input \u2014 drag, scroll, hover */\nexport const InputContinuousLane = /* ... */ 0b00000010; // 2\n\n/** Default priority \u2014 normal state updates */\nexport const DefaultLane = /* ........... */ 0b00000100; // 4\n\n/** First transition lane \u2014 startTransition */\nexport const TransitionLane1 = /* ....... */ 0b00001000; // 8\n\n/** Second transition lane \u2014 concurrent transitions */\nexport const TransitionLane2 = /* ....... */ 0b00010000; // 16\n\n/** Retry lane \u2014 Suspense retries */\nexport const RetryLane = /* ............. */ 0b00100000; // 32\n\n/** Idle priority \u2014 offscreen/low-priority work */\nexport const IdleLane = /* .............. */ 0b01000000; // 64\n\n/** Offscreen rendering (future) */\nexport const OffscreenLane = /* ......... */ 0b10000000; // 128\n\n/** All non-idle lanes */\nexport const NonIdleLanes =\n SyncLane | InputContinuousLane | DefaultLane | TransitionLane1 | TransitionLane2 | RetryLane;\n\n// ---------------------------------------------------------------------------\n// Lane utilities\n// ---------------------------------------------------------------------------\n\n/** Combine two lane sets. */\nexport function mergeLanes(a: number, b: number): number {\n return a | b;\n}\n\n/** Check if `subset` is entirely contained within `set`. */\nexport function isSubsetOfLanes(set: number, subset: number): boolean {\n return (set & subset) === subset;\n}\n\n/** Check if `a` and `b` share any lanes. */\nexport function includesSomeLane(a: number, b: number): boolean {\n return (a & b) !== NoLanes;\n}\n\n/** Remove `subset` lanes from `set`. */\nexport function removeLanes(set: number, subset: number): number {\n return set & ~subset;\n}\n\n/**\n * Isolate the highest-priority (lowest-bit) lane from a lane set.\n * Uses the two's complement trick: `lanes & -lanes` isolates the rightmost set bit.\n */\nexport function getHighestPriorityLane(lanes: number): number {\n return lanes & -lanes;\n}\n\n/** Check if a lane set is empty. */\nexport function isEmpty(lanes: number): boolean {\n return lanes === NoLanes;\n}\n\n// ---------------------------------------------------------------------------\n// Lane expiration \u2014 starvation prevention\n// ---------------------------------------------------------------------------\n\n/** Timeout in ms before a pending lane is promoted to SyncLane. -1 = never. */\nexport function laneExpirationMs(lane: number): number {\n switch (lane) {\n case SyncLane:\n case InputContinuousLane:\n return -1; // Already highest priority\n case DefaultLane:\n return 5000;\n case TransitionLane1:\n case TransitionLane2:\n return 5000;\n case RetryLane:\n return 5000;\n case IdleLane:\n case OffscreenLane:\n return -1; // Never expire \u2014 only run when idle\n default:\n return -1;\n }\n}\n\n/**\n * Pick the next transition lane. Alternates between TransitionLane1 and\n * TransitionLane2 to allow two concurrent transitions.\n */\nlet nextTransitionLane: number = TransitionLane1;\n\nexport function claimNextTransitionLane(): number {\n const lane = nextTransitionLane;\n nextTransitionLane = lane === TransitionLane1 ? TransitionLane2 : TransitionLane1;\n return lane;\n}\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\n/**\n * Transition system for marking non-urgent updates.\n *\n * Integrates with the lane system to assign lower priority to state updates\n * made inside startTransition. Also tracks flushSync context.\n */\n\nimport { DefaultLane, SyncLane, claimNextTransitionLane } from './lanes';\n\n// ---------------------------------------------------------------------------\n// Lane context \u2014 tracks which lane new updates should be assigned to\n// ---------------------------------------------------------------------------\n\nlet currentUpdateLane: number = DefaultLane;\nlet isTransitionPending = false;\nlet isFlushSyncContext = false;\nlet transitionCallbacks: (() => void)[] = [];\n\n/**\n * Get the lane that should be assigned to a new state update.\n * Respects the current context: flushSync \u2192 SyncLane,\n * startTransition \u2192 TransitionLane, else DefaultLane.\n */\nexport function requestUpdateLane(): number {\n if (isFlushSyncContext) {\n return SyncLane;\n }\n return currentUpdateLane;\n}\n\n/**\n * Enter flushSync context. State updates within will use SyncLane.\n */\nexport function enterFlushSyncContext(): void {\n isFlushSyncContext = true;\n}\n\n/**\n * Exit flushSync context.\n */\nexport function exitFlushSyncContext(): void {\n isFlushSyncContext = false;\n}\n\n// ---------------------------------------------------------------------------\n// startTransition\n// ---------------------------------------------------------------------------\n\n/**\n * Marks a state update as a transition (non-urgent).\n * Equivalent to React.startTransition.\n *\n * State updates called within the callback receive TransitionLane priority\n * instead of DefaultLane, allowing them to be interrupted by higher-priority\n * updates (user input, flushSync, etc.).\n */\nexport function startTransition(callback: () => void): void {\n const prevLane = currentUpdateLane;\n const prevPending = isTransitionPending;\n\n currentUpdateLane = claimNextTransitionLane();\n isTransitionPending = true;\n\n try {\n callback();\n } finally {\n currentUpdateLane = prevLane;\n isTransitionPending = prevPending;\n flushTransitions();\n }\n}\n\n/**\n * Check if we're currently inside a transition.\n */\nexport function isInTransition(): boolean {\n return isTransitionPending;\n}\n\n/**\n * Queue a callback to run at the end of the current transition batch.\n */\nexport function queueTransitionCallback(callback: () => void): void {\n transitionCallbacks.push(callback);\n}\n\nfunction flushTransitions(): void {\n const callbacks = transitionCallbacks;\n transitionCallbacks = [];\n for (const cb of callbacks) {\n cb();\n }\n}\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\n/**\n * Warning system for development-time diagnostics.\n * Warnings are suppressed in production builds.\n */\n\nconst MAX_WARNINGS = 1000;\nconst warnedMessages = new Set<string>();\n\n/**\n * Issue a one-time warning (deduplicated by message).\n */\nexport function warn(message: string): void {\n if (warnedMessages.has(message)) return;\n if (warnedMessages.size >= MAX_WARNINGS) return;\n warnedMessages.add(message);\n\n if (typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(`[SpecifyJS] ${message}`);\n }\n}\n\n/**\n * Issue an error-level warning.\n */\nexport function error(message: string): void {\n if (typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.error(`[SpecifyJS] ${message}`);\n }\n}\n\n/**\n * Issue a deprecation warning (one-time, deduplicated).\n * @param oldApi - The deprecated API name\n * @param newApi - The replacement API name\n * @param removeVersion - The version when the deprecated API will be removed\n */\nexport function deprecate(oldApi: string, newApi: string, removeVersion: string): void {\n warn(\n `DEPRECATED: \"${oldApi}\" is deprecated and will be removed in v${removeVersion}. Use \"${newApi}\" instead.`,\n );\n}\n\n/**\n * Reset warned messages (for testing).\n */\nexport function resetWarnings(): void {\n warnedMessages.clear();\n}\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\n/**\n * Render Guard \u2014 Development-time detection of infinite render loops,\n * effect cycles, and unstable hook dependencies.\n *\n * All checks are designed for zero overhead in production:\n * - Guards only run when `__DEV__` is true (tree-shaken in prod builds)\n * - Per-fiber tracking uses WeakMap so fibers are GC'd normally\n * - Warnings are deduplicated (each unique message fires once)\n *\n * Three detection strategies:\n *\n * 1. **Render loop detection** \u2014 Tracks how many times a component renders\n * within a single synchronous work cycle. If a component exceeds\n * MAX_RENDERS_PER_CYCLE (default 50), an error is thrown to break\n * the loop with a clear diagnostic message.\n *\n * 2. **Effect cycle detection** \u2014 Tracks how many times effects fire for\n * a given fiber within a single commit cycle. If effects exceed\n * MAX_EFFECTS_PER_CYCLE (default 25), a warning is emitted.\n *\n * 3. **Unstable dependency warnings** \u2014 Tracks effect dependency arrays\n * across renders. If an effect's deps change on every single render\n * for UNSTABLE_DEPS_THRESHOLD (default 5) consecutive renders,\n * a warning is emitted suggesting useMemo/useCallback.\n */\n\nimport { warn, error } from './warnings';\n\n// ---------------------------------------------------------------------------\n// Configuration\n// ---------------------------------------------------------------------------\n\n/** Max renders per component before we throw (breaks the loop) */\nconst MAX_RENDERS_PER_CYCLE = 50;\n\n/** Max effect executions per fiber per commit before warning */\nconst MAX_EFFECTS_PER_CYCLE = 25;\n\n/** Consecutive renders where deps change before warning about instability */\nconst UNSTABLE_DEPS_THRESHOLD = 5;\n\n// ---------------------------------------------------------------------------\n// Render loop detection\n// ---------------------------------------------------------------------------\n\ninterface RenderCount {\n count: number;\n cycleId: number;\n}\n\n/** Per-fiber render counts. Uses WeakMap so fibers can be GC'd. */\nconst fiberRenderCounts = new WeakMap<object, RenderCount>();\n\n/** Monotonically increasing cycle ID. Incremented each time a new work\n * cycle begins (performWork is called). */\nlet currentCycleId = 0;\n\n/**\n * Call at the start of each work cycle (performWork).\n * Resets the cycle ID so per-fiber counts start fresh.\n */\nexport function beginRenderCycle(): void {\n currentCycleId++;\n}\n\n/**\n * Call before each component render in reconcileFunctionComponent.\n * Tracks render count per fiber per cycle. Throws if limit exceeded.\n *\n * @param fiber - The fiber being rendered (used as WeakMap key)\n * @param componentName - Display name for diagnostics\n */\nexport function trackRender(fiber: object, componentName: string): void {\n let entry = fiberRenderCounts.get(fiber);\n if (!entry || entry.cycleId !== currentCycleId) {\n entry = { count: 0, cycleId: currentCycleId };\n fiberRenderCounts.set(fiber, entry);\n }\n entry.count++;\n\n if (entry.count > MAX_RENDERS_PER_CYCLE) {\n const msg =\n `Maximum update depth exceeded. Component \"${componentName}\" ` +\n `re-rendered ${entry.count} times in a single cycle. This usually means ` +\n `a useEffect or setState call is creating an infinite loop. Check that ` +\n `useEffect dependencies are stable (use useMemo/useCallback for objects/arrays).`;\n error(msg);\n // Reset count to prevent cascading errors\n entry.count = 0;\n throw new Error(`[SpecifyJS] ${msg}`);\n }\n}\n\n// ---------------------------------------------------------------------------\n// Effect cycle detection\n// ---------------------------------------------------------------------------\n\ninterface EffectCount {\n count: number;\n commitId: number;\n}\n\nconst fiberEffectCounts = new WeakMap<object, EffectCount>();\nlet currentCommitId = 0;\n\n/**\n * Call at the start of each commit phase (commitRoot).\n */\nexport function beginCommitCycle(): void {\n currentCommitId++;\n}\n\n/**\n * Call before each effect execution in runEffects.\n * Warns if effects fire too many times per commit cycle.\n *\n * @param fiber - The fiber owning the effect\n * @param componentName - Display name for diagnostics\n */\nexport function trackEffect(fiber: object, componentName: string): void {\n let entry = fiberEffectCounts.get(fiber);\n if (!entry || entry.commitId !== currentCommitId) {\n entry = { count: 0, commitId: currentCommitId };\n fiberEffectCounts.set(fiber, entry);\n }\n entry.count++;\n\n if (entry.count > MAX_EFFECTS_PER_CYCLE) {\n warn(\n `Effect cycle detected in \"${componentName}\". Effects fired ` +\n `${entry.count} times in a single commit. This may indicate an effect ` +\n `that triggers a state update on every run. Ensure effect dependencies ` +\n `are correct and stable.`,\n );\n }\n}\n\n// ---------------------------------------------------------------------------\n// Unstable dependency warnings\n// ---------------------------------------------------------------------------\n\ninterface DepsHistory {\n /** How many consecutive renders the deps changed */\n consecutiveChanges: number;\n /** Stringified deps from last render for comparison */\n lastDepsKey: string;\n /** Whether we already warned for this fiber+effect */\n warned: boolean;\n}\n\nconst fiberDepsHistory = new WeakMap<object, Map<number, DepsHistory>>();\n\n/**\n * Call when an effect's dependency comparison runs (in useEffect).\n * Detects deps that change on every render (unstable references).\n *\n * @param fiber - The fiber owning the effect\n * @param hookIndex - Which hook slot this effect occupies\n * @param deps - The current dependency array\n * @param depsChanged - Whether deps differed from previous render\n * @param componentName - Display name for diagnostics\n */\nexport function trackEffectDeps(\n fiber: object,\n hookIndex: number,\n deps: unknown[] | undefined,\n depsChanged: boolean,\n componentName: string,\n): void {\n if (!deps) return; // No deps = runs every render (intentional)\n\n let fiberMap = fiberDepsHistory.get(fiber);\n if (!fiberMap) {\n fiberMap = new Map();\n fiberDepsHistory.set(fiber, fiberMap);\n }\n\n let history = fiberMap.get(hookIndex);\n if (!history) {\n history = { consecutiveChanges: 0, lastDepsKey: '', warned: false };\n fiberMap.set(hookIndex, history);\n }\n\n if (depsChanged) {\n history.consecutiveChanges++;\n } else {\n history.consecutiveChanges = 0;\n }\n\n if (history.consecutiveChanges >= UNSTABLE_DEPS_THRESHOLD && !history.warned) {\n history.warned = true;\n warn(\n `Unstable useEffect dependencies in \"${componentName}\" (hook #${hookIndex}). ` +\n `Dependencies changed on ${history.consecutiveChanges} consecutive renders. ` +\n `This may cause unnecessary effect re-runs. Wrap objects/arrays in useMemo ` +\n `and functions in useCallback to stabilize references.`,\n );\n }\n}\n\n// ---------------------------------------------------------------------------\n// setState flood detection\n// ---------------------------------------------------------------------------\n\ninterface StateSetCount {\n count: number;\n frameId: number;\n}\n\nconst fiberStateSetCounts = new WeakMap<object, StateSetCount>();\nlet currentFrameId = 0;\n\n/** Call once per browser frame / microtask batch to reset frame ID. */\nexport function beginFrame(): void {\n currentFrameId++;\n}\n\n/**\n * Call when setState/dispatch is invoked.\n * Warns if a single fiber calls setState too many times in one frame.\n *\n * @param fiber - The fiber calling setState\n * @param componentName - Display name for diagnostics\n */\nexport function trackStateUpdate(fiber: object, componentName: string): void {\n let entry = fiberStateSetCounts.get(fiber);\n if (!entry || entry.frameId !== currentFrameId) {\n entry = { count: 0, frameId: currentFrameId };\n fiberStateSetCounts.set(fiber, entry);\n }\n entry.count++;\n\n if (entry.count === 100) {\n warn(\n `Rapid state updates in \"${componentName}\": setState called ` +\n `${entry.count} times in a single frame. This may indicate ` +\n `a loop or missing dependency optimization.`,\n );\n }\n}\n\n// ---------------------------------------------------------------------------\n// Reset (for testing)\n// ---------------------------------------------------------------------------\n\nexport function resetRenderGuard(): void {\n currentCycleId = 0;\n currentCommitId = 0;\n currentFrameId = 0;\n}\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\n/**\n * Component Registry \u2014 assigns compact, deterministic IDs to component instances.\n *\n * Each component TYPE gets a numeric index (0, 1, 2, ...) on first registration.\n * Each component INSTANCE gets a sequential instance number within its type.\n *\n * DOM elements receive: id=\"s-{typeIndex}-{instanceId}\"\n * Example: s-3-12 = type index 3, instance 12\n *\n * The lookup table at window.__SPECIFYJS_COMPONENTS__ maps indices to names\n * for debugging, testing, and programmatic interaction.\n */\n\ninterface ComponentTypeEntry {\n name: string;\n index: number;\n instanceCount: number;\n}\n\nconst typeMap = new Map<string, ComponentTypeEntry>();\nlet nextTypeIndex = 0;\nlet enabled = true;\n\n/**\n * Enable or disable component ID assignment.\n * When disabled, registerComponentInstance returns '' and no IDs are assigned.\n */\nexport function setComponentIdsEnabled(value: boolean): void {\n enabled = value;\n}\n\n/**\n * Register a component type and get a unique instance ID.\n * Returns the compact ID string: \"s-{typeIndex}-{instanceId}\"\n */\nexport function registerComponentInstance(componentName: string): string {\n if (!enabled) return '';\n let entry = typeMap.get(componentName);\n if (!entry) {\n entry = { name: componentName, index: nextTypeIndex++, instanceCount: 0 };\n typeMap.set(componentName, entry);\n updateGlobalLookup();\n }\n const instanceId = entry.instanceCount++;\n return `s-${entry.index}-${instanceId}`;\n}\n\n/**\n * Resolve a compact ID back to component metadata.\n * Returns null if the ID is not recognized.\n */\nexport function resolveComponentId(\n id: string,\n): { typeName: string; typeIndex: number; instanceId: number } | null {\n const match = id.match(/^s-(\\d+)-(\\d+)$/);\n if (!match || !match[1] || !match[2]) return null;\n const typeIndex = parseInt(match[1], 10);\n const instanceId = parseInt(match[2], 10);\n for (const entry of typeMap.values()) {\n if (entry.index === typeIndex) {\n return { typeName: entry.name, typeIndex, instanceId };\n }\n }\n return null;\n}\n\n/**\n * Get the full component type table (for debugging/DevTools).\n */\nexport function getComponentTypeTable(): ReadonlyMap<string, Readonly<ComponentTypeEntry>> {\n return typeMap;\n}\n\n/**\n * Update the global lookup table on window for debugging.\n */\nfunction updateGlobalLookup(): void {\n if (typeof globalThis !== 'undefined') {\n const lookup: Record<number, string> = {};\n for (const entry of typeMap.values()) {\n lookup[entry.index] = entry.name;\n }\n (globalThis as unknown as Record<string, unknown>).__SPECIFYJS_COMPONENTS__ = lookup;\n }\n}\n\n/**\n * Derive a short component name from a fiber's type.\n * - Function components: function.name\n * - Class components: constructor.name\n * - Host components: tag name\n * - Fragments/portals: type description\n */\nexport function getComponentName(type: unknown): string {\n if (typeof type === 'string') return type;\n if (typeof type === 'function') return (type as { name?: string }).name || 'Anonymous';\n if (type === null || type === undefined) return 'Unknown';\n return 'Component';\n}\n\n/**\n * Reset the registry (for testing).\n */\nexport function resetComponentRegistry(): void {\n typeMap.clear();\n nextTypeIndex = 0;\n}\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\n/**\n * The concrete hook implementations that get wired up as the dispatcher\n * when a function component is being rendered.\n */\n\nimport type { SpecContext, Fiber } from '../shared/types';\nimport {\n allocateHook,\n areDepsEqual,\n pushEffect,\n getCurrentFiber,\n getCurrentHookIndex,\n EffectHookTag,\n} from './hook-state';\nimport { scheduleUpdate } from '../core/scheduler';\nimport { requestUpdateLane, startTransition as startTransitionFn } from '../core/transitions';\nimport { mergeLanes } from '../core/lanes';\nimport { trackStateUpdate, trackEffectDeps } from '../shared/render-guard';\nimport { getComponentName } from '../shared/component-registry';\n\n// ---------------------------------------------------------------------------\n// Fiber render trigger \u2014 set by the work loop\n// ---------------------------------------------------------------------------\nlet rerenderFiber: ((fiber: Fiber) => void) | null = null;\n\nexport function setRerenderCallback(cb: ((fiber: Fiber) => void) | null): void {\n rerenderFiber = cb;\n}\n\nfunction getCurrentFiberForDispatch(): Fiber {\n const fiber = getCurrentFiber();\n /* v8 ignore start -- guard only triggers outside render context */\n if (!fiber) {\n throw new Error('Invalid hook call.');\n }\n /* v8 ignore stop */\n return fiber;\n}\n\n/**\n * Walk up from a fiber to the root, setting lane bits on each ancestor.\n * This propagates the lane information so ensureRootIsScheduled knows\n * what work is pending.\n */\nfunction markFiberWithLane(fiber: Fiber, lane: number): void {\n fiber.lanes = mergeLanes(fiber.lanes, lane);\n let node: Fiber | null = fiber.return;\n while (node !== null) {\n node.childLanes = mergeLanes(node.childLanes, lane);\n node = node.return;\n }\n}\n\n// ---------------------------------------------------------------------------\n// useState\n// ---------------------------------------------------------------------------\n\nexport function useStateImpl<T>(\n initialState: T | (() => T),\n): [T, (action: T | ((prev: T) => T)) => void] {\n const hook = allocateHook();\n\n // Mount: initialize state and queue\n if (hook.queue === null) {\n const initial = typeof initialState === 'function' ? (initialState as () => T)() : initialState;\n hook.memoizedState = initial;\n hook.queue = [];\n }\n\n // Process queued updates (mutate the same array to keep closure references valid)\n const queue = hook.queue!;\n if (queue.length > 0) {\n let state = hook.memoizedState as T;\n for (const update of queue) {\n const action = update.action as T | ((prev: T) => T);\n state = typeof action === 'function' ? (action as (prev: T) => T)(state) : action;\n }\n hook.memoizedState = state;\n queue.length = 0; // Clear in-place to keep reference stable\n }\n\n const state = hook.memoizedState as T;\n const fiber = getCurrentFiberForDispatch();\n\n const setState = (action: T | ((prev: T) => T)) => {\n // Dev-time: detect rapid setState floods\n const compName =\n (typeof fiber.type === 'function'\n ? getComponentName(fiber.type) || (fiber.type as { name?: string }).name\n : '') || 'Anonymous';\n trackStateUpdate(fiber, compName);\n\n const lane = requestUpdateLane();\n /* v8 ignore start -- overflow guard tested in security regression tests */\n if (queue.length >= 10000) {\n if (typeof console !== 'undefined')\n console.warn('[SpecifyJS] Hook update queue exceeded 10000 \u2014 dropping oldest updates');\n queue.splice(0, queue.length - 5000);\n }\n /* v8 ignore stop */\n queue.push({ action });\n markFiberWithLane(fiber, lane);\n if (rerenderFiber) {\n scheduleUpdate(() => rerenderFiber!(fiber));\n }\n };\n\n return [state, setState];\n}\n\n// ---------------------------------------------------------------------------\n// useReducer\n// ---------------------------------------------------------------------------\n\nexport function useReducerImpl<S, A>(\n reducer: (state: S, action: A) => S,\n initialArg: S,\n init?: (arg: S) => S,\n): [S, (action: A) => void] {\n const hook = allocateHook();\n\n // Mount: initialize state and queue\n if (hook.queue === null) {\n hook.memoizedState = init ? init(initialArg) : initialArg;\n hook.queue = [];\n }\n\n // Process queued actions (mutate in-place for stable reference)\n const queue = hook.queue!;\n if (queue.length > 0) {\n let state = hook.memoizedState as S;\n for (const update of queue) {\n state = reducer(state, update.action as A);\n }\n hook.memoizedState = state;\n queue.length = 0;\n }\n\n const state = hook.memoizedState as S;\n const fiber = getCurrentFiberForDispatch();\n\n const dispatch = (action: A) => {\n // Dev-time: detect rapid dispatch floods\n const dName =\n (typeof fiber.type === 'function'\n ? getComponentName(fiber.type) || (fiber.type as { name?: string }).name\n : '') || 'Anonymous';\n trackStateUpdate(fiber, dName);\n\n const lane = requestUpdateLane();\n queue.push({ action });\n markFiberWithLane(fiber, lane);\n if (rerenderFiber) {\n scheduleUpdate(() => rerenderFiber!(fiber));\n }\n };\n\n return [state, dispatch];\n}\n\n// ---------------------------------------------------------------------------\n// useEffect / useLayoutEffect / useInsertionEffect\n// ---------------------------------------------------------------------------\n\nfunction useEffectImpl(\n tag: EffectHookTag,\n create: () => void | (() => void),\n deps?: readonly unknown[],\n): void {\n const hook = allocateHook();\n const hIdx = getCurrentHookIndex();\n\n // On update, read the previous effect's destroy from the effect object itself\n // (runEffects sets destroy on the effect, not on hook.memoizedState)\n const prevState = hook.memoizedState as {\n deps?: readonly unknown[];\n effect?: { destroy?: (() => void) | null };\n } | null;\n const prevDestroy = prevState?.effect?.destroy ?? null;\n\n if (prevState !== null && deps !== undefined) {\n const depsMatch = areDepsEqual(prevState.deps, deps);\n\n // Dev-time: track dependency stability\n const fiber = getCurrentFiber();\n if (fiber) {\n const cName =\n (typeof fiber.type === 'function'\n ? getComponentName(fiber.type) || (fiber.type as { name?: string }).name\n : '') || 'Anonymous';\n trackEffectDeps(fiber, hIdx, deps as unknown[] | undefined, !depsMatch, cName);\n }\n\n if (depsMatch) {\n // Deps haven't changed, skip\n pushEffect(EffectHookTag.NoEffect, create, prevDestroy, deps);\n return;\n }\n }\n\n const effect = pushEffect(EffectHookTag.HasEffect | tag, create, prevDestroy, deps);\n hook.memoizedState = { deps, effect };\n}\n\nexport function useEffectDispatch(\n create: () => void | (() => void),\n deps?: readonly unknown[],\n): void {\n useEffectImpl(EffectHookTag.Passive, create, deps);\n}\n\nexport function useLayoutEffectDispatch(\n create: () => void | (() => void),\n deps?: readonly unknown[],\n): void {\n useEffectImpl(EffectHookTag.Layout, create, deps);\n}\n\nexport function useInsertionEffectDispatch(\n create: () => void | (() => void),\n deps?: readonly unknown[],\n): void {\n useEffectImpl(EffectHookTag.Insertion, create, deps);\n}\n\n// ---------------------------------------------------------------------------\n// useContext\n// ---------------------------------------------------------------------------\n\nexport function useContextImpl<T>(context: SpecContext<T>): T {\n allocateHook(); // reserve a slot for consistency\n return context._currentValue;\n}\n\n// ---------------------------------------------------------------------------\n// useCallback\n// ---------------------------------------------------------------------------\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function useCallbackImpl<T extends (...args: any[]) => any>(\n callback: T,\n deps: readonly unknown[],\n): T {\n const hook = allocateHook();\n\n const prevState = hook.memoizedState as [T, readonly unknown[]] | null;\n if (prevState !== null) {\n if (areDepsEqual(prevState[1], deps)) {\n return prevState[0];\n }\n }\n\n hook.memoizedState = [callback, deps];\n return callback;\n}\n\n// ---------------------------------------------------------------------------\n// useMemo\n// ---------------------------------------------------------------------------\n\nexport function useMemoImpl<T>(factory: () => T, deps: readonly unknown[]): T {\n const hook = allocateHook();\n\n const prevState = hook.memoizedState as [T, readonly unknown[]] | null;\n if (prevState !== null) {\n if (areDepsEqual(prevState[1], deps)) {\n return prevState[0];\n }\n }\n\n const value = factory();\n hook.memoizedState = [value, deps];\n return value;\n}\n\n// ---------------------------------------------------------------------------\n// useRef\n// ---------------------------------------------------------------------------\n\nexport function useRefImpl<T>(initialValue?: T): { current: T | undefined } {\n const hook = allocateHook();\n\n if (hook.memoizedState === null) {\n const ref = { current: initialValue };\n hook.memoizedState = ref;\n }\n\n return hook.memoizedState as { current: T | undefined };\n}\n\n// ---------------------------------------------------------------------------\n// useImperativeHandle\n// ---------------------------------------------------------------------------\n\nexport function useImperativeHandleImpl<T>(\n ref: { current: T | null } | ((instance: T | null) => void) | null,\n createHandle: () => T,\n deps?: readonly unknown[],\n): void {\n useEffectImpl(\n EffectHookTag.Layout,\n () => {\n const handle = createHandle();\n if (ref !== null) {\n if (typeof ref === 'function') {\n ref(handle);\n return () => ref(null);\n }\n (ref as { current: T | null }).current = handle;\n return () => {\n (ref as { current: T | null }).current = null;\n };\n }\n return undefined;\n },\n deps,\n );\n}\n\n// ---------------------------------------------------------------------------\n// useDebugValue\n// ---------------------------------------------------------------------------\n\nexport function useDebugValueImpl<T>(_value: T, _format?: (value: T) => unknown): void {\n // DevTools integration \u2014 no-op in production\n}\n\n// ---------------------------------------------------------------------------\n// useId\n// ---------------------------------------------------------------------------\n\nlet idCounter = 0;\n\nexport function resetIdCounter(): void {\n idCounter = 0;\n}\n\nexport function useIdImpl(): string {\n const hook = allocateHook();\n\n if (hook.memoizedState === null) {\n hook.memoizedState = `:l${idCounter++}:`;\n }\n\n return hook.memoizedState as string;\n}\n\n// ---------------------------------------------------------------------------\n// useDeferredValue\n// ---------------------------------------------------------------------------\n\nexport function useDeferredValueImpl<T>(value: T): T {\n const [deferredValue, setDeferredValue] = useStateImpl(value);\n\n // When the value changes, schedule a low-priority update to sync it\n useEffectImpl(\n EffectHookTag.Passive,\n () => {\n startTransitionFn(() => {\n setDeferredValue(value);\n });\n },\n [value],\n );\n\n return deferredValue;\n}\n\n// ---------------------------------------------------------------------------\n// useTransition\n// ---------------------------------------------------------------------------\n\nexport function useTransitionImpl(): [boolean, (callback: () => void) => void] {\n const [isPending, setIsPending] = useStateImpl(false);\n\n const startTransition = useCallbackImpl(\n ((callback: () => void) => {\n // Set isPending=true at DefaultLane (high priority \u2014 shows spinner immediately)\n setIsPending(true);\n\n // Run the callback inside startTransition \u2014 updates get TransitionLane\n startTransitionFn(() => {\n setIsPending(false); // This update gets TransitionLane (deferred)\n callback(); // User's updates also get TransitionLane\n });\n }) as (...args: unknown[]) => unknown,\n [setIsPending],\n ) as unknown as (callback: () => void) => void;\n\n return [isPending, startTransition];\n}\n\n// ---------------------------------------------------------------------------\n// useSyncExternalStore\n// ---------------------------------------------------------------------------\n\nexport function useSyncExternalStoreImpl<T>(\n subscribe: (onStoreChange: () => void) => () => void,\n getSnapshot: () => T,\n _getServerSnapshot?: () => T,\n): T {\n const hook = allocateHook();\n const fiber = getCurrentFiberForDispatch();\n\n const value = getSnapshot();\n hook.memoizedState = value;\n\n // Subscribe to store changes and trigger re-render\n useEffectImpl(\n EffectHookTag.Passive,\n () => {\n const unsubscribe = subscribe(() => {\n const nextValue = getSnapshot();\n if (!Object.is(hook.memoizedState, nextValue)) {\n hook.memoizedState = nextValue;\n if (rerenderFiber) {\n scheduleUpdate(() => rerenderFiber!(fiber));\n }\n }\n });\n return unsubscribe;\n },\n [subscribe, getSnapshot],\n );\n\n return value;\n}\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\n/**\n * Installs the concrete hook implementations as the active dispatcher.\n * Called by the work loop before rendering a function component.\n */\n\nimport { __setDispatcher } from './index';\nimport {\n useStateImpl,\n useReducerImpl,\n useEffectDispatch,\n useLayoutEffectDispatch,\n useInsertionEffectDispatch,\n useContextImpl,\n useCallbackImpl,\n useMemoImpl,\n useRefImpl,\n useImperativeHandleImpl,\n useDebugValueImpl,\n useIdImpl,\n useDeferredValueImpl,\n useTransitionImpl,\n useSyncExternalStoreImpl,\n} from './dispatcher';\n\nconst HooksDispatcher = {\n useState: useStateImpl,\n useEffect: useEffectDispatch,\n useContext: useContextImpl,\n useReducer: useReducerImpl,\n useCallback: useCallbackImpl,\n useMemo: useMemoImpl,\n useRef: useRefImpl,\n useImperativeHandle: useImperativeHandleImpl,\n useLayoutEffect: useLayoutEffectDispatch,\n useDebugValue: useDebugValueImpl,\n useId: useIdImpl,\n useDeferredValue: useDeferredValueImpl,\n useTransition: useTransitionImpl,\n useSyncExternalStore: useSyncExternalStoreImpl,\n useInsertionEffect: useInsertionEffectDispatch,\n};\n\nexport function installDispatcher(): void {\n __setDispatcher(HooksDispatcher as Parameters<typeof __setDispatcher>[0]);\n}\n\nexport function uninstallDispatcher(): void {\n __setDispatcher(null);\n}\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\n/**\n * DevTools integration hooks.\n * Allows browser extensions to inspect the SpecifyJS component tree.\n */\n\nimport type { Fiber } from '../shared/types';\n\ninterface DevToolsHook {\n onCommitFiberRoot?: (root: unknown) => void;\n onCommitFiberUnmount?: (fiber: Fiber) => void;\n supportsFiber?: boolean;\n}\n\nlet devToolsHook: DevToolsHook | null = null;\n\n/**\n * Connect to DevTools if available (e.g., via browser extension).\n */\nexport function connectDevTools(): void {\n if (\n typeof globalThis !== 'undefined' &&\n (globalThis as unknown as { __SPECIFY_DEVTOOLS_GLOBAL_HOOK__?: DevToolsHook })\n .__SPECIFY_DEVTOOLS_GLOBAL_HOOK__\n ) {\n devToolsHook = (globalThis as unknown as { __SPECIFY_DEVTOOLS_GLOBAL_HOOK__: DevToolsHook })\n .__SPECIFY_DEVTOOLS_GLOBAL_HOOK__;\n }\n}\n\n/**\n * Notify DevTools of a commit.\n */\nexport function notifyDevToolsOfCommit(root: unknown): void {\n devToolsHook?.onCommitFiberRoot?.(root);\n}\n\n/**\n * Notify DevTools of an unmount.\n */\nexport function notifyDevToolsOfUnmount(fiber: Fiber): void {\n devToolsHook?.onCommitFiberUnmount?.(fiber);\n}\n\n/**\n * Check if DevTools is connected.\n */\nexport function isDevToolsConnected(): boolean {\n return devToolsHook !== null;\n}\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\n/**\n * Host scheduling configuration for concurrent rendering.\n *\n * Abstracts the platform-specific scheduling primitives behind a swappable\n * interface. In browsers, uses MessageChannel for macrotask scheduling with\n * a 5ms frame budget. In tests, can be replaced with a controllable mock.\n */\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface SchedulerCallback {\n (): SchedulerCallback | null;\n}\n\nexport interface CallbackNode {\n callback: SchedulerCallback | null;\n cancelled: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Time\n// ---------------------------------------------------------------------------\n\nexport function getCurrentTime(): number {\n return typeof performance !== 'undefined' && typeof performance.now === 'function'\n ? performance.now()\n : /* v8 ignore next */ Date.now();\n}\n\n// ---------------------------------------------------------------------------\n// Frame budget \u2014 5ms per work slice (matches React)\n// ---------------------------------------------------------------------------\n\nconst FRAME_YIELD_MS = 5;\nlet deadline = 0;\n\nexport function shouldYieldToHost(): boolean {\n return getCurrentTime() >= deadline;\n}\n\nexport function resetDeadline(): void {\n deadline = getCurrentTime() + FRAME_YIELD_MS;\n}\n\n// ---------------------------------------------------------------------------\n// Callback scheduling via MessageChannel\n// ---------------------------------------------------------------------------\n\nlet scheduledCallback: SchedulerCallback | null = null;\nlet isMessageLoopRunning = false;\n\nfunction performWorkUntilDeadline(): void {\n if (scheduledCallback !== null) {\n resetDeadline();\n const cb = scheduledCallback;\n let hasMoreWork = false;\n try {\n const continuation = cb();\n if (typeof continuation === 'function') {\n scheduledCallback = continuation;\n hasMoreWork = true;\n } else {\n scheduledCallback = null;\n }\n } catch (err) /* v8 ignore start */ {\n scheduledCallback = null;\n isMessageLoopRunning = false;\n /* v8 ignore stop */\n throw err;\n }\n if (hasMoreWork) {\n schedulePerformWorkUntilDeadline();\n } else {\n isMessageLoopRunning = false;\n }\n } else {\n isMessageLoopRunning = false;\n }\n}\n\n// Set up the MessageChannel for scheduling.\n// In environments without MessageChannel (unlikely), fall back to setTimeout.\nlet schedulePerformWorkUntilDeadline: () => void;\n\nif (typeof MessageChannel !== 'undefined') {\n const channel = new MessageChannel();\n channel.port1.onmessage = performWorkUntilDeadline;\n schedulePerformWorkUntilDeadline = () => {\n channel.port2.postMessage(null);\n };\n} else /* v8 ignore start */ {\n schedulePerformWorkUntilDeadline = () => {\n setTimeout(performWorkUntilDeadline, 0);\n };\n} /* v8 ignore stop */\n\n/**\n * Schedule a callback to run asynchronously. Returns a handle for cancellation.\n * If the callback returns another function, that function is scheduled as a\n * continuation (the work was interrupted and needs to resume).\n */\nexport function scheduleCallback(callback: SchedulerCallback): CallbackNode {\n const node: CallbackNode = { callback, cancelled: false };\n scheduledCallback = callback;\n\n if (!isMessageLoopRunning) {\n isMessageLoopRunning = true;\n schedulePerformWorkUntilDeadline();\n }\n\n return node;\n}\n\n/**\n * Cancel a previously scheduled callback.\n */\nexport function cancelCallback(node: CallbackNode): void {\n node.cancelled = true;\n // If this was the active callback, clear it\n if (node.callback === scheduledCallback) {\n scheduledCallback = null;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Testing utilities\n// ---------------------------------------------------------------------------\n\n/**\n * Synchronously flush all pending scheduled work.\n * Only use in tests \u2014 in production, work is scheduled asynchronously.\n */\nexport function flushAllWork(): void {\n while (scheduledCallback !== null) {\n resetDeadline();\n const cb = scheduledCallback;\n const continuation = cb();\n if (typeof continuation === 'function') {\n scheduledCallback = continuation;\n } else {\n scheduledCallback = null;\n }\n }\n isMessageLoopRunning = false;\n}\n\n/**\n * Check if there is pending scheduled work.\n */\nexport function hasPendingWork(): boolean {\n return scheduledCallback !== null;\n}\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\n/**\n * Development-time ARIA compliance warnings.\n * Checks DOM element props for missing accessibility patterns\n * and warns developers via console.warn.\n */\n\nimport { warn } from './warnings';\n\nexport function checkAriaCompliance(tag: string, props: Record<string, unknown>): void {\n // Only warn in development\n if (typeof process !== 'undefined' && process.env?.NODE_ENV === 'production') return;\n\n // Interactive elements need accessible names\n if (tag === 'button' && !props.children && !props['aria-label'] && !props['aria-labelledby']) {\n warn(\n `<button> without text content or aria-label. Add text, aria-label, or aria-labelledby for accessibility.`,\n );\n }\n\n // Images need alt text\n if (tag === 'img' && props.alt === undefined) {\n warn(\n `<img> without alt attribute. Add alt=\"\" for decorative images or descriptive text for informative images.`,\n );\n }\n\n // Input elements need labels\n if (\n (tag === 'input' || tag === 'select' || tag === 'textarea') &&\n !props['aria-label'] &&\n !props['aria-labelledby'] &&\n !props.id\n ) {\n warn(\n `<${tag}> without aria-label, aria-labelledby, or id (for label[for]). Form controls need accessible names.`,\n );\n }\n\n // Clickable divs/spans should have role and keyboard support\n if ((tag === 'div' || tag === 'span') && props.onClick && !props.role) {\n warn(\n `<${tag}> with onClick but no role attribute. Add role=\"button\" and tabIndex={0} for keyboard accessibility.`,\n );\n }\n\n // role=\"button\" needs tabIndex for keyboard focus\n if (props.role === 'button' && props.tabIndex === undefined && tag !== 'button') {\n warn(\n `Element with role=\"button\" but no tabIndex. Add tabIndex={0} to make it keyboard-focusable.`,\n );\n }\n\n // Dialog needs aria-label or aria-labelledby\n if (props.role === 'dialog' && !props['aria-label'] && !props['aria-labelledby']) {\n warn(`Element with role=\"dialog\" needs aria-label or aria-labelledby.`);\n }\n\n // Links with target=\"_blank\" should have rel\n if (tag === 'a' && props.target === '_blank' && !props.rel) {\n warn(`<a target=\"_blank\"> without rel attribute. Add rel=\"noopener noreferrer\" for security.`);\n }\n\n // tablist needs aria-label or aria-labelledby\n if (props.role === 'tablist' && !props['aria-label'] && !props['aria-labelledby']) {\n warn(`Element with role=\"tablist\" needs aria-label or aria-labelledby.`);\n }\n}\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\n/**\n * The work loop drives the rendering pipeline:\n * 1. Begin work: traverse fibers, render components, reconcile children\n * 2. Complete work: build DOM nodes bottom-up\n * 3. Commit: apply mutations to the real DOM, run effects\n */\n\nimport {\n type Fiber,\n type Props,\n type SpecNode,\n type FunctionComponent,\n type ClassComponentInstance,\n FiberTag,\n EffectTag,\n SPEC_STRICT_MODE_TYPE,\n} from '../shared/types';\nimport { createHostRootFiber, createWorkInProgress } from '../core/fiber';\nimport { reconcileChildren } from '../core/reconciler';\nimport {\n setCurrentFiber,\n getEffectList,\n type EffectHook,\n EffectHookTag,\n} from '../hooks/hook-state';\nimport { installDispatcher, uninstallDispatcher } from '../hooks/install-dispatcher';\nimport { setRerenderCallback } from '../hooks/dispatcher';\nimport { scheduleMicrotask } from '../core/scheduler';\nimport { notifyDevToolsOfCommit } from '../devtools/index';\nimport {\n NoLanes,\n SyncLane,\n DefaultLane,\n includesSomeLane,\n getHighestPriorityLane,\n mergeLanes,\n removeLanes,\n} from '../core/lanes';\nimport {\n shouldYieldToHost,\n resetDeadline,\n scheduleCallback,\n cancelCallback,\n type CallbackNode,\n type SchedulerCallback,\n} from '../core/scheduler-host-config';\nimport { registerComponentInstance, getComponentName } from '../shared/component-registry';\nimport { checkAriaCompliance } from '../shared/aria-warnings';\nimport {\n beginRenderCycle,\n trackRender,\n beginCommitCycle,\n trackEffect,\n beginFrame,\n} from '../shared/render-guard';\n\n// ---------------------------------------------------------------------------\n// Root container state\n// ---------------------------------------------------------------------------\n\nexport interface FiberRoot {\n containerNode: Element | DocumentFragment;\n current: Fiber;\n pendingChildren: SpecNode;\n callbackScheduled: boolean;\n\n // Lane-based concurrent scheduling\n pendingLanes: number;\n suspendedLanes: number;\n expirationTimes: number[];\n callbackNode: unknown;\n callbackPriority: number;\n\n // Hydration\n isHydrating: boolean;\n}\n\nconst fiberRoots = new Map<Element | DocumentFragment, FiberRoot>();\n\nexport function createFiberRoot(container: Element | DocumentFragment): FiberRoot {\n const rootFiber = createHostRootFiber();\n rootFiber.stateNode = container;\n\n const root: FiberRoot = {\n containerNode: container,\n current: rootFiber,\n pendingChildren: null,\n callbackScheduled: false,\n\n // Lane-based concurrent scheduling (initialized to idle)\n pendingLanes: 0,\n suspendedLanes: 0,\n expirationTimes: new Array(8).fill(-1),\n callbackNode: null,\n callbackPriority: 0,\n\n // Hydration\n isHydrating: false,\n };\n\n return root;\n}\n\n// ---------------------------------------------------------------------------\n// Schedule and perform work\n// ---------------------------------------------------------------------------\n\nexport function scheduleRender(root: FiberRoot, children: SpecNode): void {\n root.pendingChildren = children;\n\n if (!root.callbackScheduled) {\n root.callbackScheduled = true;\n scheduleMicrotask(() => {\n root.callbackScheduled = false;\n performWork(root);\n });\n }\n}\n\nexport function performSyncWork(root: FiberRoot, children: SpecNode): void {\n root.pendingChildren = children;\n performWork(root);\n}\n\n/**\n * Schedule a re-render for the fiber tree containing the given fiber.\n * Walks up to the root and calls scheduleRender.\n * Used by both hook dispatchers and class component setState.\n */\nfunction scheduleUpdateOnFiber(fiber: Fiber): void {\n let node: Fiber | null = fiber;\n while (node?.return) {\n node = node.return;\n }\n if (node && node.stateNode) {\n const fRoot = findRootForContainer(node.stateNode as Element);\n if (fRoot) {\n scheduleRender(fRoot, fRoot.pendingChildren);\n }\n }\n}\n\n// Install a persistent re-render callback that routes state updates\n// back through scheduleRender for async batching.\nfunction installPersistentRerenderCallback(): void {\n setRerenderCallback((fiber: Fiber) => {\n scheduleUpdateOnFiber(fiber);\n });\n}\n\nfunction performWork(root: FiberRoot): void {\n // Begin a new render cycle \u2014 resets per-fiber render counters\n beginRenderCycle();\n beginFrame();\n\n // Ensure re-render callback is active\n installPersistentRerenderCallback();\n\n // Set up hydration context if this root is hydrating\n if (root.isHydrating) {\n activeHydrationRoot = root;\n hydrationCursor.clear();\n }\n\n const currentRoot = root.current;\n const wip = createWorkInProgress(currentRoot, {\n children: root.pendingChildren,\n } as Props);\n\n // Begin phase: walk the tree top-down (synchronous)\n workLoopSync(wip);\n\n // Commit phase: apply changes to DOM\n commitRoot(root, wip);\n\n // Swap the trees\n root.current = wip;\n\n // Clear hydration state\n if (root.isHydrating) {\n root.isHydrating = false;\n activeHydrationRoot = null;\n hydrationCursor.clear();\n }\n}\n\n// ---------------------------------------------------------------------------\n// Synchronous vs. concurrent work loops\n// ---------------------------------------------------------------------------\n\n/** Synchronous work loop \u2014 processes entire tree without yielding. */\nfunction workLoopSync(startFiber: Fiber): void {\n let unitOfWork: Fiber | null = startFiber;\n while (unitOfWork !== null) {\n unitOfWork = performUnitOfWork(unitOfWork);\n }\n}\n\n/** Concurrent work loop \u2014 yields to the host after each frame budget. */\nfunction workLoopConcurrent(startFiber: Fiber): Fiber | null {\n let unitOfWork: Fiber | null = startFiber;\n while (unitOfWork !== null && !shouldYieldToHost()) {\n unitOfWork = performUnitOfWork(unitOfWork);\n }\n return unitOfWork; // null = complete, non-null = interrupted\n}\n\n// ---------------------------------------------------------------------------\n// Concurrent rendering entry point\n// ---------------------------------------------------------------------------\n\n// Per-root state for interruptible rendering (M-10: no module-level singletons)\nconst rootWipState = new WeakMap<FiberRoot, { wipFiber: Fiber | null }>();\n\nfunction getWipState(root: FiberRoot): { wipFiber: Fiber | null } {\n let state = rootWipState.get(root);\n if (!state) {\n state = { wipFiber: null };\n rootWipState.set(root, state);\n }\n return state;\n}\n\n/**\n * Mark a root as having pending work at the given lane.\n */\nexport function markRootUpdated(root: FiberRoot, lane: number): void {\n root.pendingLanes = mergeLanes(root.pendingLanes, lane);\n}\n\n/**\n * Get the next lanes that should be worked on for a root.\n * Returns the highest-priority pending lane(s).\n */\nfunction getNextLanes(root: FiberRoot): number {\n const pendingLanes = root.pendingLanes;\n if (pendingLanes === NoLanes) return NoLanes;\n return getHighestPriorityLane(pendingLanes);\n}\n\n/**\n * Ensure that work is scheduled for a root. This is the central coordinator\n * that decides whether to use sync or concurrent rendering based on lanes.\n */\nexport function ensureRootIsScheduled(root: FiberRoot): void {\n const nextLanes = getNextLanes(root);\n\n if (nextLanes === NoLanes) {\n // No work to do \u2014 cancel any existing callback\n if (root.callbackNode !== null) {\n /* v8 ignore start -- environment-specific path */\n cancelCallback(root.callbackNode as CallbackNode);\n root.callbackNode = null;\n root.callbackPriority = NoLanes;\n /* v8 ignore stop */\n }\n return;\n }\n\n const highestPriority = getHighestPriorityLane(nextLanes);\n\n // If there's already a callback at this priority, don't schedule another\n if (root.callbackPriority === highestPriority && root.callbackNode !== null) {\n return;\n }\n\n // Cancel any existing lower-priority callback\n if (root.callbackNode !== null) {\n cancelCallback(root.callbackNode as CallbackNode);\n }\n\n // SyncLane and DefaultLane use synchronous rendering\n if (includesSomeLane(highestPriority, SyncLane | DefaultLane)) {\n // Schedule via microtask for batching (existing behavior)\n root.callbackNode = null;\n root.callbackPriority = highestPriority;\n\n if (!root.callbackScheduled) {\n root.callbackScheduled = true;\n scheduleMicrotask(() => {\n root.callbackScheduled = false;\n performSyncWorkOnRoot(root);\n });\n }\n } else {\n // Concurrent rendering for transition/idle lanes\n const callbackNode = scheduleCallback(() => {\n return performConcurrentWorkOnRoot(root);\n });\n root.callbackNode = callbackNode;\n root.callbackPriority = highestPriority;\n }\n}\n\n/**\n * Synchronous render for SyncLane and DefaultLane work.\n */\nfunction performSyncWorkOnRoot(root: FiberRoot): void {\n const lanes = getNextLanes(root);\n /* v8 ignore start -- environment-specific path */\n if (lanes === NoLanes) return;\n /* v8 ignore stop */\n\n installPersistentRerenderCallback();\n\n const currentRoot = root.current;\n const wip = createWorkInProgress(currentRoot, {\n children: root.pendingChildren,\n } as Props);\n\n const state = getWipState(root);\n state.wipFiber = wip;\n\n workLoopSync(wip);\n\n // Commit\n commitRoot(root, wip);\n root.current = wip;\n\n // Clear completed lanes\n root.pendingLanes = removeLanes(root.pendingLanes, lanes);\n root.callbackNode = null;\n root.callbackPriority = NoLanes;\n state.wipFiber = null;\n\n // Check if there's more work at a different priority\n ensureRootIsScheduled(root);\n}\n\n/**\n * Concurrent render for transition/idle lanes.\n * Returns a continuation function if work was interrupted,\n * or null if work is complete.\n */\nfunction performConcurrentWorkOnRoot(root: FiberRoot): SchedulerCallback | null {\n const lanes = getNextLanes(root);\n /* v8 ignore start -- environment-specific path */\n if (lanes === NoLanes) return null;\n /* v8 ignore stop */\n\n installPersistentRerenderCallback();\n\n const state = getWipState(root);\n\n // If we don't have a WIP fiber for this root, create one\n if (state.wipFiber === null) {\n const currentRoot = root.current;\n state.wipFiber = createWorkInProgress(currentRoot, {\n children: root.pendingChildren,\n } as Props);\n }\n\n resetDeadline();\n const remaining = workLoopConcurrent(state.wipFiber);\n\n if (remaining !== null) {\n // Work was interrupted \u2014 save position and return continuation\n /* v8 ignore start -- environment-specific path */\n state.wipFiber = remaining;\n return () => performConcurrentWorkOnRoot(root);\n /* v8 ignore stop */\n }\n\n // Work is complete \u2014 commit\n const finishedWork = state.wipFiber!;\n commitRoot(root, finishedWork);\n root.current = finishedWork;\n\n // Clear completed lanes\n root.pendingLanes = removeLanes(root.pendingLanes, lanes);\n root.callbackNode = null;\n root.callbackPriority = NoLanes;\n state.wipFiber = null;\n\n // Check for remaining work\n ensureRootIsScheduled(root);\n\n return null;\n}\n\nfunction findRootForContainer(container: unknown): FiberRoot | null {\n for (const [, root] of fiberRoots) {\n if (root.containerNode === container) {\n return root;\n }\n }\n /* v8 ignore start -- environment-specific path */\n return null;\n /* v8 ignore stop */\n}\n\n// ---------------------------------------------------------------------------\n// Work phase\n// ---------------------------------------------------------------------------\n\nfunction performUnitOfWork(fiber: Fiber): Fiber | null {\n beginWork(fiber);\n\n // Depth-first: go to child\n if (fiber.child !== null) {\n return fiber.child;\n }\n\n // No child: complete this fiber and try sibling\n let current: Fiber | null = fiber;\n while (current !== null) {\n completeWork(current);\n\n if (current.sibling !== null) {\n return current.sibling;\n }\n current = current.return;\n }\n\n return null;\n}\n\nfunction beginWork(fiber: Fiber): void {\n // During hydration, claim existing DOM nodes top-down\n if (activeHydrationRoot !== null && fiber.stateNode === null) {\n if (fiber.tag === FiberTag.HostComponent || fiber.tag === FiberTag.HostText) {\n const parentNode = findHostParentForHydration(fiber, activeHydrationRoot.containerNode);\n if (parentNode) {\n if (fiber.tag === FiberTag.HostComponent) {\n const existing = tryHydrateInstance(fiber, parentNode);\n if (existing) {\n fiber.stateNode = existing;\n }\n } else {\n const existing = tryHydrateText(parentNode);\n if (existing) {\n fiber.stateNode = existing;\n }\n }\n }\n }\n }\n\n switch (fiber.tag) {\n case FiberTag.HostRoot:\n reconcileHostRoot(fiber);\n break;\n case FiberTag.HostComponent:\n reconcileHostComponent(fiber);\n break;\n case FiberTag.HostText:\n // Text nodes have no children\n break;\n case FiberTag.FunctionComponent:\n reconcileFunctionComponent(fiber);\n break;\n case FiberTag.ClassComponent:\n reconcileClassComponent(fiber);\n break;\n case FiberTag.Fragment:\n // Track StrictMode depth\n if (fiber.type === SPEC_STRICT_MODE_TYPE) {\n strictModeDepth++;\n }\n reconcileFragment(fiber);\n break;\n case FiberTag.ContextProvider:\n reconcileContextProvider(fiber);\n break;\n case FiberTag.ForwardRef:\n reconcileForwardRef(fiber);\n break;\n case FiberTag.MemoComponent:\n reconcileMemoComponent(fiber);\n break;\n default:\n /* v8 ignore start -- environment-specific path */\n reconcileFragment(fiber);\n break;\n /* v8 ignore stop */\n }\n}\n\nfunction reconcileHostRoot(fiber: Fiber): void {\n const children = fiber.pendingProps.children;\n fiber.child = reconcileChildren(fiber, fiber.alternate?.child ?? null, children, 0);\n}\n\nfunction reconcileHostComponent(fiber: Fiber): void {\n const children = fiber.pendingProps.children;\n fiber.child = reconcileChildren(fiber, fiber.alternate?.child ?? null, children, 0);\n}\n\nfunction reconcileFunctionComponent(fiber: Fiber): void {\n // Install hooks dispatcher and set fiber context\n installDispatcher();\n setCurrentFiber(fiber);\n\n const Component = fiber.type as FunctionComponent;\n const componentName = getComponentName(Component) || Component.name || 'Anonymous';\n\n // Dev-time: track renders per fiber per cycle to detect infinite loops\n trackRender(fiber, componentName);\n\n // StrictMode double-render: call component twice to detect side effects.\n // The first invocation's result is discarded.\n if (strictModeDepth > 0 && fiber.alternate === null) {\n Component(fiber.pendingProps);\n // Reset hook state for the real render\n setCurrentFiber(fiber);\n }\n\n const children = Component(fiber.pendingProps);\n\n // Store effect list on fiber\n const effects = getEffectList();\n fiber.dependencies = effects;\n\n setCurrentFiber(null);\n uninstallDispatcher();\n\n fiber.child = reconcileChildren(fiber, fiber.alternate?.child ?? null, children, 0);\n}\n\nfunction reconcileClassComponent(fiber: Fiber): void {\n const Constructor = fiber.type as new (props: Props) => ClassComponentInstance;\n let instance: ClassComponentInstance;\n\n if (fiber.stateNode === null) {\n // Mount\n instance = new Constructor(fiber.pendingProps);\n fiber.stateNode = instance;\n\n // Wire the instance to the fiber for setState / forceUpdate\n instance._fiber = fiber;\n instance._enqueueUpdate = function (callback?: () => void) {\n scheduleUpdateOnFiber(fiber);\n if (typeof callback === 'function') {\n scheduleMicrotask(callback);\n }\n };\n } else {\n // Update\n instance = fiber.stateNode as ClassComponentInstance;\n instance.props = fiber.pendingProps;\n // Keep fiber reference current (fiber may be a new work-in-progress clone)\n instance._fiber = fiber;\n }\n\n // Process pending state updates (from setState calls between renders)\n if (instance._pendingState.length > 0 || instance._forceUpdate) {\n let nextState = instance.state as Record<string, unknown>;\n for (const update of instance._pendingState) {\n if (typeof update === 'function') {\n const partial = update(nextState, instance.props) as Record<string, unknown> | null;\n if (partial !== null) {\n nextState = { ...nextState, ...partial };\n }\n } else {\n nextState = { ...nextState, ...(update as Record<string, unknown>) };\n }\n }\n instance._pendingState = [];\n\n // PureComponent / shouldComponentUpdate bailout\n const shouldUpdate =\n instance._forceUpdate ||\n !instance.shouldComponentUpdate ||\n instance.shouldComponentUpdate(instance.props, nextState);\n\n instance.state = nextState;\n instance._forceUpdate = false;\n\n if (!shouldUpdate) {\n // Bail out \u2014 clone the child subtree from alternate\n fiber.child = cloneFiberSubtree(fiber.alternate?.child ?? null, fiber);\n return;\n }\n }\n\n const children = instance.render();\n fiber.child = reconcileChildren(fiber, fiber.alternate?.child ?? null, children, 0);\n}\n\nfunction reconcileFragment(fiber: Fiber): void {\n const children = fiber.pendingProps.children;\n fiber.child = reconcileChildren(fiber, fiber.alternate?.child ?? null, children, 0);\n}\n\nfunction reconcileContextProvider(fiber: Fiber): void {\n const provider = fiber.type as unknown as { _context: { _currentValue: unknown } };\n const value = fiber.pendingProps.value;\n\n if (provider._context) {\n provider._context._currentValue = value;\n }\n\n const children = fiber.pendingProps.children;\n fiber.child = reconcileChildren(fiber, fiber.alternate?.child ?? null, children, 0);\n}\n\nfunction reconcileForwardRef(fiber: Fiber): void {\n const { render } = fiber.type as unknown as {\n render: (props: Props, ref: unknown) => SpecNode;\n };\n\n installDispatcher();\n setCurrentFiber(fiber);\n\n const children = render(fiber.pendingProps, fiber.ref);\n\n const effects = getEffectList();\n fiber.dependencies = effects;\n\n setCurrentFiber(null);\n uninstallDispatcher();\n\n fiber.child = reconcileChildren(fiber, fiber.alternate?.child ?? null, children, 0);\n}\n\nfunction reconcileMemoComponent(fiber: Fiber): void {\n const { type: innerType, compare } = fiber.type as unknown as {\n type: FunctionComponent;\n compare: ((prev: Props, next: Props) => boolean) | null;\n };\n\n // Check if we can bail out\n if (fiber.alternate !== null) {\n const prevProps = fiber.alternate.memoizedProps;\n const nextProps = fiber.pendingProps;\n\n if (prevProps !== null) {\n const shouldSkip = compare\n ? compare(prevProps, nextProps)\n : shallowPropsEqual(prevProps, nextProps);\n\n if (shouldSkip) {\n // Bail out \u2014 clone the child subtree from alternate\n fiber.child = cloneFiberSubtree(fiber.alternate.child, fiber);\n return;\n }\n }\n }\n\n // Render the inner component\n installDispatcher();\n setCurrentFiber(fiber);\n\n const children = innerType(fiber.pendingProps);\n\n const effects = getEffectList();\n fiber.dependencies = effects;\n\n setCurrentFiber(null);\n uninstallDispatcher();\n\n fiber.child = reconcileChildren(fiber, fiber.alternate?.child ?? null, children, 0);\n}\n\nfunction shallowPropsEqual(a: Props, b: Props): boolean {\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n /* v8 ignore start -- environment-specific path */\n if (keysA.length !== keysB.length) return false;\n /* v8 ignore stop */\n for (const key of keysA) {\n /* v8 ignore start -- environment-specific path */\n if (key === 'children') continue; // skip children comparison\n /* v8 ignore stop */\n if (!Object.is(a[key], b[key])) return false;\n }\n return true;\n}\n\n/**\n * Clone a fiber subtree for bail-out, preserving stateNodes\n * and setting up alternate links so future reconciliation works.\n */\nfunction cloneFiberSubtree(source: Fiber | null, parent: Fiber): Fiber | null {\n /* v8 ignore start -- environment-specific path */\n if (source === null) return null;\n /* v8 ignore stop */\n\n // Iterative BFS/DFS using an explicit work stack\n const rootClone = cloneOneFiber(source, parent);\n const stack: { source: Fiber; cloneParent: Fiber }[] = [];\n\n // Enqueue children of the root source\n let srcChild = source.child;\n if (srcChild) {\n stack.push({ source: srcChild, cloneParent: rootClone });\n }\n\n while (stack.length > 0) {\n const { source: src, cloneParent } = stack.pop()!;\n\n // Clone this fiber and all its siblings under cloneParent\n let currentSrc: Fiber | null = src;\n let prevClone: Fiber | null = null;\n while (currentSrc !== null) {\n const clone = cloneOneFiber(currentSrc, cloneParent);\n if (prevClone) {\n /* v8 ignore start -- environment-specific path */\n prevClone.sibling = clone;\n /* v8 ignore stop */\n } else {\n cloneParent.child = clone;\n }\n // If this source fiber has children, push them for processing\n if (currentSrc.child) {\n /* v8 ignore start -- environment-specific path */\n stack.push({ source: currentSrc.child, cloneParent: clone });\n /* v8 ignore stop */\n }\n prevClone = clone;\n currentSrc = currentSrc.sibling;\n }\n }\n\n return rootClone;\n}\n\nfunction cloneOneFiber(source: Fiber, parent: Fiber): Fiber {\n const clone: Fiber = {\n ...source,\n return: parent,\n alternate: source,\n child: null,\n sibling: null,\n effectTag: EffectTag.NoEffect,\n pendingProps: source.memoizedProps ?? source.pendingProps,\n };\n source.alternate = clone;\n return clone;\n}\n\n// ---------------------------------------------------------------------------\n// Hydration helpers\n// ---------------------------------------------------------------------------\n\n// ---------------------------------------------------------------------------\n// SVG namespace handling\n// ---------------------------------------------------------------------------\n\nconst SVG_TAGS = new Set([\n 'svg',\n 'circle',\n 'clipPath',\n 'defs',\n 'ellipse',\n 'g',\n 'line',\n 'linearGradient',\n 'mask',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialGradient',\n 'rect',\n 'stop',\n 'text',\n 'tspan',\n 'use',\n 'image',\n 'symbol',\n 'foreignObject',\n 'desc',\n 'title',\n 'metadata',\n 'marker',\n 'filter',\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feFlood',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'feSpecularLighting',\n 'feTile',\n 'feTurbulence',\n 'animate',\n 'animateMotion',\n 'animateTransform',\n 'set',\n]);\n\nfunction isSvgTag(tag: string): boolean {\n return SVG_TAGS.has(tag);\n}\n\n/**\n * Check if a DOM element is a custom element (Web Component).\n * Custom elements must contain a hyphen in their tag name per the spec.\n */\nfunction isCustomElement(dom: Element): boolean {\n return dom.tagName.includes('-');\n}\n\n// ---------------------------------------------------------------------------\n// StrictMode double-render tracking\n// ---------------------------------------------------------------------------\n\nlet strictModeDepth = 0;\n\n// Active hydration root \u2014 set during hydration render, null otherwise\nlet activeHydrationRoot: FiberRoot | null = null;\n// Hydration cursor \u2014 tracks position in existing DOM during hydration\nlet hydrationCursor = new Map<Node, Node | null>();\n\n/**\n * Get the next hydratable child or sibling from a parent DOM node.\n * Skips comment nodes and other non-hydratable nodes.\n */\nfunction getNextHydratableChild(parent: Node): Node | null {\n let child = parent.firstChild;\n while (child !== null) {\n if (child.nodeType === 1 /* Element */ || child.nodeType === 3 /* Text */) {\n return child;\n }\n /* v8 ignore start -- environment-specific path */\n child = child.nextSibling;\n /* v8 ignore stop */\n }\n return null;\n}\n\nfunction getNextHydratableSibling(node: Node): Node | null {\n let sibling = node.nextSibling;\n while (sibling !== null) {\n if (sibling.nodeType === 1 || sibling.nodeType === 3) {\n return sibling;\n }\n /* v8 ignore start -- environment-specific path */\n sibling = sibling.nextSibling;\n /* v8 ignore stop */\n }\n return null;\n}\n\n/**\n * Try to hydrate a HostComponent fiber by matching it to an existing DOM element.\n * Returns the matched DOM element or null if no match.\n */\nfunction tryHydrateInstance(fiber: Fiber, parentNode: Node): HTMLElement | null {\n // Get the next unmatched child from the cursor, or the first child\n let candidate = hydrationCursor.get(parentNode) ?? getNextHydratableChild(parentNode);\n\n if (candidate === null) return null;\n\n // Skip text nodes when looking for elements\n while (candidate !== null && candidate.nodeType !== 1) {\n /* v8 ignore start -- environment-specific path */\n candidate = getNextHydratableSibling(candidate);\n /* v8 ignore stop */\n }\n\n /* v8 ignore start -- environment-specific path */\n if (candidate === null) return null;\n /* v8 ignore stop */\n\n const element = candidate as HTMLElement;\n if (element.tagName.toLowerCase() !== (fiber.type as string).toLowerCase()) {\n // Tag mismatch \u2014 cannot hydrate\n /* v8 ignore start -- environment-specific path */\n return null;\n /* v8 ignore stop */\n }\n\n // Advance cursor past this node\n hydrationCursor.set(parentNode, getNextHydratableSibling(element));\n return element;\n}\n\n/**\n * Try to hydrate a HostText fiber by matching it to an existing text node.\n */\nfunction tryHydrateText(parentNode: Node): Text | null {\n let candidate = hydrationCursor.get(parentNode) ?? getNextHydratableChild(parentNode);\n\n if (candidate === null) return null;\n\n // Skip elements when looking for text\n while (candidate !== null && candidate.nodeType !== 3) {\n /* v8 ignore start -- environment-specific path */\n candidate = getNextHydratableSibling(candidate);\n /* v8 ignore stop */\n }\n\n /* v8 ignore start -- environment-specific path */\n if (candidate === null) return null;\n /* v8 ignore stop */\n\n const textNode = candidate as Text;\n hydrationCursor.set(parentNode, getNextHydratableSibling(textNode));\n return textNode;\n}\n\n/**\n * Find the host parent DOM node for a fiber (walk up past non-host fibers).\n */\nfunction findHostParentForHydration(fiber: Fiber, rootContainer: Node): Node | null {\n let parent = fiber.return;\n while (parent !== null) {\n if (parent.tag === FiberTag.HostComponent && parent.stateNode) {\n return parent.stateNode as Node;\n }\n if (parent.tag === FiberTag.HostRoot) {\n return rootContainer;\n }\n parent = parent.return;\n }\n /* v8 ignore start -- environment-specific path */\n return rootContainer;\n /* v8 ignore stop */\n}\n\n// ---------------------------------------------------------------------------\n// Complete phase: create/update DOM nodes bottom-up\n// ---------------------------------------------------------------------------\n\nfunction completeWork(fiber: Fiber): void {\n switch (fiber.tag) {\n case FiberTag.HostComponent: {\n if (fiber.stateNode === null) {\n // Normal path: create new DOM node\n const tag = fiber.type as string;\n const domNode = isSvgTag(tag)\n ? document.createElementNS('http://www.w3.org/2000/svg', tag)\n : document.createElement(tag);\n updateDOMProperties(domNode as HTMLElement, {}, fiber.pendingProps);\n checkAriaCompliance(tag, fiber.pendingProps as Record<string, unknown>);\n // Assign component ID to the wrapper element of a user component.\n // Walk up the fiber tree to find the nearest function/class component.\n // Only the first host child of that component gets an ID.\n // Assign component ID (data-cid) to the wrapper element of user components.\n {\n let ancestor = fiber.return;\n while (ancestor !== null) {\n if (\n ancestor.tag === FiberTag.FunctionComponent ||\n ancestor.tag === FiberTag.ClassComponent ||\n ancestor.tag === FiberTag.ForwardRef ||\n ancestor.tag === FiberTag.MemoComponent\n ) {\n if (ancestor.child === fiber) {\n const componentName = getComponentName(ancestor.type);\n const cid = registerComponentInstance(componentName);\n if (cid) (domNode as HTMLElement).setAttribute('data-cid', cid);\n }\n break;\n }\n if (ancestor.tag === FiberTag.HostComponent || ancestor.tag === FiberTag.HostRoot) {\n break;\n }\n ancestor = ancestor.return;\n }\n }\n fiber.stateNode = domNode;\n appendAllChildren(domNode as HTMLElement, fiber);\n } else if (activeHydrationRoot !== null && fiber.alternate === null) {\n // Hydrated node: stateNode was set during beginWork\n // Attach event listeners and update props, but don't recreate or append children\n updateDOMProperties(fiber.stateNode as HTMLElement, {}, fiber.pendingProps);\n // Mark as hydrated \u2014 no Placement needed, node is already in DOM\n fiber.effectTag = EffectTag.NoEffect;\n } else {\n // Update existing node (normal re-render)\n const domNode = fiber.stateNode as HTMLElement;\n if (fiber.alternate) {\n updateDOMProperties(domNode, fiber.alternate.memoizedProps || {}, fiber.pendingProps);\n }\n }\n fiber.memoizedProps = fiber.pendingProps;\n break;\n }\n case FiberTag.HostText: {\n const text = String((fiber.pendingProps as unknown as { text: string | number }).text);\n if (fiber.stateNode === null) {\n // Normal path: create new text node\n fiber.stateNode = document.createTextNode(text);\n } else if (activeHydrationRoot !== null && fiber.alternate === null) {\n // Hydrated text node: stateNode was set during beginWork\n const existing = fiber.stateNode as Text;\n if (existing.nodeValue !== text) {\n existing.nodeValue = text;\n }\n // Mark as hydrated \u2014 no Placement needed\n fiber.effectTag = EffectTag.NoEffect;\n } else {\n (fiber.stateNode as Text).nodeValue = text;\n }\n fiber.memoizedProps = fiber.pendingProps;\n break;\n }\n case FiberTag.HostRoot:\n case FiberTag.FunctionComponent:\n case FiberTag.ClassComponent:\n case FiberTag.Fragment:\n case FiberTag.ContextProvider:\n case FiberTag.ForwardRef:\n case FiberTag.MemoComponent:\n // Decrement StrictMode depth when completing a StrictMode fiber\n if (fiber.type === SPEC_STRICT_MODE_TYPE) {\n strictModeDepth--;\n }\n fiber.memoizedProps = fiber.pendingProps;\n break;\n }\n}\n\n/**\n * Append all child DOM nodes to a parent host element.\n * Skips non-host fibers (components, fragments) and descends into them.\n */\nfunction appendAllChildren(parent: HTMLElement, fiber: Fiber): void {\n let child = fiber.child;\n while (child !== null) {\n if (child.tag === FiberTag.HostComponent || child.tag === FiberTag.HostText) {\n if (child.stateNode) {\n parent.appendChild(child.stateNode as Node);\n }\n } else if (child.child !== null) {\n // Descend into non-host fibers\n child.child.return = child;\n child = child.child;\n continue;\n }\n\n /* v8 ignore start -- environment-specific path */\n if (child === fiber) return;\n /* v8 ignore stop */\n\n while (child.sibling === null) {\n if (child.return === null || child.return === fiber) return;\n child = child.return;\n }\n child.sibling.return = child.return;\n child = child.sibling;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Commit phase: mutate real DOM\n// ---------------------------------------------------------------------------\n\nfunction commitRoot(root: FiberRoot, finishedWork: Fiber): void {\n // Begin commit cycle \u2014 resets per-fiber effect counters\n beginCommitCycle();\n\n // Commit deletions first\n commitDeletions(finishedWork);\n\n // Commit placements and updates\n commitWork(finishedWork, root.containerNode);\n\n // Run effects\n commitEffects(finishedWork);\n\n // Notify DevTools\n notifyDevToolsOfCommit(root);\n}\n\nfunction commitDeletions(rootFiber: Fiber): void {\n // Iterative DFS \u2014 walk the fiber tree without recursion\n let node: Fiber | null = rootFiber;\n while (node !== null) {\n if (node.updateQueue && Array.isArray(node.updateQueue)) {\n for (const item of node.updateQueue as unknown[]) {\n const deletedFiber = item as Fiber;\n if (deletedFiber.effectTag === EffectTag.Deletion) {\n commitDeletion(deletedFiber);\n }\n }\n }\n\n // Descend into children first\n if (node.child !== null) {\n node = node.child;\n continue;\n }\n // Walk back up via siblings\n while (node !== null) {\n if (node === rootFiber) {\n node = null;\n break;\n }\n if (node.sibling !== null) {\n node = node.sibling;\n break;\n }\n node = node.return;\n }\n }\n}\n\nfunction commitDeletion(fiber: Fiber): void {\n // Find the nearest host parent\n let parentFiber = fiber.return;\n while (parentFiber !== null) {\n if (parentFiber.tag === FiberTag.HostComponent || parentFiber.tag === FiberTag.HostRoot) {\n break;\n }\n parentFiber = parentFiber.return;\n }\n\n const parentDOM = parentFiber?.stateNode as Element | null;\n /* v8 ignore start -- environment-specific path */\n if (!parentDOM) return;\n /* v8 ignore stop */\n\n // Remove host nodes from this fiber subtree\n removeHostChildren(fiber, parentDOM);\n\n // Run cleanup effects\n runCleanupEffects(fiber);\n}\n\nfunction removeHostChildren(rootFiber: Fiber, parentDOM: Element): void {\n // Iterative DFS \u2014 find and remove all host nodes in the subtree\n let node: Fiber | null = rootFiber;\n while (node !== null) {\n if (node.tag === FiberTag.HostComponent || node.tag === FiberTag.HostText) {\n if (node.stateNode && parentDOM.contains(node.stateNode as Node)) {\n parentDOM.removeChild(node.stateNode as Node);\n }\n // Don't descend into removed host nodes \u2014 their DOM children are removed with them\n } else if (node.child !== null) {\n node = node.child;\n continue;\n }\n // Walk back up via siblings\n while (node !== null) {\n if (node === rootFiber) {\n node = null;\n break;\n }\n if (node.sibling !== null) {\n node = node.sibling;\n break;\n }\n node = node.return;\n }\n }\n}\n\nfunction commitWork(rootFiber: Fiber, container: Element | DocumentFragment): void {\n // Iterative DFS \u2014 walk entire fiber tree for placements\n let node: Fiber | null = rootFiber;\n while (node !== null) {\n if (\n node.tag !== FiberTag.HostRoot &&\n (node.tag === FiberTag.HostComponent || node.tag === FiberTag.HostText) &&\n node.effectTag & EffectTag.Placement\n ) {\n const parentDOM = getHostParentNode(node, container);\n if (parentDOM && node.stateNode) {\n const before = getHostSibling(node);\n if (before) {\n parentDOM.insertBefore(node.stateNode as Node, before);\n } else {\n parentDOM.appendChild(node.stateNode as Node);\n }\n }\n }\n\n // Descend into children\n if (node.child !== null) {\n node = node.child;\n continue;\n }\n // Walk back up via siblings\n while (node !== null) {\n if (node === rootFiber) {\n node = null;\n break;\n }\n if (node.sibling !== null) {\n node = node.sibling;\n break;\n }\n node = node.return;\n }\n }\n}\n\nfunction getHostParentNode(\n fiber: Fiber,\n rootContainer: Element | DocumentFragment,\n): Element | DocumentFragment | null {\n let parent = fiber.return;\n while (parent !== null) {\n if (parent.tag === FiberTag.HostComponent) {\n return parent.stateNode as Element;\n }\n if (parent.tag === FiberTag.HostRoot) {\n return rootContainer;\n }\n parent = parent.return;\n }\n /* v8 ignore start -- environment-specific path */\n return null;\n /* v8 ignore stop */\n}\n\nfunction getHostSibling(fiber: Fiber): Node | null {\n let node: Fiber | null = fiber;\n\n outer: while (true) {\n while (node.sibling === null) {\n if (node.return === null || isHostParent(node.return)) {\n return null;\n }\n node = node.return;\n }\n node = node.sibling;\n\n // Descend into non-host fibers to find host nodes\n while (node.tag !== FiberTag.HostComponent && node.tag !== FiberTag.HostText) {\n if (node.effectTag & EffectTag.Placement) {\n continue outer;\n }\n if (node.child === null) {\n /* v8 ignore start -- environment-specific path */\n continue outer;\n /* v8 ignore stop */\n }\n node = node.child;\n }\n\n if (!(node.effectTag & EffectTag.Placement)) {\n return node.stateNode as Node;\n }\n }\n}\n\nfunction isHostParent(fiber: Fiber): boolean {\n return fiber.tag === FiberTag.HostComponent || fiber.tag === FiberTag.HostRoot;\n}\n\n// ---------------------------------------------------------------------------\n// Effects\n// ---------------------------------------------------------------------------\n\nfunction commitEffects(rootFiber: Fiber): void {\n // Iterative DFS \u2014 process effects for the entire tree\n let node: Fiber | null = rootFiber;\n while (node !== null) {\n // Attach refs\n if (node.ref && node.stateNode) {\n if (typeof node.ref === 'function') {\n node.ref(node.stateNode);\n } else if (typeof node.ref === 'object') {\n (node.ref as { current: unknown }).current = node.stateNode;\n }\n }\n\n // Process this fiber's effects\n if (\n node.tag === FiberTag.FunctionComponent ||\n node.tag === FiberTag.ForwardRef ||\n node.tag === FiberTag.MemoComponent\n ) {\n const effectList = node.dependencies as EffectHook | null;\n if (effectList) {\n // Dev-time: track effect executions per fiber per commit cycle\n const effName =\n (typeof node.type === 'function' ? getComponentName(node.type) || node.type.name : '') ||\n 'Anonymous';\n trackEffect(node, effName);\n runEffects(effectList);\n }\n }\n\n // Class component lifecycle\n if (node.tag === FiberTag.ClassComponent && node.stateNode) {\n const instance = node.stateNode as ClassComponentInstance;\n if (node.alternate === null) {\n instance.componentDidMount?.();\n } else {\n const prevProps = node.alternate.memoizedProps || ({} as Props);\n const prevState = node.alternate.memoizedState;\n instance.componentDidUpdate?.(prevProps, prevState);\n }\n }\n\n // Descend into children\n if (node.child !== null) {\n node = node.child;\n continue;\n }\n // Walk back up via siblings\n while (node !== null) {\n if (node === rootFiber) {\n node = null;\n break;\n }\n if (node.sibling !== null) {\n node = node.sibling;\n break;\n }\n node = node.return;\n }\n }\n}\n\nfunction runEffects(effect: EffectHook): void {\n let current: EffectHook | null = effect;\n while (current !== null) {\n if (current.tag & EffectHookTag.HasEffect) {\n // Run cleanup from previous render\n if (current.destroy) {\n current.destroy();\n }\n // Run the new effect\n const destroy = current.create();\n current.destroy = typeof destroy === 'function' ? destroy : null;\n }\n current = current.next;\n }\n}\n\nfunction runCleanupEffects(rootFiber: Fiber): void {\n // Iterative DFS \u2014 run cleanup for entire subtree\n let node: Fiber | null = rootFiber;\n while (node !== null) {\n if (node.tag === FiberTag.FunctionComponent || node.tag === FiberTag.ForwardRef) {\n const effectList = node.dependencies as EffectHook | null;\n if (effectList) {\n let current: EffectHook | null = effectList;\n while (current !== null) {\n if (current.destroy) {\n current.destroy();\n }\n current = current.next;\n }\n }\n }\n\n if (node.tag === FiberTag.ClassComponent && node.stateNode) {\n (node.stateNode as ClassComponentInstance).componentWillUnmount?.();\n }\n\n // Descend into children\n if (node.child !== null) {\n node = node.child;\n continue;\n }\n // Walk back up via siblings\n while (node !== null) {\n if (node === rootFiber) {\n node = null;\n break;\n }\n if (node.sibling !== null) {\n node = node.sibling;\n break;\n }\n node = node.return;\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// DOM property updates\n// ---------------------------------------------------------------------------\n\nconst EVENT_RE = /^on[A-Z]/;\n\nexport function updateDOMProperties(\n dom: HTMLElement,\n prevProps: Props | Record<string, unknown>,\n nextProps: Props,\n): void {\n // Remove old props\n for (const key in prevProps) {\n if (key === 'children' || key === 'key' || key === 'ref') continue;\n if (!(key in nextProps)) {\n if (EVENT_RE.test(key)) {\n const eventName = key.slice(2).toLowerCase();\n dom.removeEventListener(eventName, prevProps[key] as EventListener);\n } else if (key === 'style') {\n dom.removeAttribute('style');\n } else if (key === 'className') {\n dom.removeAttribute('class');\n } else if (key === 'htmlFor') {\n dom.removeAttribute('for');\n } else if (key === 'dangerouslySetInnerHTML') {\n dom.innerHTML = '';\n } else {\n dom.removeAttribute(key);\n }\n }\n }\n\n // Set new props\n for (const key in nextProps) {\n if (key === 'children' || key === 'key' || key === 'ref') continue;\n\n const value = nextProps[key];\n\n if (EVENT_RE.test(key)) {\n const eventName = key.slice(2).toLowerCase();\n // Remove old handler if different\n if (prevProps[key] !== value) {\n if (prevProps[key]) {\n dom.removeEventListener(eventName, prevProps[key] as EventListener);\n }\n if (value) {\n dom.addEventListener(eventName, value as EventListener);\n }\n }\n } else if (key === 'style') {\n if (typeof value === 'object' && value !== null) {\n const style = value as Record<string, string>;\n for (const prop in style) {\n (dom.style as unknown as Record<string, string>)[prop] = style[prop] ?? '';\n }\n }\n } else if (key === 'className') {\n dom.setAttribute('class', String(value));\n } else if (key === 'htmlFor') {\n dom.setAttribute('for', String(value));\n } else if (key === 'dangerouslySetInnerHTML') {\n const html = (value as { __html: string }).__html;\n dom.innerHTML = html;\n } else if (\n key === 'value' &&\n (dom.tagName === 'INPUT' || dom.tagName === 'TEXTAREA' || dom.tagName === 'SELECT')\n ) {\n (dom as HTMLInputElement).value = String(value ?? '');\n } else if (key === 'checked' && dom.tagName === 'INPUT') {\n (dom as HTMLInputElement).checked = Boolean(value);\n } else if (typeof value === 'boolean') {\n if (value) {\n dom.setAttribute(key, '');\n } else {\n dom.removeAttribute(key);\n }\n } else if (value != null) {\n // For custom elements (Web Components), set complex values as properties\n // rather than attributes to support object/array/function props\n if (isCustomElement(dom) && typeof value !== 'string' && key in dom) {\n /* v8 ignore start -- environment-specific path */\n (dom as unknown as Record<string, unknown>)[key] = value;\n /* v8 ignore stop */\n } else {\n dom.setAttribute(key, String(value));\n }\n } else {\n dom.removeAttribute(key);\n }\n }\n}\n\n// Export for the createRoot module\nexport { fiberRoots };\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\nimport type { SpecNode } from '../shared/types';\nimport { createFiberRoot, performSyncWork, fiberRoots } from './work-loop';\n\nexport interface Root {\n render(children: SpecNode): void;\n unmount(): void;\n}\n\nexport interface RootOptions {\n onRecoverableError?: (error: unknown) => void;\n identifierPrefix?: string;\n}\n\n/**\n * Creates a concurrent root for rendering.\n * Equivalent to ReactDOM.createRoot.\n */\nexport function createRoot(container: Element | DocumentFragment, _options?: RootOptions): Root {\n if (!container || (!(container instanceof Element) && !(container instanceof DocumentFragment))) {\n throw new Error('createRoot: container must be a DOM element or DocumentFragment');\n }\n\n const fiberRoot = createFiberRoot(container);\n fiberRoots.set(container, fiberRoot);\n\n let isMounted = false;\n\n return {\n render(children: SpecNode): void {\n isMounted = true;\n performSyncWork(fiberRoot, children);\n },\n unmount(): void {\n if (!isMounted) return;\n isMounted = false;\n performSyncWork(fiberRoot, null);\n fiberRoots.delete(container);\n },\n };\n}\n\n/**\n * Creates a root for hydrating server-rendered content.\n * Equivalent to ReactDOM.hydrateRoot.\n *\n * Unlike createRoot, this preserves the existing DOM in the container and\n * attempts to reuse DOM nodes during the initial render. Event listeners\n * and component state are attached to the existing DOM structure.\n */\nexport function hydrateRoot(\n container: Element | Document,\n initialChildren: SpecNode,\n _options?: RootOptions,\n): Root {\n if (!container) {\n throw new Error('hydrateRoot: container must be a DOM element');\n }\n\n const elem = container as Element;\n const fiberRoot = createFiberRoot(elem);\n fiberRoot.isHydrating = true; // Enable hydration mode for initial render\n fiberRoots.set(elem, fiberRoot);\n\n let isMounted = false;\n\n const root: Root = {\n render(children: SpecNode): void {\n isMounted = true;\n performSyncWork(fiberRoot, children);\n },\n unmount(): void {\n if (!isMounted) return;\n isMounted = false;\n performSyncWork(fiberRoot, null);\n fiberRoots.delete(elem);\n },\n };\n\n // Perform the initial hydrating render\n root.render(initialChildren);\n return root;\n}\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\nimport {\n SPEC_PORTAL_TYPE,\n SPEC_ELEMENT_TYPE,\n type SpecElement,\n type SpecNode,\n type Props,\n type Key,\n} from '../shared/types';\n\n/**\n * Creates a portal to render children into a different DOM subtree.\n * Equivalent to ReactDOM.createPortal.\n */\nexport function createPortal(children: SpecNode, container: Element, key?: Key): SpecElement {\n return {\n $$typeof: SPEC_ELEMENT_TYPE,\n type: SPEC_PORTAL_TYPE as unknown as symbol,\n props: { children, container } as unknown as Props,\n key: key ?? null,\n ref: null,\n };\n}\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\n/**\n * Forces synchronous flushing of pending state updates.\n * Equivalent to ReactDOM.flushSync.\n *\n * Any state updates triggered within the callback receive SyncLane priority\n * and are flushed before flushSync returns.\n */\n\nimport { enterFlushSyncContext, exitFlushSyncContext } from '../core/transitions';\nimport { flushPendingTasks } from '../core/scheduler';\n\nexport function flushSync<T>(fn: () => T): T {\n enterFlushSyncContext();\n try {\n const result = fn();\n // Flush any sync-priority work that was scheduled\n flushPendingTasks();\n return result;\n } finally {\n exitFlushSyncContext();\n }\n}\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\nimport type { SpecNode } from '../shared/types';\nimport { createRoot, hydrateRoot, type Root } from './create-root';\n\nconst containerRootMap = new WeakMap<Element, Root>();\n\n/**\n * Legacy render API.\n * Equivalent to ReactDOM.render (pre-React 18).\n */\nexport function render(element: SpecNode, container: Element, callback?: () => void): void {\n let root = containerRootMap.get(container);\n\n if (!root) {\n root = createRoot(container);\n containerRootMap.set(container, root);\n }\n\n root.render(element);\n\n if (callback) {\n // Execute callback after render commits\n Promise.resolve().then(callback);\n }\n}\n\n/**\n * Legacy hydrate API.\n * Equivalent to ReactDOM.hydrate (pre-React 18).\n */\nexport function hydrate(element: SpecNode, container: Element, callback?: () => void): void {\n const root = hydrateRoot(container, element);\n containerRootMap.set(container, root);\n\n if (callback) {\n Promise.resolve().then(callback);\n }\n}\n\n/**\n * Legacy unmount API.\n * Equivalent to ReactDOM.unmountComponentAtNode.\n */\nexport function unmountComponentAtNode(container: Element): boolean {\n const root = containerRootMap.get(container);\n\n if (root) {\n root.unmount();\n containerRootMap.delete(container);\n return true;\n }\n\n return false;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["SPEC_ELEMENT_TYPE", "SPEC_FRAGMENT_TYPE", "SPEC_PORTAL_TYPE", "SPEC_PROVIDER_TYPE", "SPEC_CONSUMER_TYPE", "SPEC_FORWARD_REF_TYPE", "SPEC_MEMO_TYPE", "SPEC_LAZY_TYPE", "SPEC_SUSPENSE_TYPE", "SPEC_STRICT_MODE_TYPE", "SPEC_PROFILER_TYPE", "isValidElement", "object", "SPEC_ELEMENT_TYPE", "getFiberTag", "type", "SPEC_FRAGMENT_TYPE", "SPEC_SUSPENSE_TYPE", "SPEC_STRICT_MODE_TYPE", "SPEC_PROFILER_TYPE", "SPEC_PORTAL_TYPE", "$$typeof", "SPEC_FORWARD_REF_TYPE", "SPEC_MEMO_TYPE", "SPEC_PROVIDER_TYPE", "SPEC_CONSUMER_TYPE", "createFiberFromElement", "element", "lanes", "tag", "createFiber", "createFiberFromText", "content", "createHostRootFiber", "key", "ref", "pendingProps", "createWorkInProgress", "current", "wip", "coerceToFiberChildren", "children", "result", "stack", "node", "i", "isValidElement", "reconcileChildren", "returnFiber", "currentFirstChild", "newChildren", "lanes", "elements", "coerceToFiberChildren", "deleteRemainingChildren", "reconcileSingleChild", "reconcileChildArray", "element", "reconcileSingleTextNode", "key", "child", "isSameType", "existing", "useFiber", "deleteChild", "created", "createFiberFromElement", "content", "createFiberFromText", "resultingFirstChild", "previousNewFiber", "oldFiber", "newIdx", "lastPlacedIndex", "nextOldFiber", "newChild", "newFiber", "updateSlot", "placeChild", "createChild", "existingChildren", "mapRemainingChildren", "updateFromMap", "fiber", "pendingProps", "clone", "createWorkInProgressFromFiber", "current", "wip", "oldKey", "updateTextNode", "isValidElement", "updateElement", "newIndex", "oldIndex", "childToDelete", "map", "matchedFiber", "currentlyRenderingFiber", "workInProgressHook", "currentHook", "hookIndex", "effectListHead", "effectListTail", "setCurrentFiber", "fiber", "getCurrentFiber", "getCurrentHookIndex", "allocateHook", "hook", "currentlyRenderingFiber", "alternate", "currentHook", "workInProgressHook", "hookIndex", "pushEffect", "tag", "create", "destroy", "deps", "effect", "effectListTail", "effectListHead", "getEffectList", "areDepsEqual", "prevDeps", "nextDeps", "i", "currentDispatcher", "__setDispatcher", "dispatcher", "isBatchingUpdates", "pendingTasks", "scheduleUpdate", "task", "flushPendingTasks", "tasks", "pendingTasks", "task", "scheduleMicrotask", "fn", "mergeLanes", "a", "b", "nextTransitionLane", "claimNextTransitionLane", "lane", "currentUpdateLane", "isTransitionPending", "isFlushSyncContext", "transitionCallbacks", "requestUpdateLane", "enterFlushSyncContext", "exitFlushSyncContext", "startTransition", "callback", "prevLane", "prevPending", "claimNextTransitionLane", "flushTransitions", "flushTransitions", "callbacks", "transitionCallbacks", "cb", "warnedMessages", "warn", "message", "error", "MAX_RENDERS_PER_CYCLE", "MAX_EFFECTS_PER_CYCLE", "UNSTABLE_DEPS_THRESHOLD", "fiberRenderCounts", "currentCycleId", "beginRenderCycle", "trackRender", "fiber", "componentName", "entry", "msg", "error", "fiberEffectCounts", "currentCommitId", "beginCommitCycle", "trackEffect", "warn", "fiberDepsHistory", "trackEffectDeps", "hookIndex", "deps", "depsChanged", "fiberMap", "history", "fiberStateSetCounts", "currentFrameId", "beginFrame", "trackStateUpdate", "typeMap", "nextTypeIndex", "enabled", "registerComponentInstance", "componentName", "enabled", "entry", "typeMap", "nextTypeIndex", "updateGlobalLookup", "instanceId", "updateGlobalLookup", "lookup", "entry", "typeMap", "getComponentName", "type", "rerenderFiber", "setRerenderCallback", "cb", "getCurrentFiberForDispatch", "fiber", "getCurrentFiber", "markFiberWithLane", "lane", "mergeLanes", "node", "useStateImpl", "initialState", "hook", "allocateHook", "initial", "queue", "state", "update", "action", "compName", "getComponentName", "trackStateUpdate", "requestUpdateLane", "scheduleUpdate", "useReducerImpl", "reducer", "initialArg", "init", "dName", "useEffectImpl", "tag", "create", "deps", "hIdx", "getCurrentHookIndex", "prevState", "prevDestroy", "depsMatch", "areDepsEqual", "cName", "trackEffectDeps", "pushEffect", "effect", "useEffectDispatch", "useLayoutEffectDispatch", "useInsertionEffectDispatch", "useContextImpl", "context", "useCallbackImpl", "callback", "useMemoImpl", "factory", "value", "useRefImpl", "initialValue", "ref", "useImperativeHandleImpl", "createHandle", "handle", "useDebugValueImpl", "_value", "_format", "idCounter", "useIdImpl", "hook", "allocateHook", "idCounter", "useDeferredValueImpl", "value", "deferredValue", "setDeferredValue", "useStateImpl", "useEffectImpl", "startTransition", "useTransitionImpl", "isPending", "setIsPending", "useCallbackImpl", "callback", "useSyncExternalStoreImpl", "subscribe", "getSnapshot", "_getServerSnapshot", "fiber", "getCurrentFiberForDispatch", "nextValue", "rerenderFiber", "scheduleUpdate", "HooksDispatcher", "useStateImpl", "useEffectDispatch", "useContextImpl", "useReducerImpl", "useCallbackImpl", "useMemoImpl", "useRefImpl", "useImperativeHandleImpl", "useLayoutEffectDispatch", "useDebugValueImpl", "useIdImpl", "useDeferredValueImpl", "useTransitionImpl", "useSyncExternalStoreImpl", "useInsertionEffectDispatch", "installDispatcher", "__setDispatcher", "uninstallDispatcher", "devToolsHook", "notifyDevToolsOfCommit", "root", "devToolsHook", "getCurrentTime", "FRAME_YIELD_MS", "deadline", "resetDeadline", "deadline", "getCurrentTime", "FRAME_YIELD_MS", "scheduledCallback", "isMessageLoopRunning", "performWorkUntilDeadline", "cb", "hasMoreWork", "continuation", "err", "schedulePerformWorkUntilDeadline", "channel", "checkAriaCompliance", "tag", "props", "warn", "fiberRoots", "createFiberRoot", "container", "rootFiber", "createHostRootFiber", "scheduleRender", "root", "children", "scheduleMicrotask", "performWork", "performSyncWork", "scheduleUpdateOnFiber", "fiber", "node", "fRoot", "findRootForContainer", "installPersistentRerenderCallback", "setRerenderCallback", "beginRenderCycle", "beginFrame", "activeHydrationRoot", "hydrationCursor", "currentRoot", "wip", "createWorkInProgress", "workLoopSync", "commitRoot", "startFiber", "unitOfWork", "performUnitOfWork", "findRootForContainer", "container", "root", "fiberRoots", "performUnitOfWork", "fiber", "beginWork", "current", "completeWork", "activeHydrationRoot", "parentNode", "findHostParentForHydration", "existing", "tryHydrateInstance", "tryHydrateText", "reconcileHostRoot", "reconcileHostComponent", "reconcileFunctionComponent", "reconcileClassComponent", "SPEC_STRICT_MODE_TYPE", "strictModeDepth", "reconcileFragment", "reconcileContextProvider", "reconcileForwardRef", "reconcileMemoComponent", "children", "reconcileChildren", "installDispatcher", "setCurrentFiber", "Component", "componentName", "getComponentName", "trackRender", "effects", "getEffectList", "uninstallDispatcher", "Constructor", "instance", "callback", "scheduleUpdateOnFiber", "scheduleMicrotask", "nextState", "update", "partial", "shouldUpdate", "cloneFiberSubtree", "provider", "value", "render", "innerType", "compare", "prevProps", "nextProps", "shallowPropsEqual", "a", "b", "keysA", "keysB", "key", "source", "parent", "rootClone", "cloneOneFiber", "stack", "srcChild", "src", "cloneParent", "currentSrc", "prevClone", "clone", "SVG_TAGS", "isSvgTag", "tag", "isCustomElement", "dom", "hydrationCursor", "getNextHydratableChild", "child", "getNextHydratableSibling", "node", "sibling", "candidate", "element", "textNode", "rootContainer", "domNode", "updateDOMProperties", "checkAriaCompliance", "ancestor", "cid", "registerComponentInstance", "appendAllChildren", "text", "commitRoot", "finishedWork", "beginCommitCycle", "commitDeletions", "commitWork", "commitEffects", "notifyDevToolsOfCommit", "rootFiber", "item", "deletedFiber", "commitDeletion", "parentFiber", "parentDOM", "removeHostChildren", "runCleanupEffects", "getHostParentNode", "before", "getHostSibling", "outer", "isHostParent", "effectList", "effName", "trackEffect", "runEffects", "prevState", "effect", "destroy", "EVENT_RE", "eventName", "style", "prop", "html", "createRoot", "container", "_options", "fiberRoot", "createFiberRoot", "fiberRoots", "isMounted", "children", "performSyncWork", "hydrateRoot", "initialChildren", "elem", "root", "createPortal", "children", "container", "key", "SPEC_ELEMENT_TYPE", "SPEC_PORTAL_TYPE", "flushSync", "fn", "enterFlushSyncContext", "result", "flushPendingTasks", "exitFlushSyncContext", "containerRootMap", "render", "element", "container", "callback", "root", "createRoot", "hydrate", "hydrateRoot", "unmountComponentAtNode"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
/* (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE */
|
|
2
|
+
"use strict";var P=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var f=(o,e)=>{for(var t in e)P(o,t,{get:e[t],enumerable:!0})},C=(o,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of S(e))!i.call(o,r)&&r!==t&&P(o,r,{get:()=>e[r],enumerable:!(s=a(e,r))||s.enumerable});return o};var x=o=>C(P({},"__esModule",{value:!0}),o);var _={};f(_,{Fragment:()=>u,jsxDEV:()=>y});module.exports=x(_);var m=Symbol.for("spec.element"),c=Symbol.for("spec.fragment"),k=Symbol.for("spec.portal"),R=Symbol.for("spec.provider"),w=Symbol.for("spec.consumer"),v=Symbol.for("spec.forward_ref"),h=Symbol.for("spec.memo"),N=Symbol.for("spec.lazy"),Y=Symbol.for("spec.suspense"),O=Symbol.for("spec.strict_mode"),D=Symbol.for("spec.profiler");function d(o,e,...t){let s=null,r=null,p={};if(e!=null){e.key!==void 0&&(s=""+e.key),e.ref!==void 0&&(r=e.ref);for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&n!=="key"&&n!=="ref"&&n!=="__proto__"&&n!=="constructor"&&n!=="prototype"&&(p[n]=e[n])}if(t.length===1?p.children=t[0]:t.length>1&&(p.children=t),typeof o=="function"&&o.defaultProps){let n=o.defaultProps;for(let l of Object.keys(n))l!=="__proto__"&&l!=="constructor"&&p[l]===void 0&&(p[l]=n[l])}return{$$typeof:m,type:o,props:p,key:s,ref:r}}var u=c;function y(o,e,t){let s=t!==void 0?t:e.key!==void 0?e.key:null,{key:r,...p}=e,n=s!==null?{...p,key:s}:p;return d(o,n)}
|
|
2
3
|
//# sourceMappingURL=specifyjs-jsx-dev-runtime.cjs.js.map
|
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/jsx-dev-runtime.ts", "../src/shared/types.ts", "../src/core/create-element.ts", "../src/core/fragment.ts", "../src/jsx-runtime.ts"],
|
|
4
|
+
"sourcesContent": ["// ============================================================================\n// SpecifyJS JSX Dev Runtime (development transform with source info)\n// ============================================================================\n// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\nexport { jsx as jsxDEV, Fragment } from './jsx-runtime';\n", "// ============================================================================\n// SpecifyJS Core Types\n// ============================================================================\n// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\n/** Unique symbol to identify SpecifyJS elements */\nexport const SPEC_ELEMENT_TYPE = Symbol.for('spec.element');\nexport const SPEC_FRAGMENT_TYPE = Symbol.for('spec.fragment');\nexport const SPEC_PORTAL_TYPE = Symbol.for('spec.portal');\nexport const SPEC_PROVIDER_TYPE = Symbol.for('spec.provider');\nexport const SPEC_CONSUMER_TYPE = Symbol.for('spec.consumer');\nexport const SPEC_FORWARD_REF_TYPE = Symbol.for('spec.forward_ref');\nexport const SPEC_MEMO_TYPE = Symbol.for('spec.memo');\nexport const SPEC_LAZY_TYPE = Symbol.for('spec.lazy');\nexport const SPEC_SUSPENSE_TYPE = Symbol.for('spec.suspense');\nexport const SPEC_STRICT_MODE_TYPE = Symbol.for('spec.strict_mode');\nexport const SPEC_PROFILER_TYPE = Symbol.for('spec.profiler');\n\n/** A key used for reconciliation */\nexport type Key = string | number | null;\n\n/** A ref can be a callback, an object, or null */\nexport type Ref<T = unknown> = RefCallback<T> | RefObject<T> | null;\nexport type RefCallback<T> = (instance: T | null) => void;\nexport interface RefObject<T> {\n current: T | null;\n}\n\n/** Props are an arbitrary key-value map */\nexport type Props = Record<string, unknown> & {\n children?: SpecNode;\n key?: Key;\n ref?: Ref;\n};\n\n/** Valid child types in a SpecifyJS tree */\nexport type SpecChild = SpecElement | string | number | boolean | null | undefined;\nexport type SpecNode = SpecChild | SpecNode[];\n\n/** A functional component */\nexport type FunctionComponent<P extends Props = Props> = (props: P) => SpecNode;\n\n/** A class component constructor */\nexport interface ClassComponentConstructor<P extends Props = Props, S = unknown> {\n new (props: P): ClassComponentInstance<P, S>;\n getDerivedStateFromProps?(props: P, state: S): Partial<S> | null;\n getDerivedStateFromError?(error: unknown): Partial<S> | null;\n}\n\n/** Instance of a class component */\nexport interface ClassComponentInstance<P extends Props = Props, S = unknown> {\n props: P;\n state: S;\n setState(updater: Partial<S> | ((prevState: S, props: P) => Partial<S> | null)): void;\n forceUpdate(callback?: () => void): void;\n render(): SpecNode;\n componentDidMount?(): void;\n componentDidUpdate?(prevProps: P, prevState: S, snapshot?: unknown): void;\n componentWillUnmount?(): void;\n shouldComponentUpdate?(nextProps: P, nextState: S): boolean;\n getSnapshotBeforeUpdate?(prevProps: P, prevState: S): unknown;\n componentDidCatch?(error: unknown, info: ErrorInfo): void;\n // Internal: set by the reconciler for setState/forceUpdate wiring\n _fiber: unknown;\n _pendingState: Array<Partial<S> | ((prevState: S, props: P) => Partial<S> | null)>;\n _forceUpdate: boolean;\n _enqueueUpdate(callback?: () => void): void;\n}\n\nexport interface ErrorInfo {\n componentStack: string;\n}\n\n/** A component type can be a function, a class, or a special symbol type */\nexport type ComponentType<P extends Props = Props> =\n | FunctionComponent<P>\n | ClassComponentConstructor<P>\n | string\n | symbol;\n\n/** The core element structure \u2014 equivalent to React.Element */\nexport interface SpecElement<P extends Props = Props> {\n $$typeof: typeof SPEC_ELEMENT_TYPE;\n type: ComponentType<P>;\n props: P;\n key: Key;\n ref: Ref;\n}\n\n/** Fiber node types for the reconciler */\nexport const enum FiberTag {\n FunctionComponent = 0,\n ClassComponent = 1,\n HostRoot = 2,\n HostComponent = 3,\n HostText = 4,\n Fragment = 5,\n ContextProvider = 6,\n ContextConsumer = 7,\n ForwardRef = 8,\n MemoComponent = 9,\n LazyComponent = 10,\n SuspenseComponent = 11,\n Profiler = 12,\n Portal = 13,\n}\n\n/** Effect flags for fiber work */\nexport const enum EffectTag {\n NoEffect = 0,\n Placement = 1,\n Update = 2,\n Deletion = 4,\n ChildDeletion = 8,\n Snapshot = 16,\n Passive = 32,\n Layout = 64,\n Ref = 128,\n}\n\n/** Fiber node \u2014 the internal work unit */\nexport interface Fiber<P extends Props = Props> {\n tag: FiberTag;\n type: ComponentType<P> | null;\n key: Key;\n ref: Ref;\n\n stateNode: unknown;\n pendingProps: P;\n memoizedProps: P | null;\n memoizedState: unknown;\n\n return: Fiber | null;\n child: Fiber | null;\n sibling: Fiber | null;\n index: number;\n\n alternate: Fiber | null;\n effectTag: EffectTag;\n\n updateQueue: unknown;\n dependencies: unknown;\n\n lanes: number;\n childLanes: number;\n}\n\n/** Context type */\nexport interface SpecContext<T> {\n $$typeof: symbol;\n Provider: ComponentType;\n Consumer: ComponentType;\n _currentValue: T;\n _defaultValue: T;\n displayName?: string;\n}\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\nimport {\n SPEC_ELEMENT_TYPE,\n type SpecElement,\n type ComponentType,\n type Props,\n type Key,\n type Ref,\n} from '../shared/types';\n\n/**\n * Creates a SpecifyJS element (virtual DOM node).\n * Equivalent to React.createElement.\n */\nexport function createElement<P extends Props>(\n type: ComponentType<P>,\n config: (Omit<P, 'children'> & { key?: Key; ref?: Ref }) | null,\n ...children: unknown[]\n): SpecElement<P> {\n let key: Key = null;\n let ref: Ref = null;\n const props: Record<string, unknown> = {};\n\n if (config != null) {\n if (config.key !== undefined) {\n key = '' + config.key;\n }\n if (config.ref !== undefined) {\n ref = config.ref as Ref;\n }\n\n for (const propName in config) {\n if (\n Object.prototype.hasOwnProperty.call(config, propName) &&\n propName !== 'key' &&\n propName !== 'ref' &&\n propName !== '__proto__' &&\n propName !== 'constructor' &&\n propName !== 'prototype'\n ) {\n props[propName] = (config as Record<string, unknown>)[propName];\n }\n }\n }\n\n if (children.length === 1) {\n props.children = children[0];\n } else if (children.length > 1) {\n props.children = children;\n }\n\n // Apply default props for component types\n if (\n typeof type === 'function' &&\n (type as unknown as { defaultProps?: Partial<P> }).defaultProps\n ) {\n const defaultProps = (type as unknown as { defaultProps: Partial<P> }).defaultProps;\n for (const propName of Object.keys(defaultProps)) {\n if (propName !== '__proto__' && propName !== 'constructor' && props[propName] === undefined) {\n props[propName] = defaultProps[propName as keyof typeof defaultProps];\n }\n }\n }\n\n return {\n $$typeof: SPEC_ELEMENT_TYPE,\n type,\n props: props as P,\n key,\n ref,\n };\n}\n\n/**\n * Creates a factory function for producing elements of a given type.\n * Legacy API \u2014 equivalent to React.createFactory.\n *\n * @deprecated Use createElement directly or JSX instead.\n */\nexport function createFactory<P extends Props>(\n type: ComponentType<P>,\n): (\n config?: (Omit<P, 'children'> & { key?: Key; ref?: Ref }) | null,\n ...children: unknown[]\n) => SpecElement<P> {\n return (config, ...children) => createElement(type, config ?? null, ...children);\n}\n", "// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\nimport { SPEC_FRAGMENT_TYPE } from '../shared/types';\n\n/**\n * Fragment allows grouping children without adding extra DOM nodes.\n * Usage: <Fragment>...</Fragment> or <>...</>\n */\nexport const Fragment: symbol = SPEC_FRAGMENT_TYPE;\n", "// ============================================================================\n// SpecifyJS JSX Runtime (automatic transform)\n// ============================================================================\n// (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE\n// SPDX-License-Identifier: MIT\n\nimport { createElement } from './core/create-element';\nimport { Fragment } from './core/fragment';\nimport type { Props, Key, ComponentType, SpecElement } from './shared/types';\n\nexport { Fragment };\n\nexport function jsx<P extends Props>(\n type: ComponentType<P>,\n config: P & { key?: Key },\n maybeKey?: Key,\n): SpecElement<P> {\n const key = maybeKey !== undefined ? maybeKey : config.key !== undefined ? config.key : null;\n const { key: _key, ...props } = config;\n const configWithKey = key !== null ? { ...props, key } : props;\n return createElement(type, configWithKey as unknown as P);\n}\n\nexport { jsx as jsxs };\n"],
|
|
5
|
+
"mappings": ";yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,cAAAE,EAAA,WAAAC,IAAA,eAAAC,EAAAJ,GCOO,IAAMK,EAAoB,OAAO,IAAI,cAAc,EAC7CC,EAAqB,OAAO,IAAI,eAAe,EAC/CC,EAAmB,OAAO,IAAI,aAAa,EAC3CC,EAAqB,OAAO,IAAI,eAAe,EAC/CC,EAAqB,OAAO,IAAI,eAAe,EAC/CC,EAAwB,OAAO,IAAI,kBAAkB,EACrDC,EAAiB,OAAO,IAAI,WAAW,EACvCC,EAAiB,OAAO,IAAI,WAAW,EACvCC,EAAqB,OAAO,IAAI,eAAe,EAC/CC,EAAwB,OAAO,IAAI,kBAAkB,EACrDC,EAAqB,OAAO,IAAI,eAAe,ECDrD,SAASC,EACdC,EACAC,KACGC,EACa,CAChB,IAAIC,EAAW,KACXC,EAAW,KACTC,EAAiC,CAAC,EAExC,GAAIJ,GAAU,KAAM,CACdA,EAAO,MAAQ,SACjBE,EAAM,GAAKF,EAAO,KAEhBA,EAAO,MAAQ,SACjBG,EAAMH,EAAO,KAGf,QAAWK,KAAYL,EAEnB,OAAO,UAAU,eAAe,KAAKA,EAAQK,CAAQ,GACrDA,IAAa,OACbA,IAAa,OACbA,IAAa,aACbA,IAAa,eACbA,IAAa,cAEbD,EAAMC,CAAQ,EAAKL,EAAmCK,CAAQ,EAGpE,CASA,GAPIJ,EAAS,SAAW,EACtBG,EAAM,SAAWH,EAAS,CAAC,EAClBA,EAAS,OAAS,IAC3BG,EAAM,SAAWH,GAKjB,OAAOF,GAAS,YACfA,EAAkD,aACnD,CACA,IAAMO,EAAgBP,EAAiD,aACvE,QAAWM,KAAY,OAAO,KAAKC,CAAY,EACzCD,IAAa,aAAeA,IAAa,eAAiBD,EAAMC,CAAQ,IAAM,SAChFD,EAAMC,CAAQ,EAAIC,EAAaD,CAAqC,EAG1E,CAEA,MAAO,CACL,SAAUE,EACV,KAAAR,EACA,MAAOK,EACP,IAAAF,EACA,IAAAC,CACF,CACF,CChEO,IAAMK,EAAmBC,ECGzB,SAASC,EACdC,EACAC,EACAC,EACgB,CAChB,IAAMC,EAAMD,IAAa,OAAYA,EAAWD,EAAO,MAAQ,OAAYA,EAAO,IAAM,KAClF,CAAE,IAAKG,EAAM,GAAGC,CAAM,EAAIJ,EAC1BK,EAAgBH,IAAQ,KAAO,CAAE,GAAGE,EAAO,IAAAF,CAAI,EAAIE,EACzD,OAAOE,EAAcP,EAAMM,CAA6B,CAC1D",
|
|
6
|
+
"names": ["jsx_dev_runtime_exports", "__export", "Fragment", "jsx", "__toCommonJS", "SPEC_ELEMENT_TYPE", "SPEC_FRAGMENT_TYPE", "SPEC_PORTAL_TYPE", "SPEC_PROVIDER_TYPE", "SPEC_CONSUMER_TYPE", "SPEC_FORWARD_REF_TYPE", "SPEC_MEMO_TYPE", "SPEC_LAZY_TYPE", "SPEC_SUSPENSE_TYPE", "SPEC_STRICT_MODE_TYPE", "SPEC_PROFILER_TYPE", "createElement", "type", "config", "children", "key", "ref", "props", "propName", "defaultProps", "SPEC_ELEMENT_TYPE", "Fragment", "SPEC_FRAGMENT_TYPE", "jsx", "type", "config", "maybeKey", "key", "_key", "props", "configWithKey", "createElement"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
/* (c) 2025-2026 Asymmetric Effort, LLC. MIT LICENSE */
|
|
2
|
+
var P=Symbol.for("spec.element"),u=Symbol.for("spec.fragment"),y=Symbol.for("spec.portal"),a=Symbol.for("spec.provider"),S=Symbol.for("spec.consumer"),i=Symbol.for("spec.forward_ref"),f=Symbol.for("spec.memo"),C=Symbol.for("spec.lazy"),x=Symbol.for("spec.suspense"),_=Symbol.for("spec.strict_mode"),E=Symbol.for("spec.profiler");function m(r,o,...t){let p=null,l=null,n={};if(o!=null){o.key!==void 0&&(p=""+o.key),o.ref!==void 0&&(l=o.ref);for(let e in o)Object.prototype.hasOwnProperty.call(o,e)&&e!=="key"&&e!=="ref"&&e!=="__proto__"&&e!=="constructor"&&e!=="prototype"&&(n[e]=o[e])}if(t.length===1?n.children=t[0]:t.length>1&&(n.children=t),typeof r=="function"&&r.defaultProps){let e=r.defaultProps;for(let s of Object.keys(e))s!=="__proto__"&&s!=="constructor"&&n[s]===void 0&&(n[s]=e[s])}return{$$typeof:P,type:r,props:n,key:p,ref:l}}var c=u;function d(r,o,t){let p=t!==void 0?t:o.key!==void 0?o.key:null,{key:l,...n}=o,e=p!==null?{...n,key:p}:n;return m(r,e)}export{c as Fragment,d as jsxDEV};
|
|
2
3
|
//# sourceMappingURL=specifyjs-jsx-dev-runtime.esm.js.map
|