@perspective-dev/viewer 5.5.0 → 5.6.0
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 +82 -3
- package/dist/cdn/perspective-viewer.js +9 -9
- package/dist/cdn/perspective-viewer.js.map +3 -3
- package/dist/css/blueprint.css +1 -1
- package/dist/css/botanical.css +1 -1
- package/dist/css/dracula.css +1 -1
- package/dist/css/eggplant.css +1 -1
- package/dist/css/gruvbox-dark.css +1 -1
- package/dist/css/gruvbox.css +1 -1
- package/dist/css/icons.css +1 -1
- package/dist/css/intl/ar.css +1 -1
- package/dist/css/intl/de.css +1 -1
- package/dist/css/intl/es.css +1 -1
- package/dist/css/intl/fr.css +1 -1
- package/dist/css/intl/ja.css +1 -1
- package/dist/css/intl/pt.css +1 -1
- package/dist/css/intl/zh.css +1 -1
- package/dist/css/intl.css +1 -1
- package/dist/css/ledger.css +1 -1
- package/dist/css/monokai.css +1 -1
- package/dist/css/nord.css +1 -1
- package/dist/css/phosphor.css +1 -1
- package/dist/css/pro-dark.css +1 -1
- package/dist/css/pro.css +1 -1
- package/dist/css/solarized-dark.css +1 -1
- package/dist/css/solarized.css +1 -1
- package/dist/css/themes.css +1 -1
- package/dist/css/vaporwave.css +1 -1
- package/dist/css/velvet.css +1 -1
- package/dist/docs/perspective-docs.json +1 -1
- package/dist/esm/column-format.js +2 -0
- package/dist/esm/column-format.js.map +7 -0
- package/dist/esm/extensions.d.ts +3 -13
- package/dist/esm/perspective-viewer.d.ts +1 -1
- package/dist/esm/perspective-viewer.js +9 -9
- package/dist/esm/perspective-viewer.js.map +3 -3
- package/dist/esm/plugin.d.ts +4 -1
- package/dist/esm/select-detail.d.ts +15 -0
- package/dist/esm/select-detail.js +2 -0
- package/dist/esm/select-detail.js.map +7 -0
- package/dist/esm/ts-rs/DerivedTableConfig.d.ts +35 -0
- package/dist/esm/ts-rs/ExportMethod.d.ts +1 -1
- package/dist/esm/ts-rs/PanelViewerConfig.d.ts +7 -6
- package/dist/esm/ts-rs/RestoreOptions.d.ts +3 -7
- package/dist/esm/ts-rs/TableRef.d.ts +9 -0
- package/dist/esm/ts-rs/ViewerConfig.d.ts +7 -6
- package/dist/esm/ts-rs/ViewerConfigUpdate.d.ts +7 -5
- package/dist/esm/ts-rs/WorkspaceConfig.d.ts +9 -1
- package/dist/esm/ts-rs/WorkspaceConfigUpdate.d.ts +9 -0
- package/dist/wasm/perspective-viewer.d.ts +126 -35
- package/dist/wasm/perspective-viewer.js +320 -185
- package/dist/wasm/perspective-viewer.wasm +0 -0
- package/dist/wasm/perspective-viewer.wasm.d.ts +21 -17
- package/package.json +33 -20
- package/src/css/column-selector.css +205 -50
- package/src/css/ui/containers/context-menu.css +12 -1
- package/src/css/ui/containers/dropdown-menu-items.css +29 -0
- package/src/css/ui/containers/scroll-panel.css +4 -1
- package/src/rust/agent/client/protocol.rs +0 -89
- package/src/rust/agent/markdown/mod.rs +0 -238
- package/src/rust/agent/preamble.md +1 -0
- package/src/rust/agent/tools.rs +2 -16
- package/src/rust/components/column_selector/active_column.rs +15 -5
- package/src/rust/components/column_selector/add_expression_button.rs +9 -26
- package/src/rust/components/column_selector/config_selector.rs +34 -6
- package/src/rust/components/column_selector/derived_control.rs +229 -0
- package/src/rust/components/column_selector/expr_edit_button.rs +3 -2
- package/src/rust/components/column_selector/filter_column.rs +0 -2
- package/src/rust/components/column_selector/inactive_column.rs +4 -5
- package/src/rust/components/column_selector/pivot_column.rs +21 -1
- package/src/rust/components/column_selector/sort_column.rs +4 -3
- package/src/rust/components/column_selector.rs +21 -1
- package/src/rust/components/column_settings_sidebar/save_settings.rs +5 -3
- package/src/rust/components/column_settings_sidebar/style_tab.rs +1 -0
- package/src/rust/components/column_settings_sidebar.rs +25 -19
- package/src/rust/components/debug_panel.rs +38 -29
- package/src/rust/components/dragdrop_list.rs +8 -9
- package/src/rust/components/export_dropdown.rs +6 -0
- package/src/rust/components/main_panel/msg.rs +6 -4
- package/src/rust/components/main_panel/reconcile.rs +6 -1
- package/src/rust/components/main_panel/render.rs +70 -51
- package/src/rust/components/main_panel/update.rs +39 -1
- package/src/rust/components/main_panel.rs +97 -59
- package/src/rust/components/new_panel_menu.rs +69 -1
- package/src/rust/components/panel_menu.rs +63 -12
- package/src/rust/components/plugin_tab.rs +3 -2
- package/src/rust/components/render_warning.rs +2 -1
- package/src/rust/components/settings_panel.rs +4 -4
- package/src/rust/components/status_bar.rs +80 -21
- package/src/rust/components/status_indicator.rs +8 -1
- package/src/rust/components/viewer/filters.rs +15 -3
- package/src/rust/components/viewer/msg.rs +8 -0
- package/src/rust/components/viewer/panels.rs +44 -4
- package/src/rust/components/viewer/render.rs +1 -0
- package/src/rust/components/viewer/settings.rs +0 -22
- package/src/rust/components/viewer/snapshots.rs +2 -2
- package/src/rust/components/viewer/wiring.rs +18 -1
- package/src/rust/components/viewer.rs +47 -27
- package/src/rust/components/window_editor.rs +5 -4
- package/src/rust/config/column_config_schema.rs +38 -377
- package/src/rust/config/export_method.rs +24 -0
- package/src/rust/config/number_string_format.rs +0 -94
- package/src/rust/config/options.rs +3 -7
- package/src/rust/config/plugin_static_config.rs +0 -42
- package/src/rust/config/viewer_config.rs +47 -17
- package/src/rust/config/workspace_config.rs +158 -128
- package/src/rust/custom_elements/viewer.rs +189 -129
- package/src/rust/custom_events.rs +33 -18
- package/src/rust/derived.rs +266 -0
- package/src/rust/exprtk/tokenize.rs +0 -54
- package/src/rust/js/plugin.rs +1 -1
- package/src/rust/lib.rs +3 -0
- package/src/rust/presentation.rs +23 -4
- package/src/rust/queries/column_locator.rs +55 -48
- package/src/rust/queries/get_viewer_config.rs +1 -1
- package/src/rust/queries/plugin_column_styles.rs +22 -23
- package/src/rust/renderer/dispatch.rs +2 -0
- package/src/rust/renderer/plugin_config.rs +652 -487
- package/src/rust/renderer/props.rs +4 -0
- package/src/rust/renderer/registry.rs +2 -6
- package/src/rust/renderer/state.rs +205 -0
- package/src/rust/renderer.rs +201 -59
- package/src/rust/session/metadata.rs +35 -19
- package/src/rust/session/op_queue.rs +430 -0
- package/src/rust/session/panel_state.rs +327 -0
- package/src/rust/session/view_subscription.rs +42 -3
- package/src/rust/session.rs +931 -419
- package/src/rust/tasks/apply_global_filters.rs +49 -35
- package/src/rust/tasks/auto_pause.rs +22 -12
- package/src/rust/tasks/copy_export.rs +72 -0
- package/src/rust/tasks/create_panel.rs +46 -21
- package/src/rust/tasks/derive.rs +312 -0
- package/src/rust/tasks/mod.rs +6 -2
- package/src/rust/tasks/pipeline.rs +152 -89
- package/src/rust/tasks/reset_all.rs +31 -20
- package/src/rust/tasks/restore_derived.rs +200 -0
- package/src/rust/tasks/restore_panel.rs +153 -141
- package/src/rust/tasks/send_column_config.rs +56 -29
- package/src/rust/tasks/send_plugin_config.rs +52 -23
- package/src/rust/tasks/set_edit_mode.rs +33 -25
- package/src/rust/tasks/sync_update_panels.rs +40 -13
- package/src/rust/tasks/table_lifecycle.rs +70 -34
- package/src/rust/tasks/transactional_restore.rs +387 -0
- package/src/rust/tasks/update_theme.rs +45 -6
- package/src/rust/ui/containers/scroll_panel.rs +17 -10
- package/src/rust/ui/containers/split_panel.rs +0 -41
- package/src/rust/ui/context_menu.rs +157 -18
- package/src/rust/ui/font_loader.rs +23 -35
- package/src/rust/ui/form/mirrored_textarea.rs +0 -12
- package/src/rust/ui/form/multi_stop_gradient_selector.rs +0 -89
- package/src/rust/ui/form/palette_selector.rs +0 -51
- package/src/rust/ui/portal.rs +4 -10
- package/src/rust/utils/browser/mod.rs +2 -3
- package/src/{ts/perspective-viewer.inline.ts → rust/utils/browser/mouse.rs} +11 -10
- package/src/rust/utils/browser/request_animation_frame.rs +27 -8
- package/src/rust/utils/css.rs +0 -360
- package/src/rust/utils/{tests/mod.rs → in_flight.rs} +62 -2
- package/src/rust/utils/local_fonts.rs +0 -36
- package/src/rust/utils/mod.rs +4 -3
- package/src/rust/utils/modal_position.rs +15 -21
- package/src/rust/utils/pending_effects.rs +6 -30
- package/src/rust/utils/{browser/tests/mod.rs → plugin_host_state.rs} +31 -1
- package/src/rust/utils/pubsub.rs +0 -1
- package/src/rust/workspace.rs +187 -140
- package/src/svg/derived.svg +6 -0
- package/src/themes/icons.css +1 -0
- package/src/themes/intl/ar.css +10 -0
- package/src/themes/intl/de.css +10 -0
- package/src/themes/intl/es.css +10 -0
- package/src/themes/intl/fr.css +10 -0
- package/src/themes/intl/ja.css +10 -0
- package/src/themes/intl/pt.css +10 -0
- package/src/themes/intl/zh.css +10 -0
- package/src/themes/intl.css +10 -0
- package/src/themes/monokai.css +1 -1
- package/src/themes/vaporwave.css +1 -1
- package/src/ts/extensions.ts +3 -36
- package/src/ts/perspective-viewer.ts +1 -1
- package/src/ts/plugin.ts +4 -1
- package/src/{rust/utils/tests/request_animation_frame.rs → ts/select-detail.ts} +32 -26
- package/src/ts/ts-rs/DerivedTableConfig.ts +22 -0
- package/src/ts/ts-rs/ExportMethod.ts +1 -1
- package/src/ts/ts-rs/PanelViewerConfig.ts +7 -6
- package/src/ts/ts-rs/RestoreOptions.ts +3 -7
- package/src/ts/ts-rs/TableRef.ts +9 -0
- package/src/ts/ts-rs/ViewerConfig.ts +7 -6
- package/src/ts/ts-rs/ViewerConfigUpdate.ts +7 -5
- package/src/ts/ts-rs/WorkspaceConfig.ts +7 -1
- package/src/ts/ts-rs/WorkspaceConfigUpdate.ts +7 -0
- package/dist/esm/perspective-viewer.inline.d.ts +0 -3
- package/dist/esm/perspective-viewer.inline.js +0 -21
- package/dist/esm/perspective-viewer.inline.js.map +0 -7
- package/src/rust/tasks/restore_and_render.rs +0 -107
- package/src/rust/utils/browser/tests/debounce.rs +0 -163
- package/src/rust/utils/tests/pubsub.rs +0 -95
- /package/dist/wasm/snippets/{perspective-viewer-ea71a3990cad35d7 → perspective-viewer-d0d525977a1acba2}/inline0.js +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-ea71a3990cad35d7 → perspective-viewer-d0d525977a1acba2}/inline1.js +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-ea71a3990cad35d7 → perspective-viewer-d0d525977a1acba2}/inline2.js +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-ea71a3990cad35d7 → perspective-viewer-d0d525977a1acba2}/inline3.js +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-ea71a3990cad35d7 → perspective-viewer-d0d525977a1acba2}/inline4.js +0 -0
- /package/dist/wasm/snippets/{perspective-viewer-ea71a3990cad35d7 → perspective-viewer-d0d525977a1acba2}/inline5.js +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function r(t){return t&&!("format"in t)?t:void 0}var s={float:{style:"decimal",minimumFractionDigits:2,maximumFractionDigits:2}},m={dateStyle:"short",timeStyle:"medium"},u={dateStyle:"short"};function d(t,n){let e={};for(let[o,a]of Object.entries(n??{}))a!=null&&(e[o]=a);let i={...t};return("minimumFractionDigits"in e||"maximumFractionDigits"in e)&&(delete i.minimumFractionDigits,delete i.maximumFractionDigits),("minimumSignificantDigits"in e||"maximumSignificantDigits"in e)&&(delete i.minimumSignificantDigits,delete i.maximumSignificantDigits),Object.assign(i,e)}function l(t,n,e){let i=e??s[t]??{},o=n?d(i,n):i;return new Intl.NumberFormat(navigator.languages,o)}function F(t,n){if(t=t??n,!t||!("format"in t)){let i=r(t),o={timeZone:i?.timeZone??void 0,dateStyle:i?.dateStyle==="disabled"?void 0:i?.dateStyle??m.dateStyle,timeStyle:i?.timeStyle==="disabled"?void 0:i?.timeStyle??m.timeStyle};return new Intl.DateTimeFormat(navigator.languages,o)}let e={timeZone:t.timeZone??void 0,hour12:t.hour12??!0,fractionalSecondDigits:t.fractionalSecondDigits};return t.year!=="disabled"&&(e.year=t.year??"2-digit"),t.month!=="disabled"&&(e.month=t.month??"numeric"),t.day!=="disabled"&&(e.day=t.day??"numeric"),t.weekday&&t.weekday!=="disabled"&&(e.weekday=t.weekday),t.hour!=="disabled"&&(e.hour=t.hour??"numeric"),t.minute!=="disabled"&&(e.minute=t.minute??"numeric"),t.second!=="disabled"&&(e.second=t.second??"numeric"),new Intl.DateTimeFormat(navigator.languages,e)}function p(t,n){let e=r(t??n),i={timeZone:"utc",dateStyle:e?.dateStyle==="disabled"?void 0:e?.dateStyle??u.dateStyle};return new Intl.DateTimeFormat(navigator.languages,i)}function D(t){return t.split("|").at(-1)??t}export{p as createDateFormatter,F as createDatetimeFormatter,l as createNumberFormatter,D as sourceColumn};
|
|
2
|
+
//# sourceMappingURL=column-format.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/ts/column-format.ts"],
|
|
4
|
+
"sourcesContent": ["// \u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n// \u2503 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588 \u2588 \u2588 \u2588 \u2588\u2584 \u2580\u2588\u2588\u2588 \u2588 \u2503\n// \u2503 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2584\u2584\u2584\u2584\u2584 \u2584\u2584\u2584\u2584\u2584\u2588 \u2580\u2580\u2580\u2580\u2580\u2588\u2580\u2580\u2580\u2580\u2580 \u2588 \u2580\u2580\u2580\u2580\u2580\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2584 \u2580\u2588 \u2588 \u2580\u2580\u2580\u2580\u2580 \u2503\n// \u2503 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2580\u2580\u2580\u2580 \u2588\u2580\u2588\u2588\u2580\u2580 \u2584\u2584\u2584\u2584\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2584\u2584\u2584\u2584\u2584\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2584\u2584\u2584\u2584\u2584 \u2503\n// \u2503 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2580\u2588\u2584 \u2588 \u2588\u2588\u2588\u2588\u2588\u2588 \u2588 \u2588\u2588\u2588\u258C\u2590\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2584 \u2588 \u2503\n// \u2523\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u252B\n// \u2503 Copyright (c) 2017, the Perspective Authors. \u2503\n// \u2503 \u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C\u254C \u2503\n// \u2503 This file is part of the Perspective library, distributed under the terms \u2503\n// \u2503 of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). \u2503\n// \u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u251B\n\n/**\n * Cross-package helpers for per-column value formatting. Used by both\n * `viewer-datagrid` (cell formatting) and `viewer-charts` (axis ticks,\n * tooltips, legends) so a column's `number_format` / `date_format`\n * configuration produces identical output across plugins.\n *\n * The format configs mirror the `Intl.NumberFormatOptions` /\n * `Intl.DateTimeFormatOptions` shapes one-for-one \u2014 they're written\n * straight into the respective constructors. The `date_format.format`\n * discriminator (\"simple\" | \"custom\") selects between two derivation\n * paths: simple uses `dateStyle` / `timeStyle`, custom uses the\n * per-field overrides (year / month / day / ...).\n */\n\nimport type { CustomNumberFormatConfig } from \"./ts-rs/CustomNumberFormatConfig.d.ts\";\nimport type { NumberFormatStyle } from \"./ts-rs/NumberFormatStyle.d.ts\";\nimport type { Notation } from \"./ts-rs/Notation.d.ts\";\nimport type { DatetimeFormatType } from \"./ts-rs/DatetimeFormatType.d.ts\";\nimport type { SimpleDatetimeStyleConfig } from \"./ts-rs/SimpleDatetimeStyleConfig.d.ts\";\n\n/**\n * A numeric column's `number_format` (`columns_config` value), exactly as\n * the Style tab's editor WRITES it \u2014 the ts-rs projection of the Rust\n * `CustomNumberFormatConfig`, re-composed with its serde-flattened\n * `style` and `notation` families (ts-rs cannot flatten `Option<enum>`,\n * so the Rust type `#[ts(skip)]`s them and they export separately).\n */\nexport type NumberFormatConfig = CustomNumberFormatConfig &\n Partial<NumberFormatStyle> &\n Partial<Notation>;\n\n/**\n * A datetime column's `date_format` (`columns_config` value) \u2014 the Rust\n * `DatetimeFormatType` union: a `Simple` preset (`dateStyle` /\n * `timeStyle`), or per-part custom fields discriminated by\n * `format: \"custom\"`.\n */\nexport type DateFormatConfig = DatetimeFormatType;\n\n/** Narrow a [`DateFormatConfig`] to its `Simple` arm, if it is one. */\nfunction simple_config(\n cfg?: DateFormatConfig,\n): SimpleDatetimeStyleConfig | undefined {\n return cfg && !(\"format\" in cfg) ? cfg : undefined;\n}\n\n/**\n * Default `Intl.NumberFormatOptions` applied when a numeric column has no\n * `number_format` configured. Float columns get two fractional digits to\n * match the legacy datagrid behavior; integer columns get an empty\n * options bag (locale-default integer rendering).\n */\nconst NUMERIC_LEGACY_DEFAULTS: Record<string, Intl.NumberFormatOptions> = {\n float: {\n style: \"decimal\",\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n },\n};\n\n/**\n * Default `Intl.DateTimeFormatOptions` applied when a datetime column has\n * no `date_format` configured.\n */\nconst DATETIME_LEGACY_DEFAULTS: Intl.DateTimeFormatOptions = {\n dateStyle: \"short\",\n timeStyle: \"medium\",\n};\n\nconst DATE_LEGACY_DEFAULTS: Intl.DateTimeFormatOptions = {\n dateStyle: \"short\",\n};\n\nfunction mergeNumberOptions(\n base: Intl.NumberFormatOptions,\n cfg?: NumberFormatConfig,\n): Intl.NumberFormatOptions {\n const explicit: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(cfg ?? {})) {\n if (v !== undefined && v !== null) {\n explicit[k] = v;\n }\n }\n\n const merged: Record<string, unknown> = { ...base };\n if (\n \"minimumFractionDigits\" in explicit ||\n \"maximumFractionDigits\" in explicit\n ) {\n delete merged.minimumFractionDigits;\n delete merged.maximumFractionDigits;\n }\n\n if (\n \"minimumSignificantDigits\" in explicit ||\n \"maximumSignificantDigits\" in explicit\n ) {\n delete merged.minimumSignificantDigits;\n delete merged.maximumSignificantDigits;\n }\n\n return Object.assign(merged, explicit) as Intl.NumberFormatOptions;\n}\n\n/**\n * `defaults` is the calling plugin's declared default format, filling in\n * the fields `cfg` leaves unset.\n */\nexport function createNumberFormatter(\n type: string,\n cfg?: NumberFormatConfig,\n defaults?: NumberFormatConfig,\n): Intl.NumberFormat {\n // ts-rs renders serde-absent keys as `T | null`; the wire never\n // carries an explicit `null` (`skip_serializing_if`), and\n // `Intl.NumberFormat` treats both absent and `undefined` the same, so\n // the cast is presentation-only.\n const base = ((defaults as Intl.NumberFormatOptions | undefined) ??\n NUMERIC_LEGACY_DEFAULTS[type] ??\n {}) as Intl.NumberFormatOptions;\n\n const opts = cfg ? mergeNumberOptions(base, cfg) : base;\n return new Intl.NumberFormat(navigator.languages as string[], opts);\n}\n\n/**\n * `defaults` is the calling plugin's declared default `date_format`,\n * applied only when `cfg` is wholly absent.\n */\nexport function createDatetimeFormatter(\n cfg?: DateFormatConfig,\n defaults?: DateFormatConfig,\n): Intl.DateTimeFormat {\n cfg = cfg ?? defaults;\n if (!cfg || !(\"format\" in cfg)) {\n const preset = simple_config(cfg);\n const opts: Intl.DateTimeFormatOptions = {\n timeZone: preset?.timeZone ?? undefined,\n dateStyle:\n preset?.dateStyle === \"disabled\"\n ? undefined\n : (preset?.dateStyle ?? DATETIME_LEGACY_DEFAULTS.dateStyle),\n timeStyle:\n preset?.timeStyle === \"disabled\"\n ? undefined\n : (preset?.timeStyle ?? DATETIME_LEGACY_DEFAULTS.timeStyle),\n };\n\n return new Intl.DateTimeFormat(navigator.languages as string[], opts);\n }\n\n // Per-part fields are the shared `CustomDatetimeFormat` enum; the\n // editor only writes each part's `Intl`-valid subset, so the\n // narrowing casts below are presentation-only.\n const opts: Intl.DateTimeFormatOptions = {\n timeZone: cfg.timeZone ?? undefined,\n hour12: cfg.hour12 ?? true,\n fractionalSecondDigits: cfg.fractionalSecondDigits as\n | 1\n | 2\n | 3\n | undefined,\n };\n if (cfg.year !== \"disabled\") {\n opts.year = (cfg.year ??\n \"2-digit\") as Intl.DateTimeFormatOptions[\"year\"];\n }\n if (cfg.month !== \"disabled\") {\n opts.month = (cfg.month ??\n \"numeric\") as Intl.DateTimeFormatOptions[\"month\"];\n }\n if (cfg.day !== \"disabled\") {\n opts.day = (cfg.day ?? \"numeric\") as Intl.DateTimeFormatOptions[\"day\"];\n }\n if (cfg.weekday && cfg.weekday !== \"disabled\") {\n opts.weekday = cfg.weekday as Intl.DateTimeFormatOptions[\"weekday\"];\n }\n if (cfg.hour !== \"disabled\") {\n opts.hour = (cfg.hour ??\n \"numeric\") as Intl.DateTimeFormatOptions[\"hour\"];\n }\n if (cfg.minute !== \"disabled\") {\n opts.minute = (cfg.minute ??\n \"numeric\") as Intl.DateTimeFormatOptions[\"minute\"];\n }\n if (cfg.second !== \"disabled\") {\n opts.second = (cfg.second ??\n \"numeric\") as Intl.DateTimeFormatOptions[\"second\"];\n }\n return new Intl.DateTimeFormat(navigator.languages as string[], opts);\n}\n\n/**\n * `defaults` follows the same contract as\n * [`createDatetimeFormatter`]: the plugin's declared default\n * `date_format`, applied only when `cfg` is wholly absent.\n */\nexport function createDateFormatter(\n cfg?: DateFormatConfig,\n defaults?: DateFormatConfig,\n): Intl.DateTimeFormat {\n const preset = simple_config(cfg ?? defaults);\n const opts: Intl.DateTimeFormatOptions = {\n timeZone: \"utc\",\n dateStyle:\n preset?.dateStyle === \"disabled\"\n ? undefined\n : (preset?.dateStyle ?? DATE_LEGACY_DEFAULTS.dateStyle),\n };\n return new Intl.DateTimeFormat(navigator.languages as string[], opts);\n}\n\n/**\n * Recover the source column name from a synthetic split-by path. Split\n * pivoting produces paths of the form `<split_val_1>|...|<source_col>`;\n * per-column config (formatters, aggregate styling, \u2026) is always keyed\n * on the trailing source column.\n */\nexport function sourceColumn(path: string): string {\n return path.split(\"|\").at(-1) ?? path;\n}\n"],
|
|
5
|
+
"mappings": "AAoDA,SAASA,EACLC,EACqC,CACrC,OAAOA,GAAO,EAAE,WAAYA,GAAOA,EAAM,MAC7C,CAQA,IAAMC,EAAoE,CACtE,MAAO,CACH,MAAO,UACP,sBAAuB,EACvB,sBAAuB,CAC3B,CACJ,EAMMC,EAAuD,CACzD,UAAW,QACX,UAAW,QACf,EAEMC,EAAmD,CACrD,UAAW,OACf,EAEA,SAASC,EACLC,EACAL,EACwB,CACxB,IAAMM,EAAoC,CAAC,EAC3C,OAAW,CAACC,EAAGC,CAAC,IAAK,OAAO,QAAQR,GAAO,CAAC,CAAC,EAClBQ,GAAM,OACzBF,EAASC,CAAC,EAAIC,GAItB,IAAMC,EAAkC,CAAE,GAAGJ,CAAK,EAClD,OACI,0BAA2BC,GAC3B,0BAA2BA,KAE3B,OAAOG,EAAO,sBACd,OAAOA,EAAO,wBAId,6BAA8BH,GAC9B,6BAA8BA,KAE9B,OAAOG,EAAO,yBACd,OAAOA,EAAO,0BAGX,OAAO,OAAOA,EAAQH,CAAQ,CACzC,CAMO,SAASI,EACZC,EACAX,EACAY,EACiB,CAKjB,IAAMP,EAASO,GACXX,EAAwBU,CAAI,GAC5B,CAAC,EAECE,EAAOb,EAAMI,EAAmBC,EAAML,CAAG,EAAIK,EACnD,OAAO,IAAI,KAAK,aAAa,UAAU,UAAuBQ,CAAI,CACtE,CAMO,SAASC,EACZd,EACAY,EACmB,CAEnB,GADAZ,EAAMA,GAAOY,EACT,CAACZ,GAAO,EAAE,WAAYA,GAAM,CAC5B,IAAMe,EAAShB,EAAcC,CAAG,EAC1Ba,EAAmC,CACrC,SAAUE,GAAQ,UAAY,OAC9B,UACIA,GAAQ,YAAc,WAChB,OACCA,GAAQ,WAAab,EAAyB,UACzD,UACIa,GAAQ,YAAc,WAChB,OACCA,GAAQ,WAAab,EAAyB,SAC7D,EAEA,OAAO,IAAI,KAAK,eAAe,UAAU,UAAuBW,CAAI,CACxE,CAKA,IAAMA,EAAmC,CACrC,SAAUb,EAAI,UAAY,OAC1B,OAAQA,EAAI,QAAU,GACtB,uBAAwBA,EAAI,sBAKhC,EACA,OAAIA,EAAI,OAAS,aACba,EAAK,KAAQb,EAAI,MACb,WAEJA,EAAI,QAAU,aACda,EAAK,MAASb,EAAI,OACd,WAEJA,EAAI,MAAQ,aACZa,EAAK,IAAOb,EAAI,KAAO,WAEvBA,EAAI,SAAWA,EAAI,UAAY,aAC/Ba,EAAK,QAAUb,EAAI,SAEnBA,EAAI,OAAS,aACba,EAAK,KAAQb,EAAI,MACb,WAEJA,EAAI,SAAW,aACfa,EAAK,OAAUb,EAAI,QACf,WAEJA,EAAI,SAAW,aACfa,EAAK,OAAUb,EAAI,QACf,WAED,IAAI,KAAK,eAAe,UAAU,UAAuBa,CAAI,CACxE,CAOO,SAASG,EACZhB,EACAY,EACmB,CACnB,IAAMG,EAAShB,EAAcC,GAAOY,CAAQ,EACtCC,EAAmC,CACrC,SAAU,MACV,UACIE,GAAQ,YAAc,WAChB,OACCA,GAAQ,WAAaZ,EAAqB,SACzD,EACA,OAAO,IAAI,KAAK,eAAe,UAAU,UAAuBU,CAAI,CACxE,CAQO,SAASI,EAAaC,EAAsB,CAC/C,OAAOA,EAAK,MAAM,GAAG,EAAE,GAAG,EAAE,GAAKA,CACrC",
|
|
6
|
+
"names": ["simple_config", "cfg", "NUMERIC_LEGACY_DEFAULTS", "DATETIME_LEGACY_DEFAULTS", "DATE_LEGACY_DEFAULTS", "mergeNumberOptions", "base", "explicit", "k", "v", "merged", "createNumberFormatter", "type", "defaults", "opts", "createDatetimeFormatter", "preset", "createDateFormatter", "sourceColumn", "path"]
|
|
7
|
+
}
|
package/dist/esm/extensions.d.ts
CHANGED
|
@@ -2,18 +2,9 @@ import type { HTMLPerspectiveViewerPluginElement } from "./plugin";
|
|
|
2
2
|
import type { PerspectiveViewerElement } from "../../dist/wasm/perspective-viewer.js";
|
|
3
3
|
import type React from "react";
|
|
4
4
|
import type { ViewerConfigUpdate } from "./ts-rs/ViewerConfigUpdate.js";
|
|
5
|
-
import type { ViewWindow,
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
row: Record<string, unknown>;
|
|
9
|
-
column_names?: string[];
|
|
10
|
-
removeConfigs: ViewConfigUpdate[];
|
|
11
|
-
insertConfigs: ViewConfigUpdate[];
|
|
12
|
-
panel?: string;
|
|
13
|
-
constructor(selected: boolean, row: Record<string, unknown>, column_names: string[], removeConfigs: ViewConfigUpdate[], insertConfigs: ViewConfigUpdate[], panel?: string);
|
|
14
|
-
get removeFilters(): Filter[];
|
|
15
|
-
get insertFilters(): Filter[];
|
|
16
|
-
}
|
|
5
|
+
import type { ViewWindow, Filter } from "@perspective-dev/client";
|
|
6
|
+
import type { PerspectiveSelectDetail } from "./select-detail.ts";
|
|
7
|
+
export { PerspectiveSelectDetail } from "./select-detail.ts";
|
|
17
8
|
export type HTMLPerspectiveViewerElement = PerspectiveViewerElement & PerspectiveViewerElementExt & HTMLElement;
|
|
18
9
|
export type PerspectiveClickEventDetail = {
|
|
19
10
|
config: ViewerConfigUpdate;
|
|
@@ -139,4 +130,3 @@ export interface PerspectiveViewerElementExt {
|
|
|
139
130
|
removeEventListener(name: "perspective-table-delete", cb: any): void;
|
|
140
131
|
removeEventListener(name: "perspective-table-delete-before", cb: any): void;
|
|
141
132
|
}
|
|
142
|
-
export {};
|
|
@@ -26,7 +26,7 @@ export type { AgentProviderPreset } from "./providers";
|
|
|
26
26
|
export { createNumberFormatter, createDatetimeFormatter, createDateFormatter, sourceColumn, } from "./column-format";
|
|
27
27
|
export type { NumberFormatConfig, DateFormatConfig } from "./column-format";
|
|
28
28
|
export type * from "./extensions.ts";
|
|
29
|
-
export { PerspectiveSelectDetail } from "./
|
|
29
|
+
export { PerspectiveSelectDetail } from "./select-detail.ts";
|
|
30
30
|
export type * from "./ts-rs/ViewerConfigUpdate.d.ts";
|
|
31
31
|
export type * from "./ts-rs/ViewerConfig.d.ts";
|
|
32
32
|
export type * from "./ts-rs/WorkspaceConfigUpdate.d.ts";
|