@omnitron-dev/prism 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +148 -0
- package/dist/blocks/index.js +3 -1
- package/dist/blocks/index.js.map +1 -1
- package/dist/{chunk-S6SEGBX6.js → chunk-472SOF76.js} +4 -4
- package/dist/{chunk-S6SEGBX6.js.map → chunk-472SOF76.js.map} +1 -1
- package/dist/{chunk-Z5OSPAOC.js → chunk-4Z5DE5GK.js} +78 -75
- package/dist/chunk-4Z5DE5GK.js.map +1 -0
- package/dist/chunk-52PQL67Q.js +559 -0
- package/dist/chunk-52PQL67Q.js.map +1 -0
- package/dist/chunk-75FQ5IW3.js +590 -0
- package/dist/chunk-75FQ5IW3.js.map +1 -0
- package/dist/{chunk-6AHI4GSV.js → chunk-7G5D5PTC.js} +4 -3
- package/dist/chunk-7G5D5PTC.js.map +1 -0
- package/dist/chunk-BJE2AKD4.js +105 -0
- package/dist/chunk-BJE2AKD4.js.map +1 -0
- package/dist/chunk-FF5RF32O.js +248 -0
- package/dist/chunk-FF5RF32O.js.map +1 -0
- package/dist/{chunk-OBJ244BO.js → chunk-GMIE6III.js} +9 -42
- package/dist/chunk-GMIE6III.js.map +1 -0
- package/dist/chunk-GUGTDURV.js +826 -0
- package/dist/chunk-GUGTDURV.js.map +1 -0
- package/dist/chunk-HOXFSQUV.js +573 -0
- package/dist/chunk-HOXFSQUV.js.map +1 -0
- package/dist/chunk-JSQTYDPG.js +3 -0
- package/dist/chunk-JSQTYDPG.js.map +1 -0
- package/dist/{chunk-ZTATTUH7.js → chunk-KQ67XB6T.js} +213 -651
- package/dist/chunk-KQ67XB6T.js.map +1 -0
- package/dist/{chunk-WFD54GQQ.js → chunk-LOY2NPCO.js} +14 -573
- package/dist/chunk-LOY2NPCO.js.map +1 -0
- package/dist/{chunk-YQW43BDH.js → chunk-LSPFFEJT.js} +240 -1824
- package/dist/chunk-LSPFFEJT.js.map +1 -0
- package/dist/{chunk-BZOL7GMU.js → chunk-OKTLA23Q.js} +4 -4
- package/dist/chunk-OKTLA23Q.js.map +1 -0
- package/dist/chunk-PFT2BNYO.js +191 -0
- package/dist/chunk-PFT2BNYO.js.map +1 -0
- package/dist/chunk-PGHEP4JD.js +106 -0
- package/dist/chunk-PGHEP4JD.js.map +1 -0
- package/dist/chunk-PXXPLHIY.js +74 -0
- package/dist/chunk-PXXPLHIY.js.map +1 -0
- package/dist/chunk-SU3LVQ7N.js +518 -0
- package/dist/chunk-SU3LVQ7N.js.map +1 -0
- package/dist/chunk-YHE7HXSG.js +206 -0
- package/dist/chunk-YHE7HXSG.js.map +1 -0
- package/dist/cli/index.js +7 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/components/accordion/accordion.d.ts.map +1 -1
- package/dist/components/admin-filters/admin-data-table.d.ts.map +1 -1
- package/dist/components/admin-filters/filter-toolbar.d.ts.map +1 -1
- package/dist/components/date-input/date-input.d.ts +27 -0
- package/dist/components/date-input/date-input.d.ts.map +1 -0
- package/dist/components/date-input/index.d.ts +4 -0
- package/dist/components/date-input/index.d.ts.map +1 -0
- package/dist/components/date-input/value.d.ts +9 -0
- package/dist/components/date-input/value.d.ts.map +1 -0
- package/dist/components/doc-layout/doc-sidebar.d.ts +4 -1
- package/dist/components/doc-layout/doc-sidebar.d.ts.map +1 -1
- package/dist/components/doc-layout/index.js +6 -0
- package/dist/components/doc-layout/index.js.map +1 -0
- package/dist/components/editor/editor.d.ts.map +1 -1
- package/dist/components/editor/icons/index.d.ts +32 -40
- package/dist/components/editor/icons/index.d.ts.map +1 -1
- package/dist/components/editor/index.js +3 -1
- package/dist/components/error-boundary/error-boundary.d.ts.map +1 -1
- package/dist/components/index.css +4 -0
- package/dist/components/index.css.map +1 -1
- package/dist/components/index.d.ts +4 -4
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +18 -8
- package/dist/components/knowledge-graph/edge-labels.d.ts +14 -0
- package/dist/components/knowledge-graph/edge-labels.d.ts.map +1 -0
- package/dist/components/knowledge-graph/graph.d.ts +56 -0
- package/dist/components/knowledge-graph/graph.d.ts.map +1 -0
- package/dist/components/knowledge-graph/index.css +176 -0
- package/dist/components/knowledge-graph/index.css.map +1 -0
- package/dist/components/knowledge-graph/index.d.ts +3 -0
- package/dist/components/knowledge-graph/index.d.ts.map +1 -0
- package/dist/components/knowledge-graph/index.js +795 -0
- package/dist/components/knowledge-graph/index.js.map +1 -0
- package/dist/components/knowledge-graph/label-layout.d.ts +28 -0
- package/dist/components/knowledge-graph/label-layout.d.ts.map +1 -0
- package/dist/components/knowledge-graph/label-store.d.ts +15 -0
- package/dist/components/knowledge-graph/label-store.d.ts.map +1 -0
- package/dist/components/knowledge-graph/model.d.ts +92 -0
- package/dist/components/knowledge-graph/model.d.ts.map +1 -0
- package/dist/components/lightbox/lightbox.d.ts.map +1 -1
- package/dist/components/map/Map.d.ts +19 -43
- package/dist/components/map/Map.d.ts.map +1 -1
- package/dist/components/map/MapCoverageLayer.d.ts +1 -1
- package/dist/components/map/MapCoverageLayer.d.ts.map +1 -1
- package/dist/components/map/MapMarker.d.ts +1 -1
- package/dist/components/map/MapMarker.d.ts.map +1 -1
- package/dist/components/map/MapPlaceSearch.d.ts +33 -0
- package/dist/components/map/MapPlaceSearch.d.ts.map +1 -0
- package/dist/components/map/MapPointPicker.d.ts +21 -12
- package/dist/components/map/MapPointPicker.d.ts.map +1 -1
- package/dist/components/map/coordinates.d.ts +10 -0
- package/dist/components/map/coordinates.d.ts.map +1 -0
- package/dist/components/map/index.css +4 -0
- package/dist/components/map/index.css.map +1 -0
- package/dist/components/map/index.d.ts +7 -2
- package/dist/components/map/index.d.ts.map +1 -1
- package/dist/components/map/index.js +3 -0
- package/dist/components/map/index.js.map +1 -0
- package/dist/components/nav-card/nav-card.d.ts.map +1 -1
- package/dist/components/rail/rail.d.ts.map +1 -1
- package/dist/components/research/diagram-image.d.ts +11 -0
- package/dist/components/research/diagram-image.d.ts.map +1 -0
- package/dist/components/research/diagram.d.ts +8 -0
- package/dist/components/research/diagram.d.ts.map +1 -0
- package/dist/components/research/document.d.ts +33 -0
- package/dist/components/research/document.d.ts.map +1 -0
- package/dist/components/research/frontmatter.d.ts +15 -0
- package/dist/components/research/frontmatter.d.ts.map +1 -0
- package/dist/components/research/index.css +51 -0
- package/dist/components/research/index.css.map +1 -0
- package/dist/components/research/index.d.ts +3 -0
- package/dist/components/research/index.d.ts.map +1 -0
- package/dist/components/research/index.js +6 -0
- package/dist/components/research/index.js.map +1 -0
- package/dist/components/research/parse.d.ts +29 -0
- package/dist/components/research/parse.d.ts.map +1 -0
- package/dist/components/research-editor/block-commands.d.ts +20 -0
- package/dist/components/research-editor/block-commands.d.ts.map +1 -0
- package/dist/components/research-editor/block-controls.d.ts +13 -0
- package/dist/components/research-editor/block-controls.d.ts.map +1 -0
- package/dist/components/research-editor/editor.d.ts +75 -0
- package/dist/components/research-editor/editor.d.ts.map +1 -0
- package/dist/components/research-editor/extensions.d.ts +14 -0
- package/dist/components/research-editor/extensions.d.ts.map +1 -0
- package/dist/components/research-editor/index.css +332 -0
- package/dist/components/research-editor/index.css.map +1 -0
- package/dist/components/research-editor/index.d.ts +5 -0
- package/dist/components/research-editor/index.d.ts.map +1 -0
- package/dist/components/research-editor/index.js +1592 -0
- package/dist/components/research-editor/index.js.map +1 -0
- package/dist/components/research-editor/math-input.d.ts +32 -0
- package/dist/components/research-editor/math-input.d.ts.map +1 -0
- package/dist/components/research-editor/math-markup.d.ts +4 -0
- package/dist/components/research-editor/math-markup.d.ts.map +1 -0
- package/dist/components/research-editor/math-navigation.d.ts +6 -0
- package/dist/components/research-editor/math-navigation.d.ts.map +1 -0
- package/dist/components/research-editor/math-node.d.ts +11 -0
- package/dist/components/research-editor/math-node.d.ts.map +1 -0
- package/dist/components/research-editor/source.d.ts +19 -0
- package/dist/components/research-editor/source.d.ts.map +1 -0
- package/dist/components/scrollbar/scrollbar.d.ts +4 -2
- package/dist/components/scrollbar/scrollbar.d.ts.map +1 -1
- package/dist/components/search-input/search-input.d.ts +0 -10
- package/dist/components/search-input/search-input.d.ts.map +1 -1
- package/dist/components/tiptap-renderer/tiptap-renderer.d.ts +4 -3
- package/dist/components/tiptap-renderer/tiptap-renderer.d.ts.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +8 -4
- package/dist/core/provider.d.ts +7 -2
- package/dist/core/provider.d.ts.map +1 -1
- package/dist/forms/schema-provider.d.ts +3 -3
- package/dist/forms/schema-utils.d.ts +3 -3
- package/dist/hooks/index.js +9 -5
- package/dist/icons/context.d.ts +17 -0
- package/dist/icons/context.d.ts.map +1 -0
- package/dist/icons/controls.d.ts +51 -0
- package/dist/icons/controls.d.ts.map +1 -0
- package/dist/icons/index.d.ts +3 -0
- package/dist/icons/index.d.ts.map +1 -0
- package/dist/icons/index.js +4 -0
- package/dist/icons/index.js.map +1 -0
- package/dist/icons/theme.d.ts +4 -0
- package/dist/icons/theme.d.ts.map +1 -0
- package/dist/index.css +4 -0
- package/dist/index.css.map +1 -1
- package/dist/index.js +24 -13
- package/dist/index.js.map +1 -1
- package/dist/layouts/core/header-section.d.ts.map +1 -1
- package/dist/layouts/dashboard/labels.d.ts +12 -0
- package/dist/layouts/dashboard/labels.d.ts.map +1 -0
- package/dist/layouts/dashboard/layout.d.ts +7 -1
- package/dist/layouts/dashboard/layout.d.ts.map +1 -1
- package/dist/layouts/dashboard/sidenav.d.ts +7 -3
- package/dist/layouts/dashboard/sidenav.d.ts.map +1 -1
- package/dist/layouts/index.d.ts +5 -0
- package/dist/layouts/index.d.ts.map +1 -1
- package/dist/layouts/index.js +6 -1
- package/dist/layouts/panel-layout.d.ts +35 -0
- package/dist/layouts/panel-layout.d.ts.map +1 -0
- package/dist/layouts/sidebar-toggle.d.ts +11 -0
- package/dist/layouts/sidebar-toggle.d.ts.map +1 -0
- package/dist/state/stores/auth.d.ts +4 -16
- package/dist/state/stores/auth.d.ts.map +1 -1
- package/dist/state/stores/ui.d.ts +7 -105
- package/dist/state/stores/ui.d.ts.map +1 -1
- package/dist/theme/components/Button.d.ts.map +1 -1
- package/dist/theme/components/FormControls.d.ts +3 -12
- package/dist/theme/components/FormControls.d.ts.map +1 -1
- package/dist/theme/components/index.d.ts.map +1 -1
- package/dist/theme/create-theme.d.ts +5 -17
- package/dist/theme/create-theme.d.ts.map +1 -1
- package/dist/theme/index.js +6 -2
- package/dist/theme/mixins.d.ts +3 -1
- package/dist/theme/mixins.d.ts.map +1 -1
- package/dist/theme/palette/overrides.d.ts +23 -0
- package/dist/theme/palette/overrides.d.ts.map +1 -0
- package/dist/ui/index.d.ts +18 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +148 -0
- package/dist/ui/index.js.map +1 -0
- package/package.json +92 -45
- package/dist/chunk-6AHI4GSV.js.map +0 -1
- package/dist/chunk-BZOL7GMU.js.map +0 -1
- package/dist/chunk-OBJ244BO.js.map +0 -1
- package/dist/chunk-WFD54GQQ.js.map +0 -1
- package/dist/chunk-YQW43BDH.js.map +0 -1
- package/dist/chunk-Z5OSPAOC.js.map +0 -1
- package/dist/chunk-ZTATTUH7.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/icons/controls.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,IAAM,UAAA,GAAa,eAAA,CAAgB,QAAA,EAAU,iBAAiB;AAE9D,IAAM,SAAA,GAAY,eAAA,CAAgB,OAAA,EAAS,gBAAgB;AAE3D,IAAM,eAAA,GAAkB,eAAA,CAAgB,aAAA,EAAe,sBAAsB;AAE7E,IAAM,aAAA,GAAgB,eAAA,CAAgB,WAAA,EAAa,oBAAoB;AAEvE,IAAM,eAAA,GAAkB,eAAA,CAAgB,aAAA,EAAe,sBAAsB;AAE7E,IAAM,gBAAA,GAAmB,eAAA,CAAgB,cAAA,EAAgB,uBAAuB;AAEhF,IAAM,WAAA,GAAc,eAAA,CAAgB,SAAA,EAAW,kBAAkB;AAEjE,IAAM,aAAA,GAAgB,eAAA,CAAgB,WAAA,EAAa,oBAAoB;AAEvE,IAAM,aAAA,GAAgB,eAAA,CAAgB,WAAA,EAAa,oBAAoB;AAEvE,IAAM,cAAA,GAAiB,eAAA,CAAgB,YAAA,EAAc,qBAAqB;AAE1E,IAAM,gBAAA,GAAmB,eAAA,CAAgB,cAAA,EAAgB,uBAAuB;AAEhF,IAAM,iBAAA,GAAoB,eAAA,CAAgB,eAAA,EAAiB,wBAAwB;AAEnF,IAAM,eAAA,GAAkB,eAAA,CAAgB,aAAA,EAAe,sBAAsB;AAE7E,IAAM,QAAA,GAAW,eAAA,CAAgB,MAAA,EAAQ,eAAe;AAExD,IAAM,OAAA,GAAU,eAAA,CAAgB,KAAA,EAAO,cAAc;AAErD,IAAM,UAAA,GAAa,eAAA,CAAgB,QAAA,EAAU,iBAAiB;AAE9D,IAAM,QAAA,GAAW,eAAA,CAAgB,MAAA,EAAQ,eAAe;AAExD,IAAM,SAAA,GAAY,eAAA,CAAgB,OAAA,EAAS,gBAAgB;AAE3D,IAAM,QAAA,GAAW,eAAA,CAAgB,MAAA,EAAQ,eAAe;AAExD,IAAM,WAAA,GAAc,eAAA,CAAgB,SAAA,EAAW,kBAAkB;AAEjE,IAAM,SAAA,GAAY,eAAA,CAAgB,OAAA,EAAS,gBAAgB;AAE3D,IAAM,WAAA,GAAc,eAAA,CAAgB,SAAA,EAAW,kBAAkB;AAEjE,IAAM,YAAA,GAAe,eAAA,CAAgB,UAAA,EAAY,mBAAmB;AAEpE,IAAM,mBAAA,GAAsB,eAAA,CAAgB,iBAAA,EAAmB,0BAA0B;AAEzF,IAAM,iBAAA,GAAoB,eAAA,CAAgB,eAAA,EAAiB,wBAAwB;AAEnF,IAAM,SAAA,GAAY,eAAA,CAAgB,OAAA,EAAS,gBAAgB;AAE3D,IAAM,gBAAA,GAAmB,eAAA,CAAgB,cAAA,EAAgB,uBAAuB;AAEhF,IAAM,QAAA,GAAW,eAAA,CAAgB,MAAA,EAAQ,eAAe;AAExD,IAAM,UAAA,GAAa,eAAA,CAAgB,QAAA,EAAU,iBAAiB;AAE9D,IAAM,SAAA,GAAY,eAAA,CAAgB,OAAA,EAAS,gBAAgB;AAE3D,IAAM,QAAA,GAAW,eAAA,CAAgB,MAAA,EAAQ,eAAe;AAExD,IAAM,YAAA,GAAe,eAAA,CAAgB,UAAA,EAAY,mBAAmB;AAEpE,IAAM,YAAA,GAAe,eAAA,CAAgB,UAAA,EAAY,mBAAmB;AAEpE,IAAM,UAAA,GAAa,eAAA,CAAgB,QAAA,EAAU,iBAAiB;AAE9D,IAAM,UAAA,GAAa,eAAA,CAAgB,QAAA,EAAU,iBAAiB;AAE9D,IAAM,WAAA,GAAc,eAAA,CAAgB,SAAA,EAAW,kBAAkB;AAEjE,IAAM,WAAA,GAAc,eAAA,CAAgB,SAAA,EAAW,kBAAkB;AAEjE,IAAM,cAAA,GAAiB,eAAA,CAAgB,YAAA,EAAc,qBAAqB;AAE1E,IAAM,kBAAA,GAAqB,eAAA,CAAgB,gBAAA,EAAkB,yBAAyB;AAEtF,IAAM,SAAA,GAAY,eAAA,CAAgB,OAAA,EAAS,gBAAgB;AAE3D,IAAM,QAAA,GAAW,eAAA,CAAgB,MAAA,EAAQ,eAAe;AAExD,IAAM,OAAA,GAAU,eAAA,CAAgB,KAAA,EAAO,cAAc;AAErD,IAAM,UAAA,GAAa,eAAA,CAAgB,QAAA,EAAU,iBAAiB;AAE9D,IAAM,YAAA,GAAe,eAAA,CAAgB,UAAA,EAAY,mBAAmB;AAEpE,IAAM,QAAA,GAAW,eAAA,CAAgB,MAAA,EAAQ,eAAe;AAExD,IAAM,UAAA,GAAa,eAAA,CAAgB,QAAA,EAAU,iBAAiB;AAE9D,IAAM,QAAA,GAAW,eAAA,CAAgB,MAAA,EAAQ,eAAe;AAExD,IAAM,aAAA,GAAgB,eAAA,CAAgB,WAAA,EAAa,oBAAoB;AAEvE,IAAM,aAAA,GAAgB,eAAA,CAAgB,WAAA,EAAa,oBAAoB;AAEvE,IAAM,YAAA,GAAe,eAAA,CAAgB,UAAA,EAAY,mBAAmB","file":"chunk-PGHEP4JD.js","sourcesContent":["import { createPrismIcon } from './context.js';\nimport DefaultSearchIcon from '@mui/icons-material/Search';\nexport const SearchIcon = createPrismIcon('search', DefaultSearchIcon);\nimport DefaultCloseIcon from '@mui/icons-material/Close';\nexport const CloseIcon = createPrismIcon('close', DefaultCloseIcon);\nimport DefaultChevronDownIcon from '@mui/icons-material/ExpandMore';\nexport const ChevronDownIcon = createPrismIcon('chevronDown', DefaultChevronDownIcon);\nimport DefaultChevronUpIcon from '@mui/icons-material/ExpandLess';\nexport const ChevronUpIcon = createPrismIcon('chevronUp', DefaultChevronUpIcon);\nimport DefaultChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nexport const ChevronLeftIcon = createPrismIcon('chevronLeft', DefaultChevronLeftIcon);\nimport DefaultChevronRightIcon from '@mui/icons-material/ChevronRight';\nexport const ChevronRightIcon = createPrismIcon('chevronRight', DefaultChevronRightIcon);\nimport DefaultArrowUpIcon from '@mui/icons-material/ArrowUpward';\nexport const ArrowUpIcon = createPrismIcon('arrowUp', DefaultArrowUpIcon);\nimport DefaultArrowDownIcon from '@mui/icons-material/ArrowDownward';\nexport const ArrowDownIcon = createPrismIcon('arrowDown', DefaultArrowDownIcon);\nimport DefaultArrowLeftIcon from '@mui/icons-material/ArrowBack';\nexport const ArrowLeftIcon = createPrismIcon('arrowLeft', DefaultArrowLeftIcon);\nimport DefaultArrowRightIcon from '@mui/icons-material/ArrowForward';\nexport const ArrowRightIcon = createPrismIcon('arrowRight', DefaultArrowRightIcon);\nimport DefaultArrowUpRightIcon from '@mui/icons-material/NorthEast';\nexport const ArrowUpRightIcon = createPrismIcon('arrowUpRight', DefaultArrowUpRightIcon);\nimport DefaultPanelCollapseIcon from '@mui/icons-material/KeyboardDoubleArrowLeft';\nexport const PanelCollapseIcon = createPrismIcon('panelCollapse', DefaultPanelCollapseIcon);\nimport DefaultPanelExpandIcon from '@mui/icons-material/KeyboardDoubleArrowRight';\nexport const PanelExpandIcon = createPrismIcon('panelExpand', DefaultPanelExpandIcon);\nimport DefaultMenuIcon from '@mui/icons-material/Menu';\nexport const MenuIcon = createPrismIcon('menu', DefaultMenuIcon);\nimport DefaultAddIcon from '@mui/icons-material/Add';\nexport const AddIcon = createPrismIcon('add', DefaultAddIcon);\nimport DefaultRemoveIcon from '@mui/icons-material/Remove';\nexport const RemoveIcon = createPrismIcon('remove', DefaultRemoveIcon);\nimport DefaultDragIcon from '@mui/icons-material/DragIndicator';\nexport const DragIcon = createPrismIcon('drag', DefaultDragIcon);\nimport DefaultCheckIcon from '@mui/icons-material/Check';\nexport const CheckIcon = createPrismIcon('check', DefaultCheckIcon);\nimport DefaultInfoIcon from '@mui/icons-material/InfoOutlined';\nexport const InfoIcon = createPrismIcon('info', DefaultInfoIcon);\nimport DefaultWarningIcon from '@mui/icons-material/WarningAmber';\nexport const WarningIcon = createPrismIcon('warning', DefaultWarningIcon);\nimport DefaultErrorIcon from '@mui/icons-material/ErrorOutlined';\nexport const ErrorIcon = createPrismIcon('error', DefaultErrorIcon);\nimport DefaultSuccessIcon from '@mui/icons-material/CheckCircleOutlined';\nexport const SuccessIcon = createPrismIcon('success', DefaultSuccessIcon);\nimport DefaultCheckboxIcon from '@mui/icons-material/CheckBoxOutlineBlank';\nexport const CheckboxIcon = createPrismIcon('checkbox', DefaultCheckboxIcon);\nimport DefaultCheckboxCheckedIcon from '@mui/icons-material/CheckBox';\nexport const CheckboxCheckedIcon = createPrismIcon('checkboxChecked', DefaultCheckboxCheckedIcon);\nimport DefaultCheckboxMixedIcon from '@mui/icons-material/IndeterminateCheckBox';\nexport const CheckboxMixedIcon = createPrismIcon('checkboxMixed', DefaultCheckboxMixedIcon);\nimport DefaultRadioIcon from '@mui/icons-material/RadioButtonUnchecked';\nexport const RadioIcon = createPrismIcon('radio', DefaultRadioIcon);\nimport DefaultRadioCheckedIcon from '@mui/icons-material/RadioButtonChecked';\nexport const RadioCheckedIcon = createPrismIcon('radioChecked', DefaultRadioCheckedIcon);\nimport DefaultMoreIcon from '@mui/icons-material/MoreHoriz';\nexport const MoreIcon = createPrismIcon('more', DefaultMoreIcon);\nimport DefaultFilterIcon from '@mui/icons-material/FilterList';\nexport const FilterIcon = createPrismIcon('filter', DefaultFilterIcon);\nimport DefaultEmptyIcon from '@mui/icons-material/InboxOutlined';\nexport const EmptyIcon = createPrismIcon('empty', DefaultEmptyIcon);\nimport DefaultCopyIcon from '@mui/icons-material/ContentCopy';\nexport const CopyIcon = createPrismIcon('copy', DefaultCopyIcon);\nimport DefaultCalendarIcon from '@mui/icons-material/CalendarMonth';\nexport const CalendarIcon = createPrismIcon('calendar', DefaultCalendarIcon);\nimport DefaultDownloadIcon from '@mui/icons-material/Download';\nexport const DownloadIcon = createPrismIcon('download', DefaultDownloadIcon);\nimport DefaultUploadIcon from '@mui/icons-material/Upload';\nexport const UploadIcon = createPrismIcon('upload', DefaultUploadIcon);\nimport DefaultZoomInIcon from '@mui/icons-material/ZoomIn';\nexport const ZoomInIcon = createPrismIcon('zoomIn', DefaultZoomInIcon);\nimport DefaultZoomOutIcon from '@mui/icons-material/ZoomOut';\nexport const ZoomOutIcon = createPrismIcon('zoomOut', DefaultZoomOutIcon);\nimport DefaultFitViewIcon from '@mui/icons-material/FitScreen';\nexport const FitViewIcon = createPrismIcon('fitView', DefaultFitViewIcon);\nimport DefaultFullscreenIcon from '@mui/icons-material/Fullscreen';\nexport const FullscreenIcon = createPrismIcon('fullscreen', DefaultFullscreenIcon);\nimport DefaultFullscreenExitIcon from '@mui/icons-material/FullscreenExit';\nexport const FullscreenExitIcon = createPrismIcon('fullscreenExit', DefaultFullscreenExitIcon);\nimport DefaultShareIcon from '@mui/icons-material/Share';\nexport const ShareIcon = createPrismIcon('share', DefaultShareIcon);\nimport DefaultPlayIcon from '@mui/icons-material/PlayArrow';\nexport const PlayIcon = createPrismIcon('play', DefaultPlayIcon);\nimport DefaultEyeIcon from '@mui/icons-material/Visibility';\nexport const EyeIcon = createPrismIcon('eye', DefaultEyeIcon);\nimport DefaultEyeOffIcon from '@mui/icons-material/VisibilityOff';\nexport const EyeOffIcon = createPrismIcon('eyeOff', DefaultEyeOffIcon);\nimport DefaultKeyboardIcon from '@mui/icons-material/KeyboardOutlined';\nexport const KeyboardIcon = createPrismIcon('keyboard', DefaultKeyboardIcon);\nimport DefaultLockIcon from '@mui/icons-material/LockOutlined';\nexport const LockIcon = createPrismIcon('lock', DefaultLockIcon);\nimport DefaultUnlockIcon from '@mui/icons-material/LockOpenOutlined';\nexport const UnlockIcon = createPrismIcon('unlock', DefaultUnlockIcon);\nimport DefaultStarIcon from '@mui/icons-material/Star';\nexport const StarIcon = createPrismIcon('star', DefaultStarIcon);\nimport DefaultStarEmptyIcon from '@mui/icons-material/StarBorder';\nexport const StarEmptyIcon = createPrismIcon('starEmpty', DefaultStarEmptyIcon);\nimport DefaultFirstPageIcon from '@mui/icons-material/FirstPage';\nexport const FirstPageIcon = createPrismIcon('firstPage', DefaultFirstPageIcon);\nimport DefaultLastPageIcon from '@mui/icons-material/LastPage';\nexport const LastPageIcon = createPrismIcon('lastPage', DefaultLastPageIcon);\n"]}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { scrollbarStyles } from './chunk-HOXFSQUV.js';
|
|
2
|
+
import Box from '@mui/material/Box';
|
|
3
|
+
import { styled } from '@mui/material/styles';
|
|
4
|
+
import { jsx } from 'react/jsx-runtime';
|
|
5
|
+
|
|
6
|
+
var ScrollbarRoot = styled(Box, {
|
|
7
|
+
shouldForwardProp: (prop) => prop !== "ownerState"
|
|
8
|
+
})(({ theme, ownerState }) => {
|
|
9
|
+
const { fillContent, hideScrollbar, autoHide, axis } = ownerState;
|
|
10
|
+
const getOverflow = () => {
|
|
11
|
+
if (axis === "x") return { overflowX: "auto", overflowY: "hidden" };
|
|
12
|
+
if (axis === "y") return { overflowX: "hidden", overflowY: "auto" };
|
|
13
|
+
return { overflow: "auto" };
|
|
14
|
+
};
|
|
15
|
+
return {
|
|
16
|
+
minWidth: 0,
|
|
17
|
+
minHeight: 0,
|
|
18
|
+
...getOverflow(),
|
|
19
|
+
...fillContent && {
|
|
20
|
+
flexGrow: 1,
|
|
21
|
+
display: "flex",
|
|
22
|
+
flexDirection: "column"
|
|
23
|
+
},
|
|
24
|
+
...!hideScrollbar && scrollbarStyles(theme, { autoHide }),
|
|
25
|
+
...hideScrollbar && {
|
|
26
|
+
scrollbarWidth: "none",
|
|
27
|
+
msOverflowStyle: "none",
|
|
28
|
+
"&::-webkit-scrollbar": {
|
|
29
|
+
display: "none"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
});
|
|
34
|
+
function Scrollbar({
|
|
35
|
+
children,
|
|
36
|
+
sx,
|
|
37
|
+
fillContent = false,
|
|
38
|
+
hideScrollbar = false,
|
|
39
|
+
autoHide = true,
|
|
40
|
+
axis = "y",
|
|
41
|
+
maxHeight,
|
|
42
|
+
minHeight,
|
|
43
|
+
className,
|
|
44
|
+
ref,
|
|
45
|
+
...other
|
|
46
|
+
}) {
|
|
47
|
+
const ownerState = {
|
|
48
|
+
fillContent,
|
|
49
|
+
hideScrollbar,
|
|
50
|
+
autoHide,
|
|
51
|
+
axis
|
|
52
|
+
};
|
|
53
|
+
return /* @__PURE__ */ jsx(
|
|
54
|
+
ScrollbarRoot,
|
|
55
|
+
{
|
|
56
|
+
ref,
|
|
57
|
+
ownerState,
|
|
58
|
+
className,
|
|
59
|
+
sx: [
|
|
60
|
+
{
|
|
61
|
+
...maxHeight !== void 0 && { maxHeight },
|
|
62
|
+
...minHeight !== void 0 && { minHeight }
|
|
63
|
+
},
|
|
64
|
+
...Array.isArray(sx) ? sx : [sx]
|
|
65
|
+
],
|
|
66
|
+
...other,
|
|
67
|
+
children
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export { Scrollbar };
|
|
73
|
+
//# sourceMappingURL=chunk-PXXPLHIY.js.map
|
|
74
|
+
//# sourceMappingURL=chunk-PXXPLHIY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/scrollbar/scrollbar.tsx"],"names":[],"mappings":";;;;;AAwDA,IAAM,aAAA,GAAgB,OAAO,GAAA,EAAK;AAAA,EAChC,iBAAA,EAAmB,CAAC,IAAA,KAAS,IAAA,KAAS;AACxC,CAAC,CAAA,CAAsB,CAAC,EAAE,KAAA,EAAO,YAAW,KAAM;AAChD,EAAA,MAAM,EAAE,WAAA,EAAa,aAAA,EAAe,QAAA,EAAU,MAAK,GAAI,UAAA;AAEvD,EAAA,MAAM,cAAc,MAAM;AACxB,IAAA,IAAI,SAAS,GAAA,EAAK,OAAO,EAAE,SAAA,EAAW,MAAA,EAAQ,WAAW,QAAA,EAAS;AAClE,IAAA,IAAI,SAAS,GAAA,EAAK,OAAO,EAAE,SAAA,EAAW,QAAA,EAAU,WAAW,MAAA,EAAO;AAClE,IAAA,OAAO,EAAE,UAAU,MAAA,EAAO;AAAA,EAC5B,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,QAAA,EAAU,CAAA;AAAA,IACV,SAAA,EAAW,CAAA;AAAA,IACX,GAAG,WAAA,EAAY;AAAA,IACf,GAAI,WAAA,IAAe;AAAA,MACjB,QAAA,EAAU,CAAA;AAAA,MACV,OAAA,EAAS,MAAA;AAAA,MACT,aAAA,EAAe;AAAA,KACjB;AAAA,IACA,GAAI,CAAC,aAAA,IAAiB,gBAAgB,KAAA,EAAO,EAAE,UAAU,CAAA;AAAA,IACzD,GAAI,aAAA,IAAiB;AAAA,MACnB,cAAA,EAAgB,MAAA;AAAA,MAChB,eAAA,EAAiB,MAAA;AAAA,MACjB,sBAAA,EAAwB;AAAA,QACtB,OAAA,EAAS;AAAA;AACX;AACF,GACF;AACF,CAAC,CAAA;AA+BM,SAAS,SAAA,CAAU;AAAA,EACxB,QAAA;AAAA,EACA,EAAA;AAAA,EACA,WAAA,GAAc,KAAA;AAAA,EACd,aAAA,GAAgB,KAAA;AAAA,EAChB,QAAA,GAAW,IAAA;AAAA,EACX,IAAA,GAAO,GAAA;AAAA,EACP,SAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAmD;AACjD,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,WAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACF;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,EAAA,EAAI;AAAA,QACF;AAAA,UACE,GAAI,SAAA,KAAc,MAAA,IAAa,EAAE,SAAA,EAAU;AAAA,UAC3C,GAAI,SAAA,KAAc,MAAA,IAAa,EAAE,SAAA;AAAU,SAC7C;AAAA,QACA,GAAI,KAAA,CAAM,OAAA,CAAQ,EAAE,CAAA,GAAI,EAAA,GAAK,CAAC,EAAE;AAAA,OAClC;AAAA,MACC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ","file":"chunk-PXXPLHIY.js","sourcesContent":["'use client';\n\n/**\n * Scrollbar Component\n *\n * Custom scrollbar wrapper with themed styling.\n *\n * @module components/scrollbar\n */\n\nimport type { ReactNode, Ref } from 'react';\nimport Box from '@mui/material/Box';\nimport { styled } from '@mui/material/styles';\nimport { scrollbarStyles } from '../../theme/mixins.js';\nimport type { SxProps, Theme } from '@mui/material/styles';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport interface ScrollbarProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {\n /** Content to scroll */\n children?: ReactNode;\n /** Additional styles */\n sx?: SxProps<Theme>;\n /** Fill available content space */\n fillContent?: boolean;\n /** Hide scrollbar (content still scrollable) */\n hideScrollbar?: boolean;\n /** Reveal on hover or keyboard focus; native visibility on touch/high contrast. */\n autoHide?: boolean;\n /** Scrollbar axis */\n axis?: 'x' | 'y' | 'both';\n /** Max height constraint */\n maxHeight?: number | string;\n /** Min height constraint */\n minHeight?: number | string;\n /** Additional class name */\n className?: string;\n /** Scroll event handler */\n onScroll?: React.UIEventHandler<HTMLDivElement>;\n}\n\n// =============================================================================\n// STYLED COMPONENT\n// =============================================================================\n\ninterface ScrollbarRootProps {\n ownerState: {\n fillContent: boolean;\n hideScrollbar: boolean;\n autoHide: boolean;\n axis: 'x' | 'y' | 'both';\n };\n}\n\nconst ScrollbarRoot = styled(Box, {\n shouldForwardProp: (prop) => prop !== 'ownerState',\n})<ScrollbarRootProps>(({ theme, ownerState }) => {\n const { fillContent, hideScrollbar, autoHide, axis } = ownerState;\n\n const getOverflow = () => {\n if (axis === 'x') return { overflowX: 'auto', overflowY: 'hidden' } as const;\n if (axis === 'y') return { overflowX: 'hidden', overflowY: 'auto' } as const;\n return { overflow: 'auto' } as const;\n };\n\n return {\n minWidth: 0,\n minHeight: 0,\n ...getOverflow(),\n ...(fillContent && {\n flexGrow: 1,\n display: 'flex',\n flexDirection: 'column',\n }),\n ...(!hideScrollbar && scrollbarStyles(theme, { autoHide })),\n ...(hideScrollbar && {\n scrollbarWidth: 'none',\n msOverflowStyle: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n }),\n };\n});\n// =============================================================================\n// COMPONENT\n// =============================================================================\n\n/**\n * Scrollbar - Custom scrollbar wrapper with themed styling.\n *\n * @example\n * ```tsx\n * <Scrollbar maxHeight={400}>\n * <List>...</List>\n * </Scrollbar>\n * ```\n *\n * @example\n * ```tsx\n * // Horizontal scrollbar\n * <Scrollbar axis=\"x\">\n * <Stack direction=\"row\" spacing={2}>...</Stack>\n * </Scrollbar>\n * ```\n *\n * @example\n * ```tsx\n * // Fill available space\n * <Scrollbar fillContent>\n * {content}\n * </Scrollbar>\n * ```\n */\nexport function Scrollbar({\n children,\n sx,\n fillContent = false,\n hideScrollbar = false,\n autoHide = true,\n axis = 'y',\n maxHeight,\n minHeight,\n className,\n ref,\n ...other\n}: ScrollbarProps & { ref?: Ref<HTMLDivElement> }) {\n const ownerState = {\n fillContent,\n hideScrollbar,\n autoHide,\n axis,\n };\n\n return (\n <ScrollbarRoot\n ref={ref}\n ownerState={ownerState}\n className={className}\n sx={[\n {\n ...(maxHeight !== undefined && { maxHeight }),\n ...(minHeight !== undefined && { minHeight }),\n },\n ...(Array.isArray(sx) ? sx : [sx]),\n ]}\n {...other}\n >\n {children}\n </ScrollbarRoot>\n );\n}\n"]}
|
|
@@ -0,0 +1,518 @@
|
|
|
1
|
+
import { TipTapRenderer } from './chunk-GUGTDURV.js';
|
|
2
|
+
import { ChevronDownIcon } from './chunk-PGHEP4JD.js';
|
|
3
|
+
import { fromMarkdown } from 'mdast-util-from-markdown';
|
|
4
|
+
import { gfm } from 'micromark-extension-gfm';
|
|
5
|
+
import { gfmFromMarkdown } from 'mdast-util-gfm';
|
|
6
|
+
import { directive } from 'micromark-extension-directive';
|
|
7
|
+
import { directiveFromMarkdown } from 'mdast-util-directive';
|
|
8
|
+
import { math } from 'micromark-extension-math';
|
|
9
|
+
import { mathFromMarkdown } from 'mdast-util-math';
|
|
10
|
+
import { useId, useMemo, Component, useRef, useState, useEffect } from 'react';
|
|
11
|
+
import katex from 'katex';
|
|
12
|
+
import { Box, Accordion, AccordionSummary, Typography, AccordionDetails } from '@mui/material';
|
|
13
|
+
import { useTheme } from '@mui/material/styles';
|
|
14
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
15
|
+
|
|
16
|
+
// src/components/research/frontmatter.ts
|
|
17
|
+
function splitFrontmatter(source) {
|
|
18
|
+
const opening = /^(?:\uFEFF)?---[ \t]*\r?\n/.exec(source);
|
|
19
|
+
if (!opening) return { body: source, metadata: void 0 };
|
|
20
|
+
let offset = opening[0].length;
|
|
21
|
+
while (offset < source.length) {
|
|
22
|
+
const newline = source.indexOf("\n", offset);
|
|
23
|
+
const end = newline < 0 ? source.length : newline + 1;
|
|
24
|
+
if (/^(?:---|\.\.\.)[ \t]*(?:\r?\n)?$/.test(source.slice(offset, end))) {
|
|
25
|
+
const raw = source.slice(0, end);
|
|
26
|
+
return {
|
|
27
|
+
body: raw.replace(/[^\r\n]/g, " ") + source.slice(end),
|
|
28
|
+
metadata: { format: "yaml", raw, start: 0, end }
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
offset = end;
|
|
32
|
+
}
|
|
33
|
+
return { body: source, metadata: void 0 };
|
|
34
|
+
}
|
|
35
|
+
var researchLimits = { source: 262144, nodes: 2e4, depth: 64, block: 2e4 };
|
|
36
|
+
var str = (v) => typeof v === "string" ? v : "";
|
|
37
|
+
var plain = (n) => str(n.value) || (n.children ?? []).map(plain).join("");
|
|
38
|
+
function parseResearchMarkdown(source, prefix = "research", sourceProfile = "research") {
|
|
39
|
+
if (source.length > researchLimits.source) throw new Error("document_limit");
|
|
40
|
+
if (!/^[a-zA-Z][\w-]{0,100}$/.test(prefix)) throw new Error("invalid_document_prefix");
|
|
41
|
+
const { body, metadata } = splitFrontmatter(source);
|
|
42
|
+
const tree = fromMarkdown(body, {
|
|
43
|
+
extensions: [gfm(), directive(), math()],
|
|
44
|
+
mdastExtensions: [gfmFromMarkdown(), directiveFromMarkdown(), mathFromMarkdown()]
|
|
45
|
+
});
|
|
46
|
+
const headings = [], diagnostics = [];
|
|
47
|
+
const ids = /* @__PURE__ */ new Set();
|
|
48
|
+
let count = 0;
|
|
49
|
+
const definitions = /* @__PURE__ */ new Map();
|
|
50
|
+
const collect = (n, depth) => {
|
|
51
|
+
if (++count > researchLimits.nodes || depth > researchLimits.depth) throw new Error("structure_limit");
|
|
52
|
+
if (n.type === "definition") definitions.set(str(n.identifier), n);
|
|
53
|
+
for (const c of n.children ?? []) collect(c, depth + 1);
|
|
54
|
+
};
|
|
55
|
+
collect(tree, 0);
|
|
56
|
+
const fallback = (n, code, inline = false) => {
|
|
57
|
+
diagnostics.push({ code, line: n.position?.start.line ?? 1 });
|
|
58
|
+
const raw = source.slice(n.position?.start.offset ?? 0, n.position?.end.offset ?? 0) || plain(n);
|
|
59
|
+
return inline ? { type: "text", text: raw } : { type: "codeBlock", content: [{ type: "text", text: raw }] };
|
|
60
|
+
};
|
|
61
|
+
const convert = (n, marks = []) => {
|
|
62
|
+
const children = () => (n.children ?? []).flatMap((c) => convert(c, marks));
|
|
63
|
+
const node = (type, attrs, content = children()) => [
|
|
64
|
+
{
|
|
65
|
+
type,
|
|
66
|
+
attrs: { ...attrs, source: n.position },
|
|
67
|
+
content
|
|
68
|
+
}
|
|
69
|
+
];
|
|
70
|
+
switch (n.type) {
|
|
71
|
+
case "root":
|
|
72
|
+
return children();
|
|
73
|
+
case "definition":
|
|
74
|
+
return [];
|
|
75
|
+
case "text":
|
|
76
|
+
return [{ type: "text", text: str(n.value), marks }];
|
|
77
|
+
case "inlineCode":
|
|
78
|
+
return [{ type: "text", text: str(n.value), marks: [...marks, { type: "code" }] }];
|
|
79
|
+
case "strong":
|
|
80
|
+
case "emphasis":
|
|
81
|
+
case "delete":
|
|
82
|
+
return (n.children ?? []).flatMap(
|
|
83
|
+
(c) => convert(c, [...marks, { type: { strong: "bold", emphasis: "italic", delete: "strike" }[n.type] }])
|
|
84
|
+
);
|
|
85
|
+
case "paragraph":
|
|
86
|
+
return node("paragraph");
|
|
87
|
+
case "heading": {
|
|
88
|
+
const explicit = sourceProfile === "docusaurus" ? /\s*\{#([^\s{}]+)\}\s*$/.exec(plain(n)) : null;
|
|
89
|
+
const title = explicit ? plain(n).slice(0, explicit.index) : plain(n);
|
|
90
|
+
const base = `${prefix}-${explicit?.[1] ?? (title.normalize("NFKC").toLowerCase().replace(/[^\p{L}\p{N}]+/gu, "-").replace(/^-|-$/g, "") || "section")}`;
|
|
91
|
+
let id = base, suffix = 1;
|
|
92
|
+
while (ids.has(id)) id = `${base}-${++suffix}`;
|
|
93
|
+
if (explicit && id !== base)
|
|
94
|
+
diagnostics.push({ code: "duplicate_heading_id", line: n.position?.start.line ?? 1 });
|
|
95
|
+
ids.add(id);
|
|
96
|
+
headings.push({ id, title, level: Number(n.depth) });
|
|
97
|
+
let content = n.children ?? [];
|
|
98
|
+
if (explicit) {
|
|
99
|
+
const last = content.at(-1);
|
|
100
|
+
if (last?.type === "text")
|
|
101
|
+
content = [
|
|
102
|
+
...content.slice(0, -1),
|
|
103
|
+
{ ...last, value: str(last.value).replace(/\s*\{#[^\s{}]+\}\s*$/, "") }
|
|
104
|
+
];
|
|
105
|
+
}
|
|
106
|
+
return node(
|
|
107
|
+
"heading",
|
|
108
|
+
{ level: n.depth, id },
|
|
109
|
+
content.flatMap((c) => convert(c, marks))
|
|
110
|
+
);
|
|
111
|
+
}
|
|
112
|
+
case "linkReference":
|
|
113
|
+
case "imageReference": {
|
|
114
|
+
const def = definitions.get(str(n.identifier));
|
|
115
|
+
if (!def) return [fallback(n, "unresolved_reference", true)];
|
|
116
|
+
return convert(
|
|
117
|
+
{ ...n, type: n.type === "linkReference" ? "link" : "image", url: def.url, title: def.title },
|
|
118
|
+
marks
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
case "link":
|
|
122
|
+
return (n.children ?? []).flatMap(
|
|
123
|
+
(c) => convert(c, [
|
|
124
|
+
...marks,
|
|
125
|
+
{
|
|
126
|
+
type: "link",
|
|
127
|
+
attrs: {
|
|
128
|
+
href: sourceProfile === "docusaurus" && str(n.url).startsWith("#") ? `#${prefix}-${str(n.url).slice(1)}` : str(n.url)
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
])
|
|
132
|
+
);
|
|
133
|
+
case "image":
|
|
134
|
+
return node("image", { src: str(n.url), alt: str(n.alt), title: str(n.title) }, []);
|
|
135
|
+
case "break":
|
|
136
|
+
return node("hardBreak", {}, []);
|
|
137
|
+
case "blockquote":
|
|
138
|
+
return node("blockquote");
|
|
139
|
+
case "thematicBreak":
|
|
140
|
+
return node("horizontalRule", {}, []);
|
|
141
|
+
case "list":
|
|
142
|
+
return node(
|
|
143
|
+
(n.children ?? []).some((c) => typeof c.checked === "boolean") ? "taskList" : n.ordered ? "orderedList" : "bulletList",
|
|
144
|
+
{ start: n.start }
|
|
145
|
+
);
|
|
146
|
+
case "listItem":
|
|
147
|
+
return node(typeof n.checked === "boolean" ? "taskItem" : "listItem", { checked: n.checked });
|
|
148
|
+
case "table":
|
|
149
|
+
return node(
|
|
150
|
+
"table",
|
|
151
|
+
{},
|
|
152
|
+
(n.children ?? []).map((row, i) => ({
|
|
153
|
+
type: "tableRow",
|
|
154
|
+
content: (row.children ?? []).map((cell) => ({
|
|
155
|
+
type: i === 0 ? "tableHeader" : "tableCell",
|
|
156
|
+
content: [{ type: "paragraph", content: (cell.children ?? []).flatMap((c) => convert(c)) }]
|
|
157
|
+
}))
|
|
158
|
+
}))
|
|
159
|
+
);
|
|
160
|
+
case "inlineMath":
|
|
161
|
+
case "math":
|
|
162
|
+
return node(n.type === "math" ? "mathBlock" : "mathInline", { tex: str(n.value) }, []).map((n2) => ({
|
|
163
|
+
...n2,
|
|
164
|
+
marks
|
|
165
|
+
}));
|
|
166
|
+
case "code": {
|
|
167
|
+
const language = str(n.lang).toLowerCase(), body2 = str(n.value);
|
|
168
|
+
if (["mermaid", "pintora", "prism"].includes(language) && body2.length > researchLimits.block)
|
|
169
|
+
return [fallback(n, "block_limit")];
|
|
170
|
+
if (language === "mermaid" || language === "pintora")
|
|
171
|
+
return node("diagram", { engine: language, code: body2 }, []);
|
|
172
|
+
if (language === "prism") {
|
|
173
|
+
try {
|
|
174
|
+
return node("researchWidget", { descriptor: JSON.parse(body2) }, []);
|
|
175
|
+
} catch {
|
|
176
|
+
return [fallback(n, "invalid_widget_json")];
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return node("codeBlock", { language, title: str(n.meta) }, [{ type: "text", text: body2 }]);
|
|
180
|
+
}
|
|
181
|
+
case "containerDirective":
|
|
182
|
+
case "leafDirective": {
|
|
183
|
+
const name = str(n.name), attrs = n.attributes ?? {};
|
|
184
|
+
if (["note", "tip", "warning", "danger", "info", "caution"].includes(name))
|
|
185
|
+
return node("admonition", { kind: name, title: attrs.title || name });
|
|
186
|
+
if (name === "tabs") {
|
|
187
|
+
if ((n.children ?? []).some((c) => c.type !== "containerDirective" || c.name !== "tab"))
|
|
188
|
+
return [fallback(n, "invalid_tabs")];
|
|
189
|
+
return node(
|
|
190
|
+
"tabs",
|
|
191
|
+
{},
|
|
192
|
+
(n.children ?? []).flatMap((c) => convert(c))
|
|
193
|
+
);
|
|
194
|
+
}
|
|
195
|
+
if (name === "tab") return node("tabItem", { label: attrs.label || attrs.value || "Tab" });
|
|
196
|
+
if (name === "widget")
|
|
197
|
+
return node(
|
|
198
|
+
"researchWidget",
|
|
199
|
+
{
|
|
200
|
+
descriptor: {
|
|
201
|
+
type: attrs.type,
|
|
202
|
+
version: Number(attrs.version || 1),
|
|
203
|
+
props: Object.fromEntries(Object.entries(attrs).filter(([key]) => key !== "type" && key !== "version"))
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
[]
|
|
207
|
+
);
|
|
208
|
+
return [fallback(n, "unknown_directive")];
|
|
209
|
+
}
|
|
210
|
+
case "html":
|
|
211
|
+
return [fallback(n, "raw_html", true)];
|
|
212
|
+
default:
|
|
213
|
+
return [
|
|
214
|
+
fallback(
|
|
215
|
+
n,
|
|
216
|
+
`unsupported_${n.type}`,
|
|
217
|
+
n.type.startsWith("inline") || n.type === "textDirective" || n.type === "footnoteReference"
|
|
218
|
+
)
|
|
219
|
+
];
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
return { format: "prism-research/1", metadata, doc: { type: "doc", content: convert(tree) }, headings, diagnostics };
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// src/components/research/diagram-image.ts
|
|
226
|
+
function diagramImage(source, purify) {
|
|
227
|
+
const fragment = purify.sanitize(source, {
|
|
228
|
+
USE_PROFILES: { svg: true, svgFilters: true },
|
|
229
|
+
ADD_TAGS: ["style"],
|
|
230
|
+
FORBID_TAGS: ["foreignObject", "image", "a", "script", "animate", "animateMotion", "animateTransform", "set"],
|
|
231
|
+
FORBID_ATTR: ["href", "xlink:href"],
|
|
232
|
+
RETURN_DOM_FRAGMENT: true
|
|
233
|
+
});
|
|
234
|
+
const svg = fragment.querySelector("svg");
|
|
235
|
+
if (!svg || !svg.getAttribute("viewBox")) throw new Error("invalid_diagram_svg");
|
|
236
|
+
const title = svg.querySelector("title")?.textContent?.trim();
|
|
237
|
+
const labels = [...svg.querySelectorAll("text")].map((node) => node.textContent?.trim()).filter(Boolean);
|
|
238
|
+
const description = title || labels.join(" \xB7 ") || "Diagram";
|
|
239
|
+
return {
|
|
240
|
+
src: "data:image/svg+xml;charset=utf-8," + encodeURIComponent(new XMLSerializer().serializeToString(svg)),
|
|
241
|
+
description: description.slice(0, 2e3)
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
var pending = Promise.resolve();
|
|
245
|
+
function diagramSourceAllowed(source, engine) {
|
|
246
|
+
return engine === "mermaid" && source.length <= researchLimits.block && !/^\s*---/m.test(source) && !/%%\s*\{/.test(source);
|
|
247
|
+
}
|
|
248
|
+
function ResearchDiagram({
|
|
249
|
+
source,
|
|
250
|
+
engine,
|
|
251
|
+
labels
|
|
252
|
+
}) {
|
|
253
|
+
const id = `diagram-${useId().replace(/[^\w-]/g, "")}`;
|
|
254
|
+
const container = useRef(null);
|
|
255
|
+
const [picture, setPicture] = useState();
|
|
256
|
+
const [state, setState] = useState("loading");
|
|
257
|
+
const theme = useTheme(), mode = theme.palette.mode;
|
|
258
|
+
useEffect(() => {
|
|
259
|
+
let cancelled = false;
|
|
260
|
+
setState("loading");
|
|
261
|
+
setPicture(void 0);
|
|
262
|
+
const target = container.current;
|
|
263
|
+
const run = async () => {
|
|
264
|
+
if (cancelled || !target) return;
|
|
265
|
+
if (!diagramSourceAllowed(source, engine)) {
|
|
266
|
+
setState("error");
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
let scratch;
|
|
270
|
+
try {
|
|
271
|
+
const [{ default: mermaid }, { default: purify }] = await Promise.all([import('mermaid'), import('dompurify')]);
|
|
272
|
+
if (cancelled) return;
|
|
273
|
+
scratch = document.createElement("div");
|
|
274
|
+
scratch.style.cssText = "position:absolute;visibility:hidden;pointer-events:none;width:1000px";
|
|
275
|
+
target.append(scratch);
|
|
276
|
+
mermaid.initialize({
|
|
277
|
+
startOnLoad: false,
|
|
278
|
+
securityLevel: "strict",
|
|
279
|
+
htmlLabels: false,
|
|
280
|
+
maxTextSize: researchLimits.block,
|
|
281
|
+
maxEdges: 256,
|
|
282
|
+
suppressErrorRendering: true,
|
|
283
|
+
look: "classic",
|
|
284
|
+
theme: "base",
|
|
285
|
+
fontFamily: "system-ui, sans-serif",
|
|
286
|
+
themeVariables: {
|
|
287
|
+
darkMode: mode === "dark",
|
|
288
|
+
primaryColor: theme.palette.background.paper,
|
|
289
|
+
primaryTextColor: theme.palette.text.primary,
|
|
290
|
+
primaryBorderColor: theme.palette.text.secondary,
|
|
291
|
+
secondaryColor: theme.palette.background.default,
|
|
292
|
+
tertiaryColor: theme.palette.background.paper,
|
|
293
|
+
lineColor: theme.palette.text.secondary,
|
|
294
|
+
textColor: theme.palette.text.primary,
|
|
295
|
+
fontFamily: "system-ui, sans-serif",
|
|
296
|
+
fontSize: "16px"
|
|
297
|
+
},
|
|
298
|
+
flowchart: { htmlLabels: false },
|
|
299
|
+
secure: [
|
|
300
|
+
"securityLevel",
|
|
301
|
+
"startOnLoad",
|
|
302
|
+
"maxTextSize",
|
|
303
|
+
"maxEdges",
|
|
304
|
+
"htmlLabels",
|
|
305
|
+
"theme",
|
|
306
|
+
"look",
|
|
307
|
+
"fontFamily",
|
|
308
|
+
"themeCSS",
|
|
309
|
+
"themeVariables"
|
|
310
|
+
]
|
|
311
|
+
});
|
|
312
|
+
const result = await mermaid.render(id, source, scratch);
|
|
313
|
+
const picture2 = diagramImage(result.svg, purify);
|
|
314
|
+
if (!cancelled) {
|
|
315
|
+
setPicture(picture2);
|
|
316
|
+
setState("ready");
|
|
317
|
+
}
|
|
318
|
+
} catch {
|
|
319
|
+
if (!cancelled) setState("error");
|
|
320
|
+
} finally {
|
|
321
|
+
scratch?.remove();
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
pending = pending.catch(() => void 0).then(run);
|
|
325
|
+
return () => {
|
|
326
|
+
cancelled = true;
|
|
327
|
+
target?.replaceChildren();
|
|
328
|
+
};
|
|
329
|
+
}, [source, engine, id, theme]);
|
|
330
|
+
return /* @__PURE__ */ jsxs("figure", { className: "prism-research__diagram", children: [
|
|
331
|
+
state !== "ready" && /* @__PURE__ */ jsx("p", { role: "status", children: state === "error" ? labels.invalid : labels.loading }),
|
|
332
|
+
/* @__PURE__ */ jsx("div", { ref: container, "aria-hidden": "true" }),
|
|
333
|
+
picture && /* @__PURE__ */ jsx(
|
|
334
|
+
"img",
|
|
335
|
+
{
|
|
336
|
+
className: "prism-research__diagram-image",
|
|
337
|
+
src: picture.src,
|
|
338
|
+
alt: picture.description,
|
|
339
|
+
onError: () => setState("error")
|
|
340
|
+
}
|
|
341
|
+
),
|
|
342
|
+
/* @__PURE__ */ jsxs("details", { open: state === "error", children: [
|
|
343
|
+
/* @__PURE__ */ jsxs("summary", { children: [
|
|
344
|
+
labels.source,
|
|
345
|
+
" \xB7 ",
|
|
346
|
+
engine
|
|
347
|
+
] }),
|
|
348
|
+
/* @__PURE__ */ jsx("pre", { children: source })
|
|
349
|
+
] })
|
|
350
|
+
] });
|
|
351
|
+
}
|
|
352
|
+
function defineResearchWidget(version, parse, View) {
|
|
353
|
+
return {
|
|
354
|
+
version,
|
|
355
|
+
render(input) {
|
|
356
|
+
const props = parse(input);
|
|
357
|
+
return /* @__PURE__ */ jsx(View, { ...props });
|
|
358
|
+
}
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
var defaultResearchLabels = {
|
|
362
|
+
metadata: "Source metadata",
|
|
363
|
+
contents: "On this page",
|
|
364
|
+
source: "Source",
|
|
365
|
+
unavailable: "This block is not available in this document.",
|
|
366
|
+
invalid: "This block could not be rendered. Its source is preserved.",
|
|
367
|
+
loading: "Rendering diagram\u2026",
|
|
368
|
+
diagnostics: "Document diagnostics"
|
|
369
|
+
};
|
|
370
|
+
var BlockBoundary = class extends Component {
|
|
371
|
+
state = { failed: false };
|
|
372
|
+
static getDerivedStateFromError() {
|
|
373
|
+
return { failed: true };
|
|
374
|
+
}
|
|
375
|
+
render() {
|
|
376
|
+
return this.state.failed ? this.props.fallback : this.props.children;
|
|
377
|
+
}
|
|
378
|
+
};
|
|
379
|
+
function Formula({ node, labels }) {
|
|
380
|
+
const tex = String(node.attrs?.tex ?? "");
|
|
381
|
+
try {
|
|
382
|
+
if (tex.length > researchLimits.block) throw new Error("formula_limit");
|
|
383
|
+
const html = katex.renderToString(tex, {
|
|
384
|
+
displayMode: node.type === "mathBlock",
|
|
385
|
+
trust: false,
|
|
386
|
+
strict: "error",
|
|
387
|
+
throwOnError: true,
|
|
388
|
+
maxExpand: 1e3,
|
|
389
|
+
maxSize: 20,
|
|
390
|
+
output: "htmlAndMathml"
|
|
391
|
+
});
|
|
392
|
+
return /* @__PURE__ */ jsx(
|
|
393
|
+
"span",
|
|
394
|
+
{
|
|
395
|
+
className: node.type === "mathBlock" ? "prism-research__formula-block" : void 0,
|
|
396
|
+
dangerouslySetInnerHTML: { __html: html }
|
|
397
|
+
}
|
|
398
|
+
);
|
|
399
|
+
} catch {
|
|
400
|
+
return /* @__PURE__ */ jsx("code", { className: "prism-research__invalid-math", title: labels.invalid, children: tex });
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
function Widget({ node, widgets, labels }) {
|
|
404
|
+
const d = node.attrs?.descriptor;
|
|
405
|
+
if (!d || typeof d.type !== "string" || !Object.hasOwn(widgets, d.type) || widgets[d.type]?.version !== d.version)
|
|
406
|
+
return /* @__PURE__ */ jsxs("details", { className: "prism-research__failure", children: [
|
|
407
|
+
/* @__PURE__ */ jsx("summary", { children: labels.unavailable }),
|
|
408
|
+
/* @__PURE__ */ jsx("pre", { children: JSON.stringify(d) })
|
|
409
|
+
] });
|
|
410
|
+
try {
|
|
411
|
+
return widgets[d.type].render(d.props);
|
|
412
|
+
} catch {
|
|
413
|
+
return /* @__PURE__ */ jsxs("details", { className: "prism-research__failure", children: [
|
|
414
|
+
/* @__PURE__ */ jsx("summary", { children: labels.invalid }),
|
|
415
|
+
/* @__PURE__ */ jsx("pre", { children: JSON.stringify(d) })
|
|
416
|
+
] });
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
var emptyWidgets = Object.freeze({});
|
|
420
|
+
function ResearchDocument({
|
|
421
|
+
source,
|
|
422
|
+
sourceProfile = "research",
|
|
423
|
+
documentId,
|
|
424
|
+
widgets = emptyWidgets,
|
|
425
|
+
labels: overrides,
|
|
426
|
+
contents = false,
|
|
427
|
+
className,
|
|
428
|
+
sx
|
|
429
|
+
}) {
|
|
430
|
+
const uid = useId();
|
|
431
|
+
const prefix = documentId ?? `research-${uid.replace(/[^\w-]/g, "")}`;
|
|
432
|
+
const labels = { ...defaultResearchLabels, ...overrides };
|
|
433
|
+
const parsed = useMemo(() => {
|
|
434
|
+
try {
|
|
435
|
+
return { data: parseResearchMarkdown(source, prefix, sourceProfile) };
|
|
436
|
+
} catch {
|
|
437
|
+
return { error: true };
|
|
438
|
+
}
|
|
439
|
+
}, [source, prefix, sourceProfile]);
|
|
440
|
+
const nodes = useMemo(() => {
|
|
441
|
+
const failure = (raw) => /* @__PURE__ */ jsxs("details", { className: "prism-research__failure", open: true, children: [
|
|
442
|
+
/* @__PURE__ */ jsx("summary", { children: labels.invalid }),
|
|
443
|
+
/* @__PURE__ */ jsx("pre", { children: raw })
|
|
444
|
+
] });
|
|
445
|
+
const bounded = (render) => (props) => {
|
|
446
|
+
const raw = String(
|
|
447
|
+
props.node.attrs?.tex ?? props.node.attrs?.code ?? JSON.stringify(props.node.attrs?.descriptor ?? {})
|
|
448
|
+
);
|
|
449
|
+
return /* @__PURE__ */ jsx(BlockBoundary, { fallback: failure(raw), children: render(props.node) }, raw);
|
|
450
|
+
};
|
|
451
|
+
return {
|
|
452
|
+
mathInline: ({ node }) => /* @__PURE__ */ jsx(Formula, { node, labels }),
|
|
453
|
+
mathBlock: ({ node }) => /* @__PURE__ */ jsx(Formula, { node, labels }),
|
|
454
|
+
diagram: bounded((n) => /* @__PURE__ */ jsx(ResearchDiagram, { source: String(n.attrs?.code ?? ""), engine: String(n.attrs?.engine ?? ""), labels })),
|
|
455
|
+
researchWidget: bounded((n) => /* @__PURE__ */ jsx(Widget, { node: n, widgets, labels }))
|
|
456
|
+
};
|
|
457
|
+
}, [widgets, labels.invalid, labels.unavailable, labels.loading, labels.source]);
|
|
458
|
+
if (!parsed.data) return /* @__PURE__ */ jsx("p", { role: "alert", children: labels.invalid });
|
|
459
|
+
return /* @__PURE__ */ jsxs(
|
|
460
|
+
Box,
|
|
461
|
+
{
|
|
462
|
+
className: `prism-research ${className ?? ""}`,
|
|
463
|
+
sx: (theme) => ({ "--prism-research-border": theme.palette.divider }),
|
|
464
|
+
children: [
|
|
465
|
+
parsed.data.metadata && /* @__PURE__ */ jsxs(
|
|
466
|
+
Accordion,
|
|
467
|
+
{
|
|
468
|
+
disableGutters: true,
|
|
469
|
+
elevation: 0,
|
|
470
|
+
sx: { mb: 2, border: 1, borderColor: "divider", "&:before": { display: "none" } },
|
|
471
|
+
children: [
|
|
472
|
+
/* @__PURE__ */ jsx(AccordionSummary, { expandIcon: /* @__PURE__ */ jsx(ChevronDownIcon, { fontSize: "small" }), children: /* @__PURE__ */ jsxs(Typography, { variant: "caption", color: "text.secondary", children: [
|
|
473
|
+
labels.metadata,
|
|
474
|
+
" \xB7 YAML"
|
|
475
|
+
] }) }),
|
|
476
|
+
/* @__PURE__ */ jsx(AccordionDetails, { children: /* @__PURE__ */ jsx(
|
|
477
|
+
Box,
|
|
478
|
+
{
|
|
479
|
+
component: "pre",
|
|
480
|
+
sx: {
|
|
481
|
+
m: 0,
|
|
482
|
+
maxHeight: 240,
|
|
483
|
+
overflow: "auto",
|
|
484
|
+
whiteSpace: "pre-wrap",
|
|
485
|
+
overflowWrap: "anywhere",
|
|
486
|
+
fontSize: 12
|
|
487
|
+
},
|
|
488
|
+
children: parsed.data.metadata.raw
|
|
489
|
+
}
|
|
490
|
+
) })
|
|
491
|
+
]
|
|
492
|
+
}
|
|
493
|
+
),
|
|
494
|
+
contents && parsed.data.headings.length > 0 && /* @__PURE__ */ jsxs("nav", { className: "prism-research__contents", "aria-label": labels.contents, children: [
|
|
495
|
+
/* @__PURE__ */ jsx("p", { children: labels.contents }),
|
|
496
|
+
/* @__PURE__ */ jsx("ol", { children: parsed.data.headings.map((h) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx("a", { href: `#${h.id}`, children: h.title }) }, h.id)) })
|
|
497
|
+
] }),
|
|
498
|
+
/* @__PURE__ */ jsx(TipTapRenderer, { content: parsed.data.doc, nodeRenderers: nodes, inheritRegisteredNodes: false, sx }),
|
|
499
|
+
parsed.data.diagnostics.length > 0 && /* @__PURE__ */ jsxs("details", { className: "prism-research__diagnostics", children: [
|
|
500
|
+
/* @__PURE__ */ jsxs("summary", { children: [
|
|
501
|
+
labels.diagnostics,
|
|
502
|
+
" \xB7 ",
|
|
503
|
+
parsed.data.diagnostics.length
|
|
504
|
+
] }),
|
|
505
|
+
/* @__PURE__ */ jsx("ul", { children: parsed.data.diagnostics.map((d, i) => /* @__PURE__ */ jsxs("li", { children: [
|
|
506
|
+
d.line,
|
|
507
|
+
": ",
|
|
508
|
+
/* @__PURE__ */ jsx("code", { children: d.code })
|
|
509
|
+
] }, i)) })
|
|
510
|
+
] })
|
|
511
|
+
]
|
|
512
|
+
}
|
|
513
|
+
);
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
export { ResearchDocument, defaultResearchLabels, defineResearchWidget, parseResearchMarkdown, researchLimits, splitFrontmatter };
|
|
517
|
+
//# sourceMappingURL=chunk-SU3LVQ7N.js.map
|
|
518
|
+
//# sourceMappingURL=chunk-SU3LVQ7N.js.map
|