{
  "version": 3,
  "sources": ["../src/UiJsonView/UiJsonView.tsx", "../src/UiJsonView/UiJsonView.css.ts", "../src/OptionsProvider.tsx", "../src/StaticView/StaticView.tsx", "../src/StaticView/StaticView.css.ts", "../src/Line/Line.tsx", "../src/Line/Line.css.ts", "../src/Action/Action.tsx", "../src/Action/Action.css.ts", "../src/Copy/Copy.tsx", "../src/Copy/Copy.css.ts", "../src/Actions.tsx", "../src/Property/Property.css.ts", "../src/Property/Property.tsx", "../src/Rest/Rest.css.ts", "../src/Rest/Rest.tsx", "../src/Size/Size.css.ts", "../src/Size/Size.tsx", "../src/StringValue/StringValue.css.ts", "../src/StringValue/StringValue.hooks.ts", "../src/StringValue/StringValue.tsx", "../src/Toggle/Toggle.tsx", "../src/Toggle/assets/collapse.svg", "../src/Toggle/assets/expand.svg", "../src/Toggle/Toggle.css.ts", "../src/Type/Type.css.ts", "../src/Type/Type.tsx", "../src/Options/Options.tsx", "../src/Options/Options.css.ts", "../src/Option/Option.css.ts", "../src/Option/Option.tsx", "../src/VirtualView/VirtualView.tsx", "../src/shared.css.ts", "../src/VirtualView/VirtualView.css.ts", "../src/UiJsonView/hooks/useActionHandler.ts", "../src/UiJsonView/hooks/useCollapsedKeys.ts", "../src/UiJsonView/hooks/useCollapsedLines.ts", "../src/UiJsonView/hooks/useLines/useLines.ts", "../src/UiJsonView/hooks/useLines/isPrimitiveValue.ts", "../src/UiJsonView/hooks/useLines/itemFrom.ts", "../src/UiJsonView/hooks/useLines/metaOf.ts", "../src/UiJsonView/hooks/useLines/enqueueItemsFrom.ts", "../src/UiJsonView/hooks/useValue.ts"],
  "sourcesContent": ["import { FC } from 'react';\n\nimport { clsx } from 'clsx/lite';\n\nimport { UiAnalytics } from '@tabula/ui-analytics';\n\nimport { variants } from './UiJsonView.css';\n\nimport { OptionsProvider } from '../OptionsProvider';\nimport { StaticView } from '../StaticView';\nimport { VirtualView } from '../VirtualView';\nimport { JsonViewOptions, LineKind } from '../types';\n\nimport { useActionHandler, useCollapsedKeys, useCollapsedLines, useLines, useValue } from './hooks';\n\nexport type Props = Partial<JsonViewOptions> & {\n  className?: string;\n  /**\n   * Allows to collapse arrays and objects after the given depth.\n   *\n   * If the `true` value is given, then all arrays and objects are collapsed.\n   *\n   * If the number value is given, then arrays and objects after the given level are collapsed.\n   *\n   * **NOTE**: requires `isInteractive` option is enabled.\n   */\n  collapsed?: boolean | number;\n  /**\n   * Enables render with virtualization.\n   */\n  isVirtual?: boolean;\n  /**\n   * Allow to render limited number of lines.\n   *\n   * This option disables expand/collapse controls and line actions.\n   */\n  limit?: number;\n  /**\n   * JSON value in string representation.\n   */\n  source: string;\n  trackId?: string;\n};\n\nexport const UiJsonView: FC<Props> = ({\n  actions,\n  className = '',\n  collapsed,\n  isCopyPathAllowed,\n  isCopyValueAllowed,\n  isInteractive,\n  isVirtual,\n  limit,\n  onToggleDataTypes,\n  onToggleObjectSize,\n  shortStringAfterLength,\n  showDataTypes,\n  showObjectSize,\n  source,\n  trackId,\n}) => {\n  const [allowInteractions, maxNumberOfLines] =\n    limit != null && limit > 0 ? [false, limit] : [isInteractive, Number.POSITIVE_INFINITY];\n\n  // Step 1: Try to parse source string to the JSON value.\n  const [value, isValid] = useValue(source);\n  // Step 2: Map JSON value to the lines for rendering pipeline.\n  const allLines = useLines(value, isValid, maxNumberOfLines);\n  // Step 3: Initiate collapsed keys service.\n  const [collapsedKeys, onToggle] = useCollapsedKeys(\n    allLines,\n    allowInteractions ? collapsed : false,\n  );\n  // Step 4: Filter collapsed lines.\n  const lines = useCollapsedLines(allLines, collapsedKeys);\n  // Step 5: Detect container class for right paddings.\n  const containerClassName =\n    lines.length === 0 || lines[0].kind !== LineKind.Open || !allowInteractions\n      ? variants.static\n      : variants.interactive;\n  // Step 6: Create an action handler.\n  const onAction = useActionHandler(value, isValid);\n  // Step 7: Detect view type based on `isVirtual` option.\n  const View = isVirtual ? VirtualView : StaticView;\n\n  return (\n    <UiAnalytics trackId={trackId}>\n      <OptionsProvider\n        actions={actions}\n        isCopyPathAllowed={isCopyPathAllowed}\n        isCopyValueAllowed={isCopyValueAllowed}\n        isInteractive={allowInteractions}\n        onAction={onAction}\n        onToggle={onToggle}\n        onToggleDataTypes={onToggleDataTypes}\n        onToggleObjectSize={onToggleObjectSize}\n        shortStringAfterLength={shortStringAfterLength}\n        showDataTypes={showDataTypes}\n        showObjectSize={showObjectSize}\n      >\n        <View className={clsx(containerClassName, className)} lines={lines} />\n      </OptionsProvider>\n    </UiAnalytics>\n  );\n};\n\nif (import.meta.env.DEV) {\n  UiJsonView.displayName = 'ui-json-view(UiJsonView)';\n}\n", "import 'src/UiJsonView/UiJsonView.css.ts.vanilla.css?source=QGxheWVyIHRibC0tY29tcG9uZW50czsKQGxheWVyIHRibC0tY29tcG9uZW50cyB7CiAgLnRhYnVsYV91aV9qc29uX3ZpZXdfXzEwanJ6bHAwIHsKICAgIC0tdGFidWxhX3VpX2pzb25fdmlld19fZXRrd2hwMDogMDsKICAgIHdpZHRoOiAxMDAlOwogICAgaGVpZ2h0OiAxMDAlOwogICAgb3ZlcmZsb3c6IGF1dG87CiAgfQogIC50YWJ1bGFfdWlfanNvbl92aWV3X18xMGpyemxwMSB7CiAgICAtLXRhYnVsYV91aV9qc29uX3ZpZXdfX2V0a3docDA6IDE2cHg7CiAgfQogIC50YWJ1bGFfdWlfanNvbl92aWV3X18xMGpyemxwMiB7CiAgICAtLXRhYnVsYV91aV9qc29uX3ZpZXdfX2V0a3docDA6IDQwcHg7CiAgfQp9';\nexport var variants = {'static':'tabula_ui_json_view__10jrzlp1 tabula_ui_json_view__10jrzlp0',interactive:'tabula_ui_json_view__10jrzlp2 tabula_ui_json_view__10jrzlp0'};", "import { FC, PropsWithChildren, createContext, useContext, useMemo } from 'react';\n\nimport { JsonViewOptions, OnActionFn, OnToggleFn } from './types';\n\n// region Types\n\ntype Value = JsonViewOptions & {\n  onAction: OnActionFn;\n  onToggle: OnToggleFn;\n};\n\n// endregion\n\n// region Context\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst noop = () => {};\n\nconst defaultValue: Value = {\n  actions: {},\n\n  isCopyPathAllowed: true,\n  isCopyValueAllowed: true,\n  isInteractive: false,\n  showDataTypes: false,\n  showObjectSize: false,\n\n  onAction: noop,\n  onToggle: noop,\n};\n\nconst Context = createContext<Value>(defaultValue);\n\n// endregion\n\n// region Provider\n\nexport const OptionsProvider: FC<PropsWithChildren<Partial<Value>>> = ({\n  actions = defaultValue.actions,\n  children,\n  isCopyPathAllowed = defaultValue.isCopyPathAllowed,\n  isCopyValueAllowed = defaultValue.isCopyValueAllowed,\n  isInteractive = defaultValue.isInteractive,\n  onAction = defaultValue.onAction,\n  onToggle = defaultValue.onToggle,\n  onToggleDataTypes,\n  onToggleObjectSize,\n  shortStringAfterLength,\n  showDataTypes = defaultValue.showDataTypes,\n  showObjectSize = defaultValue.showObjectSize,\n}) => {\n  const value = useMemo<Value>(\n    () => ({\n      actions,\n      isCopyPathAllowed,\n      isCopyValueAllowed,\n      isInteractive,\n      onAction,\n      onToggle,\n      onToggleDataTypes,\n      onToggleObjectSize,\n      shortStringAfterLength,\n      showDataTypes,\n      showObjectSize,\n    }),\n    [\n      actions,\n      isCopyPathAllowed,\n      isCopyValueAllowed,\n      isInteractive,\n      onAction,\n      onToggle,\n      onToggleDataTypes,\n      onToggleObjectSize,\n      shortStringAfterLength,\n      showDataTypes,\n      showObjectSize,\n    ],\n  );\n\n  return <Context.Provider value={value}>{children}</Context.Provider>;\n};\n\n// endregion\n\n// region Hook\n\nexport function useOptions(): Value {\n  return useContext(Context);\n}\n\n// endregion\n", "import { clsx } from 'clsx/lite';\n\nimport { options, root } from './StaticView.css';\n\nimport { Line } from '../Line';\nimport { Options } from '../Options';\nimport { ViewComponentType } from '../types';\n\nexport const StaticView: ViewComponentType = ({ className, lines }) => {\n  const children = lines.map((line) => <Line key={line.path} line={line} />);\n\n  return (\n    <div className={clsx(className, root)}>\n      <Options className={options} />\n      {children}\n    </div>\n  );\n};\n", "import 'src/StaticView/StaticView.css.ts.vanilla.css?source=QGxheWVyIHRibC0tY29tcG9uZW50czsKQGxheWVyIHRibC0tY29tcG9uZW50cyB7CiAgLnRhYnVsYV91aV9qc29uX3ZpZXdfXzFqazdocjEwIHsKICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICB9CiAgLnRhYnVsYV91aV9qc29uX3ZpZXdfXzFqazdocjExIHsKICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICB0b3A6IDRweDsKICAgIHJpZ2h0OiA0cHg7CiAgICBmbG9hdDogcmlnaHQ7CiAgfQp9';\nexport var options = 'tabula_ui_json_view__1jk7hr11';\nexport var root = 'tabula_ui_json_view__1jk7hr10';", "import { CSSProperties, memo } from 'react';\n\nimport { assignInlineVars } from '@vanilla-extract/dynamic';\nimport { clsx } from 'clsx/lite';\n\nimport { controls, level, position, variants } from './Line.css';\n\nimport { Actions } from '../Actions';\nimport { Property } from '../Property';\nimport { Rest } from '../Rest';\nimport { Size } from '../Size';\nimport { StringValue } from '../StringValue';\nimport { Toggle } from '../Toggle';\nimport { Type } from '../Type';\nimport { LineKind, Line as LineType } from '../types';\n\ntype Props = {\n  line: LineType;\n  style?: CSSProperties;\n};\n\nexport const Line = memo<Props>(function Line({ line, style }) {\n  const positionClassName = clsx(line.isFirst && position.isFirst, line.isLast && position.isLast);\n\n  const rootStyle = { ...style, ...assignInlineVars({ [level]: `${line.level}` }) };\n\n  switch (line.kind) {\n    case LineKind.Value: {\n      const { jsonPath, property, type, value } = line;\n\n      return (\n        <div className={clsx(variants[type], positionClassName)} style={rootStyle}>\n          <Property property={property} />\n          <Type type={type} />\n          {type === 'string' ? <StringValue>{value}</StringValue> : value}\n          <Actions className={controls.action} jsonPath={jsonPath} type={type} />\n        </div>\n      );\n    }\n    case LineKind.Open: {\n      const { closeSymbol, isCollapsed, jsonPath, openSymbol, path, property, size, type } = line;\n\n      return (\n        <div className={clsx(variants.boundary, positionClassName)} style={rootStyle}>\n          <Toggle className={controls.toggle} isCollapsed={isCollapsed} path={path} />\n          <Property property={property} />\n          {isCollapsed ? (\n            <>\n              {openSymbol}\n              <Rest path={path} />\n              {closeSymbol}\n            </>\n          ) : (\n            openSymbol\n          )}\n          <Size size={size} />\n          <Actions className={controls.action} jsonPath={jsonPath} type={type} />\n        </div>\n      );\n    }\n    case LineKind.Close: {\n      const { closeSymbol } = line;\n\n      return (\n        <div className={clsx(variants.boundary, positionClassName)} style={rootStyle}>\n          {closeSymbol}\n        </div>\n      );\n    }\n    case LineKind.Placeholder: {\n      const { placeholder } = line;\n\n      return (\n        <div className={clsx(variants.placeholder, positionClassName)} style={rootStyle}>\n          {placeholder}\n        </div>\n      );\n    }\n  }\n});\n", "import 'src/Line/Line.css.ts.vanilla.css?source=#H4sIAAAAAAAAA7VW21LjMAx95ys8PDULYppS2CW88Ccdx1ESg2NlbKWX3eHfd5K43bawxV2WV1k6ls6RJT8ZuUEnODcAipqWLFr2jxdP79rFrwshbljmnZGLTi-ePdnFUuNqsUjJI6026eAiRCuLQtsKmNpMpPft-vFCiNePomdH0TkxU3MGwG0AADjlNc3E9HHwK8lyJpbSTQCGWnuDB2jIkm-lQgCPjYacTAHpbDxPxliDzOigd9O2OgvlMDTgMa4Z2EnrS3LNWXiHoQGvJa9Zk82EQyNZL3G0F9q3Rm4yURpcBxoMrqHQDlUIoNV48Nx51uUGFFnGnqrB07N0PDpIoysLmrHxmcilR6NtuKeRrtJ2R3WNuqo5E7N5G27dqmyw5EwoadQk1Pyedsgvq7qdJuJKTE75bTVOxDcxV3WSJIe3uTGNbUsJ0WcMb7Nb1ZpxkAgzYWnlZBvXglmWY0kOQyvuqLu8PNZF5p5Mx4Gv4alMt71V_unLU2wcSartUE1uSL2EMnTBdWD3LNr-plou1UvlqLMF6EZWmA0ESgeVk4VGyxMmMZB8LYaWbKVDy2Larg8Ns96w1-SKDDkPkJMr0A0t58gAFFjKznAibo8R5m8Mqk7eZOn1T8z6o10RH2qYnlb4-oMpFjWitszOp_8lqfMuvYsdqPNdFxty2XtyKSoQoOzsMDuSKNS7L0G9j0S1XZOj83Gg378C9EckqGc3DMhetDjkhwjkYR4BtE430m3icGU8LqNjHQ2cB-CITeyw6ox0n9rD-xif38L7aB_s4MNZv7fyvmbnCRDpw81du072lkv0-IuTbMCcxY4vFaLGb0FY-qmqx_yoF4E3uwU4EBmo25Og6JzsjQCl9AyQJvunKH3_XPr_iS2kK_oep6JT_d8nrhuVuPqHKqY3d2MdEZ-Dmpbo4u7YcZKO2K-_AXcKKx6tCwAA';\nexport var controls = {toggle:'tabula_ui_json_view__1oseowyb',action:'tabula_ui_json_view__1oseowyc'};\nexport var level = 'var(--tabula_ui_json_view__1oseowy0)';\nexport var position = {isFirst:'tabula_ui_json_view__1oseowy1',isLast:'tabula_ui_json_view__1oseowy2'};\nexport var variants = {bool:'tabula_ui_json_view__1oseowy4 tabula_ui_json_view__1oseowy3',null:'tabula_ui_json_view__1oseowy5 tabula_ui_json_view__1oseowy3','int':'tabula_ui_json_view__1oseowy6 tabula_ui_json_view__1oseowy3','float':'tabula_ui_json_view__1oseowy7 tabula_ui_json_view__1oseowy3',string:'tabula_ui_json_view__1oseowy8 tabula_ui_json_view__1oseowy3',boundary:'tabula_ui_json_view__1oseowy9 tabula_ui_json_view__1oseowy3',placeholder:'tabula_ui_json_view__1oseowya tabula_ui_json_view__1oseowy3'};", "import { FC } from 'react';\n\nimport { clsx } from 'clsx/lite';\n\nimport { useUiTrackId } from '@tabula/ui-analytics';\n\nimport { root } from './Action.css';\n\nimport { useOptions } from '../OptionsProvider';\nimport { ActionFn } from '../types';\n\ntype Props = {\n  action: ActionFn;\n  children: string;\n  className?: string;\n  jsonPath: string;\n  trackId?: string;\n};\n\nexport const Action: FC<Props> = ({ action, className, children, jsonPath, trackId }) => {\n  const { onAction } = useOptions();\n\n  const actualTrackId = useUiTrackId(trackId ?? false);\n\n  const handleClick = () => {\n    onAction(jsonPath, action);\n  };\n\n  return (\n    <button\n      className={clsx(root, className)}\n      data-track-id={actualTrackId}\n      onClick={handleClick}\n      type=\"button\"\n    >\n      {children}\n    </button>\n  );\n};\n", "import 'src/Action/Action.css.ts.vanilla.css?source=#H4sIAAAAAAAAA51SQY7bMAy85xU6NgcWzqJAC-Wy-xKDsWhHqSIaFJXGKPL3wrKCTdptm90rhxzODPkccCIxugsAHR9HjhQ1bVfPb9bNz5UxnxV3OWCbfXtIHNuTpx9tu6P-QNiUDmN6jmrNCeUTQOGYCwngyJHTiB0BCA05oMCmWdD1tkwGUiWBucnH4R0c94OVTemsoIIx9SzHd7DdD1a2kZNXz9EaoYDqT7TUnU9jwMmaPtB5KR1yUt9P0HFUmrPoKCrJAmLwQwSvdEz3wJ78sFdrnpqx8uyw-z4I5-isKXJGFIpaQRZHYs1mPJvEwbtbfx0HlgSwNBUhwgHAUY85XOOuqKDzOVnz5bq37Kpmb0hdFpyLAD0mBdisb1HC5OMAkBSjQ3EAo7DL3ZxU3ZfTfCMK1Kk1kWNNsMuSWKwZ2b-mURzYtzzVVGd-f0SZrvdB58rTNObbYuTyv3-1PXc51a_lrMFHgqRTILtEur1D_i7p95gLLzytH1Ox5xNJVfF68n-si5RVMAC8fL2_5OMKy84H9WG54ccEbpqPKiwZrv98yOvfXFaXX4W72c3ABAAA';\nexport var root = 'tabula_ui_json_view__befjea0';", "import { FC, RefObject, useRef, useState } from 'react';\n\nimport { clsx } from 'clsx/lite';\n\nimport { copied } from './Copy.css';\n\nimport { Action } from '../Action';\nimport { ActionFn, QueryFn } from '../types';\n\ntype Props = {\n  className?: string;\n  defaultLabel: string;\n  jsonPath: string;\n  successLabel: string;\n  toClipboard: (jsonPath: string, query: QueryFn) => string;\n  trackId?: string;\n};\n\nconst delay = 1000;\n\nexport const Copy: FC<Props> = ({\n  className,\n  defaultLabel,\n  jsonPath,\n  successLabel,\n  toClipboard,\n  trackId,\n}) => {\n  const [isCopied, setIsCopied] = useState(false);\n\n  const timerRef: RefObject<number | null> = useRef(null);\n\n  const action: ActionFn = (_, query) => {\n    navigator.clipboard\n      .writeText(toClipboard(jsonPath, query))\n      .then(() => {\n        setIsCopied(true);\n\n        if (timerRef.current != null) {\n          window.clearTimeout(timerRef.current);\n        }\n\n        timerRef.current = window.setTimeout(() => {\n          setIsCopied(false);\n        }, delay);\n      })\n      .catch(() => {\n        setIsCopied(false);\n      });\n  };\n\n  return (\n    <Action\n      className={clsx(className, isCopied && copied)}\n      action={action}\n      jsonPath={jsonPath}\n      trackId={trackId}\n    >\n      {isCopied ? successLabel : defaultLabel}\n    </Action>\n  );\n};\n", "import 'src/Copy/Copy.css.ts.vanilla.css?source=QGxheWVyIHRibC0tY29tcG9uZW50czsKQGxheWVyIHRibC0tY29tcG9uZW50cyB7CiAgLnRhYnVsYV91aV9qc29uX3ZpZXdfXzU3MHp4MjAgewogICAgY29sb3I6IHZhcigtLXRibC0tY29sb3JzLS1jb250ZW50LS1zdWNjZXNzKTsKICB9Cn0';\nexport var copied = 'tabula_ui_json_view__570zx20';", "import { FC, ReactNode } from 'react';\n\nimport { Action } from './Action';\nimport { Copy } from './Copy';\nimport { useOptions } from './OptionsProvider';\nimport { QueryFn, ValueType } from './types';\n\ntype Props = {\n  className?: string;\n  jsonPath: string;\n  type: ValueType;\n};\n\nfunction jsonPathToClipboard(jsonPath: string) {\n  return jsonPath;\n}\n\nfunction valueToClipboard(jsonPath: string, query: QueryFn): string {\n  const value = query(jsonPath);\n\n  return JSON.stringify(value, null, 4);\n}\n\nexport const Actions: FC<Props> = ({ className, jsonPath, type }) => {\n  const { actions, isCopyPathAllowed, isCopyValueAllowed, isInteractive } = useOptions();\n\n  if (!isInteractive) {\n    return null;\n  }\n\n  const body: ReactNode[] = [];\n\n  if (isCopyValueAllowed) {\n    body.push(\n      <Copy\n        className={className}\n        defaultLabel=\"Copy\"\n        jsonPath={jsonPath}\n        key=\"copy-value\"\n        successLabel=\"Copied!\"\n        toClipboard={valueToClipboard}\n        trackId=\"copy-json\"\n      />,\n    );\n  }\n\n  if (isCopyPathAllowed) {\n    body.push(\n      <Copy\n        className={className}\n        defaultLabel=\"Copy JSONPath\"\n        jsonPath={jsonPath}\n        key=\"copy-path\"\n        successLabel=\"Copied!\"\n        toClipboard={jsonPathToClipboard}\n        trackId=\"copy-json-path\"\n      />,\n    );\n  }\n\n  for (const [name, action] of Object.entries(actions)) {\n    if (typeof action === 'function') {\n      body.push(\n        <Action className={className} action={action} key={name} jsonPath={jsonPath}>\n          {name}\n        </Action>,\n      );\n      continue;\n    }\n\n    const { action: actionFn, isVisible, trackId } = action;\n\n    if (isVisible != null && !isVisible(jsonPath, type)) {\n      continue;\n    }\n\n    body.push(\n      <Action\n        className={className}\n        action={actionFn}\n        key={name}\n        jsonPath={jsonPath}\n        trackId={trackId}\n      >\n        {name}\n      </Action>,\n    );\n  }\n\n  return body;\n};\n", "import 'src/Property/Property.css.ts.vanilla.css?source=QGxheWVyIHRibC0tY29tcG9uZW50czsKQGxheWVyIHRibC0tY29tcG9uZW50cyB7CiAgLnRhYnVsYV91aV9qc29uX3ZpZXdfXzF2a2FjanQwIHsKICAgIGZvbnQ6IHZhcigtLXRibC0tZm9udHMtLW1vbm9zcGFjZS0tc2VtaS1ib2xkLTEyLS1mb250KTsKICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS10YmwtLWZvbnRzLS1tb25vc3BhY2UtLXNlbWktYm9sZC0xMi0tbGV0dGVyLXNwYWNpbmcpOwogICAgdGV4dC10cmFuc2Zvcm06IHZhcigtLXRibC0tZm9udHMtLW1vbm9zcGFjZS0tc2VtaS1ib2xkLTEyLS10ZXh0LXRyYW5zZm9ybSk7CiAgICBjb2xvcjogdmFyKC0tdGJsLS1jb2xvcnMtLWNvbnRlbnQtLXByaW1hcnkpOwogIH0KfQ';\nexport var root = 'tabula_ui_json_view__1vkacjt0';", "import { FC } from 'react';\n\nimport { root } from './Property.css';\n\nimport { Property as PropertyType } from '../types';\n\ntype Props = {\n  property?: PropertyType;\n};\n\nexport const Property: FC<Props> = ({ property }) => {\n  if (property == null) {\n    return null;\n  }\n\n  const name = typeof property === 'number' ? property : JSON.stringify(property);\n\n  return <span className={root}>{name}&nbsp;:&nbsp;</span>;\n};\n", "import 'src/Rest/Rest.css.ts.vanilla.css?source=QGxheWVyIHRibC0tY29tcG9uZW50czsKQGxheWVyIHRibC0tY29tcG9uZW50cyB7CiAgLnRhYnVsYV91aV9qc29uX3ZpZXdfXzFnNGg4YTkwIHsKICAgIHBhZGRpbmc6IDAgMWNoOwogIH0KfQ';\nexport var root = 'tabula_ui_json_view__1g4h8a90';", "import { FC } from 'react';\n\nimport { root } from './Rest.css';\n\nimport { useOptions } from '../OptionsProvider';\n\ntype Props = {\n  path: string;\n};\n\nexport const Rest: FC<Props> = ({ path }) => {\n  const { onToggle } = useOptions();\n\n  const handleClick = () => {\n    onToggle(path);\n  };\n\n  return (\n    // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n    <span className={root} onClick={handleClick} role=\"button\" tabIndex={-1}>\n      ...\n    </span>\n  );\n};\n", "import 'src/Size/Size.css.ts.vanilla.css?source=QGxheWVyIHRibC0tY29tcG9uZW50czsKQGxheWVyIHRibC0tY29tcG9uZW50cyB7CiAgLnRhYnVsYV91aV9qc29uX3ZpZXdfXzFmcHdvdWEwIHsKICAgIGZvbnQ6IHZhcigtLXRibC0tZm9udHMtLW1vbm9zcGFjZS0tcmVndWxhci0xMi0tZm9udCk7CiAgICBsZXR0ZXItc3BhY2luZzogdmFyKC0tdGJsLS1mb250cy0tbW9ub3NwYWNlLS1yZWd1bGFyLTEyLS1sZXR0ZXItc3BhY2luZyk7CiAgICB0ZXh0LXRyYW5zZm9ybTogdmFyKC0tdGJsLS1mb250cy0tbW9ub3NwYWNlLS1yZWd1bGFyLTEyLS10ZXh0LXRyYW5zZm9ybSk7CiAgICBjb2xvcjogdmFyKC0tdGJsLS1jb2xvcnMtLWNvbnRlbnQtLXBsYWNlaG9sZGVyKTsKICAgIHVzZXItc2VsZWN0OiBub25lOwogIH0KfQ';\nexport var root = 'tabula_ui_json_view__1fpwoua0';", "import { FC } from 'react';\n\nimport { root } from './Size.css';\n\nimport { useOptions } from '../OptionsProvider';\n\ntype Props = {\n  size: number;\n};\n\nexport const Size: FC<Props> = ({ size }) => {\n  const { showObjectSize } = useOptions();\n\n  if (!showObjectSize) {\n    return null;\n  }\n\n  return <span className={root}>&nbsp;{size === 1 ? '1 item' : `${size} items`}</span>;\n};\n", "import 'src/StringValue/StringValue.css.ts.vanilla.css?source=QGxheWVyIHRibC0tY29tcG9uZW50czsKQGxheWVyIHRibC0tY29tcG9uZW50cyB7CiAgLnRhYnVsYV91aV9qc29uX3ZpZXdfXzN4NDE5dTAgewogICAgZm9udDogdmFyKC0tdGJsLS1mb250cy0tbW9ub3NwYWNlLS1zZW1pLWJvbGQtMTItLWZvbnQpOwogICAgbGV0dGVyLXNwYWNpbmc6IHZhcigtLXRibC0tZm9udHMtLW1vbm9zcGFjZS0tc2VtaS1ib2xkLTEyLS1sZXR0ZXItc3BhY2luZyk7CiAgICB0ZXh0LXRyYW5zZm9ybTogdmFyKC0tdGJsLS1mb250cy0tbW9ub3NwYWNlLS1zZW1pLWJvbGQtMTItLXRleHQtdHJhbnNmb3JtKTsKICAgIGN1cnNvcjogcG9pbnRlcjsKICB9Cn0';\nexport var root = 'tabula_ui_json_view__3x419u0';", "import { useCallback, useEffect, useState } from 'react';\n\ntype Result = [boolean, boolean, () => void];\n\nexport function useStringCollapse(children: string, limit?: number): Result {\n  const initialState = limit != null && children.length > limit;\n\n  const [isCollapsed, setIsCollapsed] = useState(initialState);\n\n  useEffect(() => {\n    setIsCollapsed(initialState);\n  }, [initialState]);\n\n  const onToggle = useCallback(() => {\n    setIsCollapsed((value) => !value);\n  }, []);\n\n  return [limit != null && children.length > limit, isCollapsed, onToggle];\n}\n", "import { FC } from 'react';\n\nimport { root } from './StringValue.css';\n\nimport { useOptions } from '../OptionsProvider';\n\nimport { useStringCollapse } from './StringValue.hooks';\n\ntype Props = {\n  children: string;\n};\n\nexport const StringValue: FC<Props> = ({ children }) => {\n  const { shortStringAfterLength } = useOptions();\n\n  const [isCollapsible, isCollapsed, onToggle] = useStringCollapse(\n    children,\n    shortStringAfterLength,\n  );\n\n  if (!isCollapsible) {\n    return children;\n  }\n\n  return (\n    // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n    <span className={root} onClick={onToggle} role=\"button\" tabIndex={-1}>\n      {isCollapsed ? `${children.slice(0, shortStringAfterLength)}...` : children}\n    </span>\n  );\n};\n", "import { FC } from 'react';\n\nimport { clsx } from 'clsx/lite';\n\nimport { ReactComponent as CollapseIcon } from './assets/collapse.svg';\nimport { ReactComponent as ExpandIcon } from './assets/expand.svg';\n\nimport { root } from './Toggle.css';\n\nimport { useOptions } from '../OptionsProvider';\n\ntype Props = {\n  className?: string;\n  isCollapsed?: boolean;\n  path: string;\n};\n\nexport const Toggle: FC<Props> = ({ className, isCollapsed, path }) => {\n  const { isInteractive, onToggle } = useOptions();\n\n  if (!isInteractive) {\n    return null;\n  }\n\n  const handleClick = () => {\n    onToggle(path);\n  };\n\n  return (\n    <button className={clsx(root, className)} onClick={handleClick} type=\"button\">\n      {isCollapsed ? <ExpandIcon /> : <CollapseIcon />}\n    </button>\n  );\n};\n", "import svgUrl from \"ni:svgr;_2U_OUAqgzprVa0XvhEIJHfcn_zQGgrghXuCPHjYff8\";\nexport default svgUrl;\nimport * as React from \"react\";\nimport { memo } from \"react\";\nconst CollapseIcon = props => <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path stroke=\"currentColor\" d=\"M4 8h8\" /></svg>;\nconst Memo = memo(CollapseIcon);\nexport { Memo as ReactComponent };\nif (import.meta.env.DEV) {\n  Memo.displayName = \"CollapseIcon\";\n}", "import svgUrl from \"ni:svgr;7-M1vzzgvROUnExFPCtlIR6Gawtwe9r5iUu2N8_rU_Y\";\nexport default svgUrl;\nimport * as React from \"react\";\nimport { memo } from \"react\";\nconst ExpandIcon = props => <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path stroke=\"currentColor\" d=\"M4 8h8M8 4v8\" /></svg>;\nconst Memo = memo(ExpandIcon);\nexport { Memo as ReactComponent };\nif (import.meta.env.DEV) {\n  Memo.displayName = \"ExpandIcon\";\n}", "import 'src/Toggle/Toggle.css.ts.vanilla.css?source=#H4sIAAAAAAAAA51SQY7bMAy85xU6NgcWSbBoAeWyfUnAWLSjVBYNivLGKPL3hWUHG7fbNrtXDjkzHPI54EBi9BgAKm47jhQ17VfP79bNr5UxXxWPOeAh-8M5cTz0nl4Oh12j577dlA5jao5qTY_yBaBwjIUE0HLk1GFFAEJNDiiw3U3oel8mA6mSwNjkY_MBjuXgzKZ0UVDBmGqW9gNsy8GZzfnUBRysqQNdptI5J_X1ABVHpXHniqKSTCAG30TwSm1aAi_e6cma7bdupjmRb056Xzli9bMRztFZU3x0KBR1BlkciTXb7mISB-_uF6s4sCSAqak4Ew4AjmrM4ZbzjAo6n5M1TzfdDp0rwW_mBEdtr57jIj2XBcciQI1JAbbre5Qw-dgAJMXoUBxAJ-xypb6nWT-n8VgUqFJrIkeaylWWxGJNx_4trrKRfW_HOfaR37coQyG__u9Jbc1VTvOrctbgI0HSIZCd4twvkL_L_x5x4YXdgy5O3JPMLt7O_Q-5SFkFA8CP78srPu6waD7oD8u9Pmdwu_msw5Lh-s_nu_3IdXV9BfBlAbO1BAAA';\nexport var root = 'tabula_ui_json_view__2gtjvm0';", "import 'src/Type/Type.css.ts.vanilla.css?source=QGxheWVyIHRibC0tY29tcG9uZW50czsKQGxheWVyIHRibC0tY29tcG9uZW50cyB7CiAgLnRhYnVsYV91aV9qc29uX3ZpZXdfX3I5OHo1ZDAgewogICAgZm9udDogdmFyKC0tdGJsLS1mb250cy0tbW9ub3NwYWNlLS1yZWd1bGFyLTEyLS1mb250KTsKICAgIGxldHRlci1zcGFjaW5nOiB2YXIoLS10YmwtLWZvbnRzLS1tb25vc3BhY2UtLXJlZ3VsYXItMTItLWxldHRlci1zcGFjaW5nKTsKICAgIHRleHQtdHJhbnNmb3JtOiB2YXIoLS10YmwtLWZvbnRzLS1tb25vc3BhY2UtLXJlZ3VsYXItMTItLXRleHQtdHJhbnNmb3JtKTsKICAgIGNvbG9yOiB2YXIoLS10YmwtLWNvbG9ycy0tY29udGVudC0tcGxhY2Vob2xkZXIpOwogICAgdXNlci1zZWxlY3Q6IG5vbmU7CiAgfQp9';\nexport var root = 'tabula_ui_json_view__r98z5d0';", "import { FC } from 'react';\n\nimport { root } from './Type.css';\n\nimport { useOptions } from '../OptionsProvider';\nimport { PrimitiveType } from '../types';\n\ntype Props = {\n  type: PrimitiveType;\n};\n\nexport const Type: FC<Props> = ({ type }) => {\n  const { showDataTypes } = useOptions();\n\n  if (!showDataTypes || type === 'null') {\n    return null;\n  }\n\n  return <span className={root}>{type}&nbsp;</span>;\n};\n", "import { FC } from 'react';\n\nimport { clsx } from 'clsx/lite';\n\nimport { root } from './Options.css';\n\nimport { Option } from '../Option';\nimport { useOptions } from '../OptionsProvider';\n\ntype Props = {\n  className?: string;\n};\n\nexport const Options: FC<Props> = ({ className }) => {\n  const { onToggleDataTypes, onToggleObjectSize, showDataTypes, showObjectSize } = useOptions();\n\n  if (onToggleDataTypes == null && onToggleObjectSize == null) {\n    return null;\n  }\n\n  return (\n    <div className={clsx(root, className)}>\n      {onToggleDataTypes && (\n        <Option onChange={onToggleDataTypes} value={showDataTypes}>\n          Show types\n        </Option>\n      )}\n      {onToggleObjectSize && (\n        <Option onChange={onToggleObjectSize} value={showObjectSize}>\n          Show sizes\n        </Option>\n      )}\n    </div>\n  );\n};\n", "import 'src/Options/Options.css.ts.vanilla.css?source=QGxheWVyIHRibC0tY29tcG9uZW50czsKQGxheWVyIHRibC0tY29tcG9uZW50cyB7CiAgLnRhYnVsYV91aV9qc29uX3ZpZXdfX2tlMDRibDAgewogICAgZGlzcGxheTogZmxleDsKICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7CiAgICBhbGlnbi1pdGVtczogc3RyZXRjaDsKICAgIGdhcDogNHB4OwogICAgcGFkZGluZzogNHB4OwogICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgYmFja2dyb3VuZDogdmFyKC0tdGJsLS1jb2xvcnMtLXdoaXRlLS1BODApOwogIH0KfQ';\nexport var root = 'tabula_ui_json_view__ke04bl0';", "import 'src/Option/Option.css.ts.vanilla.css?source=#H4sIAAAAAAAAA61VwW7bMAy99yt0KZBg5WB7XVAol_5JoEi0rVaWPFFKYgz990G23CVbhzhYb8bj4xP5KNHPRgzoWdgbAOm63lm0gbZ3zx_i7OcdY1-D2EcjdlHvXsjZ3UHjcbcrPXY_uk0xUhirnQ2cHYRfAYwiCSAAEpaA0OsaoEOlYwdlNUXX2zHTYAjogXohtW1u0LhMzGoBTwGCF5Zq57sb1C4Ts5rS1BsxcFYbPE1Q-gKlPcqgneXMu-MUeIkUdD2AdDZgMmNkUhA-TARhdGNBB-yIM4k2oJ8Cjeg5e-rzATJ6cp6z3umZ8nZtCmWewnu91llclFnlzKNWoeWsKuYyWtRNGzgrqxnphVLjhMoZ2Tuv0IMXSkfirNy8B4R8bbyLVoF0JnVzNocRIQAhkwlAKJ1Vwg_QeBwAHosiu-8O6Gvjjpy1Wim0y6zgbcpjX670_XBNpnYy0lWZbN__NLzJDS9o7aaaXAxGWwQKg0HOyBmttheRf5eaJ5vusnfj25GRoFpf5ru6JgycFQvLly3KV1Sfamqtjfld558WLzP22y0HnpGg97pLg8xvfv3hs_he3M_4CagVKt3oIr0i9tifPjpiIgE8rR8ysVpCTGrlFWa5mRdlWnV62mFnfBW9SCBALSgAlOvzKArStgFAm9IlJgecijLoA2bdvEjKvxdJRj7zniya6tnfYPw0IuBKCiNXZVHcM0jmJv_yXXn7BW9MQfIjBwAA';\nexport var handle = 'tabula_ui_json_view__1remqm63';\nexport var indicator = 'tabula_ui_json_view__1remqm62';\nexport var input = 'tabula_ui_json_view__1remqm61';\nexport var root = 'tabula_ui_json_view__1remqm60';", "import { ChangeEventHandler, FC } from 'react';\n\nimport { handle, indicator, input, root } from './Option.css';\n\ntype Props = {\n  children: string;\n  onChange: (value: boolean) => void;\n  value: boolean;\n};\n\nexport const Option: FC<Props> = ({ children, onChange, value }) => {\n  const handleChange: ChangeEventHandler<HTMLInputElement> = ({ currentTarget }) => {\n    onChange(currentTarget.checked);\n  };\n\n  return (\n    <label className={root}>\n      <input checked={value} className={input} onChange={handleChange} type=\"checkbox\" />\n      <div className={indicator}>\n        <div className={handle} />\n      </div>\n      {children}\n    </label>\n  );\n};\n", "import { ReactElement, useCallback, useMemo } from 'react';\n\nimport { clsx } from 'clsx/lite';\nimport { List, RowComponentProps } from 'react-window';\n\nimport { useSize } from '@tabula/use-size';\n\nimport { basePadding, itemHeight } from '../shared.css';\nimport { list, options, root } from './VirtualView.css';\n\nimport { Line } from '../Line';\nimport { Options } from '../Options';\nimport { Line as LineType, ViewComponentType } from '../types';\n\ntype RowProps = {\n  lines: LineType[];\n};\n\nfunction lineRenderer({\n  index,\n  lines,\n  style,\n}: RowComponentProps<RowProps>): ReactElement {\n  const line = lines[index];\n\n  return <Line line={line} style={style} />;\n}\n\nexport const VirtualView: ViewComponentType = ({ className, lines }) => {\n  const [ref, { height }] = useSize();\n\n  const rowProps = useMemo<RowProps>(() => ({ lines }), [lines]);\n\n  const rowHeight = useCallback(\n    (index: number) => {\n      const { isFirst, isLast } = lines[index];\n\n      let size = itemHeight;\n\n      if (isFirst) {\n        size += basePadding;\n      }\n\n      if (isLast) {\n        size += basePadding;\n      }\n\n      return size;\n    },\n    [lines],\n  );\n\n  return (\n    <div className={clsx(className, root)} ref={ref}>\n      <List<RowProps>\n        className={list}\n        rowComponent={lineRenderer}\n        rowCount={lines.length}\n        rowHeight={rowHeight}\n        rowProps={rowProps}\n        overscanCount={Math.floor(height / itemHeight / 4)}\n        style={{ height, width: '100%' }}\n      />\n      <Options className={options} />\n    </div>\n  );\n};\n", "export var basePadding = 16;\nexport var controlPadding = 24;\nexport var itemHeight = 24;\nexport var padding = 'var(--tabula_ui_json_view__etkwhp0)';", "import 'src/VirtualView/VirtualView.css.ts.vanilla.css?source=QGxheWVyIHRibC0tY29tcG9uZW50czsKQGxheWVyIHRibC0tY29tcG9uZW50cyB7CiAgLnRhYnVsYV91aV9qc29uX3ZpZXdfX251YjF6azAgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogIH0KICAudGFidWxhX3VpX2pzb25fdmlld19fbnViMXprMSB7CiAgICB3aWR0aDogMTAwJTsKICAgIGhlaWdodDogMTAwJTsKICB9CiAgLnRhYnVsYV91aV9qc29uX3ZpZXdfX251YjF6azIgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiA0cHg7CiAgICByaWdodDogNHB4OwogIH0KfQ';\nexport var list = 'tabula_ui_json_view__nub1zk1';\nexport var options = 'tabula_ui_json_view__nub1zk2';\nexport var root = 'tabula_ui_json_view__nub1zk0';", "import { useMemo } from 'react';\n\nimport jp from 'jsonpath';\n\nimport { JsonValue, OnActionFn, QueryFn } from '../../types';\n\nexport function useActionHandler(value: JsonValue, isValid: boolean): OnActionFn {\n  return useMemo<OnActionFn>(() => {\n    if (!isValid) {\n      return () => null;\n    }\n\n    const query: QueryFn = (jsonPath) => jp.value(value, jsonPath) as JsonValue;\n\n    return (jsonPath, action) => {\n      action(jsonPath, query);\n    };\n  }, [value, isValid]);\n}\n", "import { useCallback, useEffect, useState } from 'react';\n\nimport { CollapsedKeys, Line, LineKind, OnToggleFn } from '../../types';\n\n// region Registry\n\nclass Registry implements CollapsedKeys {\n  public constructor(private readonly keys: Set<string> = new Set()) {}\n\n  public get isEmpty(): boolean {\n    return this.keys.size === 0;\n  }\n\n  public has(key: string): boolean {\n    return this.keys.has(key);\n  }\n\n  public toggle(key: string): Registry {\n    if (this.keys.has(key)) {\n      this.keys.delete(key);\n    } else {\n      this.keys.add(key);\n    }\n\n    return new Registry(this.keys);\n  }\n}\n\n// endregion\n\n// region Init\n\nfunction initCollapsedKeys(lines: Line[], collapsed: boolean | number): Registry {\n  const keys = new Set<string>();\n\n  if (collapsed !== false) {\n    const minLevel = collapsed === true ? 0 : collapsed;\n\n    for (const line of lines) {\n      if (line.kind === LineKind.Open && line.level >= minLevel) {\n        keys.add(line.path);\n      }\n    }\n  }\n\n  return new Registry(keys);\n}\n\n// endregion\n\n// region Hook\n\ntype Result = [CollapsedKeys, OnToggleFn];\n\nexport function useCollapsedKeys(lines: Line[], collapsed: boolean | number = false): Result {\n  const [keys, setKeys] = useState(() => initCollapsedKeys(lines, collapsed));\n\n  useEffect(() => {\n    setKeys(initCollapsedKeys(lines, collapsed));\n  }, [lines, collapsed]);\n\n  const onToggle = useCallback<OnToggleFn>((key: string) => {\n    setKeys((current) => current.toggle(key));\n  }, []);\n\n  return [keys, onToggle];\n}\n\n// endregion\n", "import { useMemo } from 'react';\n\nimport { CollapsedKeys, Line, LineKind } from '../../types';\n\nfunction markPositions(lines: Line[]) {\n  if (lines.length === 0) {\n    return;\n  }\n\n  lines[0] = { ...lines[0], isFirst: true };\n\n  const lastIndex = lines.length - 1;\n\n  lines[lastIndex] = { ...lines[lastIndex], isLast: true };\n}\n\nexport function useCollapsedLines(allLines: Line[], collapsedKeys: CollapsedKeys): Line[] {\n  return useMemo(() => {\n    if (collapsedKeys.isEmpty) {\n      const lines = [...allLines];\n\n      markPositions(lines);\n\n      return lines;\n    }\n\n    const lines: Line[] = [];\n\n    let skip: null | string = null;\n\n    for (const line of allLines) {\n      if (skip != null) {\n        if (line.path.startsWith(skip)) {\n          continue;\n        } else {\n          skip = null;\n        }\n      }\n\n      if (line.kind === LineKind.Open && collapsedKeys.has(line.path)) {\n        skip = `${line.path}.`;\n\n        lines.push({ ...line, isCollapsed: true });\n      } else {\n        lines.push(line);\n      }\n    }\n\n    markPositions(lines);\n\n    return lines;\n  }, [allLines, collapsedKeys]);\n}\n", "import { useMemo } from 'react';\n\nimport { JsonValue, Line, LineKind } from '../../../types';\n\nimport { enqueueItemsFrom } from './enqueueItemsFrom';\nimport { Item } from './types';\n\nexport function useLines(value: JsonValue, isValid: boolean, maxNumberOfLines: number): Line[] {\n  return useMemo(() => {\n    // Step 1: If source value isn't valid JSON value, then return placeholder.\n    if (!isValid) {\n      return [\n        {\n          level: 0,\n          path: '0',\n          placeholder: 'Invalid JSON',\n          kind: LineKind.Placeholder,\n        },\n      ];\n    }\n\n    // Step 2: Create an initial value and make it cursor.\n    let cursor: Item | undefined = {\n      isLine: false,\n\n      jsonPath: ['$'],\n      level: 0,\n      path: '0',\n\n      value,\n    };\n\n    // Step 3: Create lines container.\n    const lines: Line[] = [];\n\n    // Step 4: Iterate over the queue.\n    while (cursor != null) {\n      if (cursor.isLine) {\n        // Step 4.1: If item is already contains a line, then push line to result.\n        lines.push(cursor.line);\n      } else {\n        // Step 4.2: Otherwise, insert new items to the queue.\n        enqueueItemsFrom(cursor);\n      }\n\n      if (lines.length === maxNumberOfLines) {\n        lines.push({\n          kind: LineKind.Placeholder,\n\n          level: 0,\n          path: `more`,\n\n          placeholder: '...',\n        });\n\n        break;\n      }\n\n      // Step 4.3: Move to the next item in queue.\n      cursor = cursor.next;\n    }\n\n    // Step 5: Return a result.\n    return lines;\n  }, [value, isValid, maxNumberOfLines]);\n}\n", "import { JsonPrimitiveValue, JsonValue } from '../../../types';\n\nexport function isPrimitiveValue(value: JsonValue): value is JsonPrimitiveValue {\n  if (value == null) {\n    return true;\n  }\n\n  const type = typeof value;\n\n  return type === 'boolean' || type === 'number' || type === 'string';\n}\n", "import jp from 'jsonpath';\n\nimport {\n  ComplexType,\n  JsonPrimitiveValue,\n  JsonValue,\n  LineKind,\n  OpenLine,\n  PrimitiveType,\n  Property,\n  ValueLine,\n} from '../../../types';\n\nimport { Item, JsonPath, LineItem, ValueItem } from './types';\n\n// region Value Line\n\nfunction typedValueOf(value: JsonPrimitiveValue): [PrimitiveType, string] {\n  if (value == null) {\n    return ['null', 'null'];\n  }\n\n  switch (typeof value) {\n    case 'boolean': {\n      return ['bool', value.toString()];\n    }\n    case 'number': {\n      return [Number.isInteger(value) ? 'int' : 'float', value.toString()];\n    }\n    default: {\n      return ['string', JSON.stringify(value)];\n    }\n  }\n}\n\ntype ValueLineItemFromOptions = {\n  jsonPath: JsonPath;\n  level: number;\n  path: string;\n\n  property?: Property;\n};\n\nexport function valueLineItemFrom(\n  source: JsonPrimitiveValue,\n  { jsonPath: jsonPathComponents, level, path, property }: ValueLineItemFromOptions,\n): LineItem {\n  // Step 1: Convert JSON Path components to string.\n  const jsonPath = jp.stringify(jsonPathComponents);\n\n  // Step 2: Match value with line type.\n  const [type, value] = typedValueOf(source);\n\n  // Step 3: Build a line object.\n  const line: ValueLine = { kind: LineKind.Value, jsonPath, path, level, type, value };\n\n  // Step 4: If property is represented, then add it to the line.\n  if (property != null) {\n    line.property = property;\n  }\n\n  // Step 5: Return a result.\n  return { isLine: true, line };\n}\n\n// endregion\n\n// region Boundary\n\ntype OpenItemFromOptions = {\n  closeSymbol: string;\n  jsonPath: JsonPath;\n  level: number;\n  openSymbol: string;\n  path: string;\n  property?: Property;\n  size: number;\n  type: ComplexType;\n};\n\nexport function openItemFrom({\n  closeSymbol,\n  jsonPath,\n  level,\n  openSymbol,\n  path,\n  property,\n  size,\n  type,\n}: OpenItemFromOptions): LineItem {\n  const line: OpenLine = {\n    kind: LineKind.Open,\n\n    jsonPath: jp.stringify(jsonPath),\n    level,\n    path,\n\n    openSymbol,\n    closeSymbol,\n\n    size,\n    type,\n  };\n\n  if (property != null) {\n    line.property = property;\n  }\n\n  return { isLine: true, line };\n}\n\ntype CloseItemFromOptions = {\n  closeSymbol: string;\n  level: number;\n  path: string;\n  size: number;\n};\n\nexport function closeItemFrom({ closeSymbol, level, path, size }: CloseItemFromOptions): LineItem {\n  return {\n    isLine: true,\n\n    line: {\n      kind: LineKind.Close,\n\n      level,\n      // NOTE: If size is 0, then an empty placeholder will be added, and size will be 1.\n      path: `${path}.${Math.max(size, 1)}`,\n\n      closeSymbol,\n    },\n  };\n}\n\n// endregion\n\n// region Placeholder\n\ntype EmptyItemFromOptions = {\n  level: number;\n  path: string;\n};\n\nexport function emptyItemFrom({ level, path }: EmptyItemFromOptions): Item {\n  return {\n    isLine: true,\n\n    line: {\n      kind: LineKind.Placeholder,\n\n      level: level + 1,\n      path: `${path}.0`,\n\n      placeholder: 'empty',\n    },\n  };\n}\n\n// endregion\n\n// region Value\n\ntype ValueItemFromOptions = {\n  index: number;\n  jsonPath: JsonPath;\n  level: number;\n  path: string;\n  property: number | string;\n  value: JsonValue;\n};\n\nexport function valueItemFrom({\n  index,\n  jsonPath,\n  level,\n  path,\n  property,\n  value,\n}: ValueItemFromOptions): ValueItem {\n  return {\n    isLine: false,\n\n    jsonPath: [...jsonPath, property],\n    level: level + 1,\n    path: `${path}.${index}`,\n\n    property,\n\n    value,\n  };\n}\n\n// endregion\n", "import { ComplexType, JsonArray, JsonObject, JsonValue } from '../../../types';\n\n// region Types\n\ntype Item<Key, Property> = [Key, Property, JsonValue];\n\ntype ArrayItem = Item<number, number>;\n\ntype ObjectItem = Item<number, string>;\n\n// endregion\n\n// region Parse\n\nfunction arrayChildrenOf(value: JsonArray): ArrayItem[] {\n  return value.map((child, index) => [index, index, child]);\n}\n\nfunction objectChildrenOf(value: JsonObject): ObjectItem[] {\n  return Object.entries(value).map(([property, child], index) => [index, property, child]);\n}\n\n// endregion\n\ntype Meta = {\n  children: ArrayItem[] | ObjectItem[];\n\n  openSymbol: string;\n  closeSymbol: string;\n  size: number;\n  type: ComplexType;\n};\n\nexport function metaOf(value: JsonArray | JsonObject): Meta {\n  if (Array.isArray(value)) {\n    const children = arrayChildrenOf(value);\n\n    return {\n      children,\n      openSymbol: '[',\n      closeSymbol: ']',\n      size: children.length,\n      type: 'array',\n    };\n  }\n\n  const children = objectChildrenOf(value);\n\n  return {\n    children,\n    openSymbol: '{',\n    closeSymbol: '}',\n    size: children.length,\n    type: 'object',\n  };\n}\n", "import { isPrimitiveValue } from './isPrimitiveValue';\nimport {\n  closeItemFrom,\n  emptyItemFrom,\n  openItemFrom,\n  valueItemFrom,\n  valueLineItemFrom,\n} from './itemFrom';\nimport { metaOf } from './metaOf';\nimport { Item, ValueItem } from './types';\n\nexport function enqueueItemsFrom(parent: ValueItem): void {\n  const { jsonPath, level, path, property, value: source, next } = parent;\n\n  // Step 1: If source value is primitive value, then create line item immediately.\n  if (isPrimitiveValue(source)) {\n    // Step 1.1: Create an item.\n    const item = valueLineItemFrom(source, {\n      jsonPath,\n      path,\n      level,\n      property,\n    });\n\n    // Step 1.2: If parent is presented, then redirect references.\n    item.next = next;\n\n    parent.next = item;\n\n    return;\n  }\n\n  // Step 2: Get a unified children of source value, because it can be an array or an object.\n  const { children, openSymbol, closeSymbol, size, type } = metaOf(source);\n\n  // Step 3: Create an open item.\n  const open = openItemFrom({\n    jsonPath,\n    level,\n    path,\n\n    property,\n\n    openSymbol,\n    closeSymbol,\n\n    size,\n    type,\n  });\n\n  // Step 4: Create a close item.\n  const close = closeItemFrom({\n    level,\n    path,\n\n    closeSymbol,\n\n    size,\n  });\n\n  // Step 5: Redirect references.\n  close.next = next;\n\n  parent.next = open;\n\n  // Step 6: Make an open item an initial cursor value.\n  let cursor: Item = open;\n\n  if (size === 0) {\n    // Step 7.1: Create an empty item if source value has no children.\n    const empty = emptyItemFrom({ path, level });\n\n    // Step 7.2: Redirect references.\n    empty.next = close;\n\n    cursor.next = empty;\n  } else {\n    // Step 8.1: Iterate over children and convert them to items.\n    for (const [index, childProperty, value] of children) {\n      // Step 8.1.1: Create an item.\n      const item = valueItemFrom({\n        jsonPath,\n        level,\n        path,\n\n        index,\n        property: childProperty,\n\n        value,\n      });\n\n      // Step 8.1.2: Redirect references.\n      cursor.next = item;\n\n      cursor = item;\n    }\n\n    // Step 8.2: Make close as next item after last child item.\n    cursor.next = close;\n  }\n}\n", "import { useMemo } from 'react';\n\nimport { JsonValue } from '../../types';\n\nexport function useValue(source: string): [JsonValue, boolean] {\n  return useMemo(() => {\n    try {\n      const value = JSON.parse(source) as JsonValue;\n\n      return [value, true];\n    } catch {\n      return [null, false];\n    }\n  }, [source]);\n}\n"],
  "mappings": "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",
  "names": ["clsx", "clsx", "memo", "clsx", "variants", "root", "jsx", "root", "clsx", "jsx", "clsx", "jsx", "root", "root", "root", "jsx", "root", "root", "jsxs", "root", "root", "useState", "jsx", "root", "clsx", "jsx", "jsx", "React", "memo", "jsx", "jsx", "Memo", "memo", "Memo", "root", "jsx", "clsx", "root", "Memo", "root", "jsxs", "root", "jsx", "jsxs", "memo", "Line", "clsx", "variants", "clsx", "root", "root", "jsx", "jsxs", "root", "jsx", "jsxs", "clsx", "root", "jsx", "jsxs", "clsx", "useCallback", "useMemo", "clsx", "options", "root", "jsx", "jsxs", "useMemo", "useCallback", "clsx", "root", "options", "useMemo", "useCallback", "useEffect", "useState", "useState", "useEffect", "useCallback", "useMemo", "useMemo", "lines", "useMemo", "jp", "level", "jp", "children", "level", "useMemo", "useMemo", "jsx", "clsx"]
}
