@hashicorp/design-system-components 4.15.0 → 4.17.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 +4 -8
- package/declarations/components/hds/advanced-table/expandable-tr-group.d.ts +45 -0
- package/declarations/components/hds/advanced-table/expandable-tr-group.d.ts.map +1 -0
- package/declarations/components/hds/advanced-table/index.d.ts +83 -0
- package/declarations/components/hds/advanced-table/index.d.ts.map +1 -0
- package/declarations/components/hds/advanced-table/td.d.ts +34 -0
- package/declarations/components/hds/advanced-table/td.d.ts.map +1 -0
- package/declarations/components/hds/advanced-table/th-button-expand.d.ts +22 -0
- package/declarations/components/hds/advanced-table/th-button-expand.d.ts.map +1 -0
- package/declarations/components/hds/advanced-table/th-button-sort.d.ts +23 -0
- package/declarations/components/hds/advanced-table/th-button-sort.d.ts.map +1 -0
- package/declarations/components/hds/advanced-table/th-button-tooltip.d.ts +18 -0
- package/declarations/components/hds/advanced-table/th-button-tooltip.d.ts.map +1 -0
- package/declarations/components/hds/advanced-table/th-selectable.d.ts +36 -0
- package/declarations/components/hds/advanced-table/th-selectable.d.ts.map +1 -0
- package/declarations/components/hds/advanced-table/th-sort.d.ts +38 -0
- package/declarations/components/hds/advanced-table/th-sort.d.ts.map +1 -0
- package/declarations/components/hds/advanced-table/th.d.ts +47 -0
- package/declarations/components/hds/advanced-table/th.d.ts.map +1 -0
- package/declarations/components/hds/advanced-table/tr.d.ts +44 -0
- package/declarations/components/hds/advanced-table/tr.d.ts.map +1 -0
- package/declarations/components/hds/advanced-table/types.d.ts +85 -0
- package/declarations/components/hds/advanced-table/types.d.ts.map +1 -0
- package/declarations/components/hds/alert/index.d.ts +2 -1
- package/declarations/components/hds/alert/index.d.ts.map +1 -1
- package/declarations/components/hds/app-footer/status-link.d.ts +3 -2
- package/declarations/components/hds/app-footer/status-link.d.ts.map +1 -1
- package/declarations/components/hds/app-header/index.d.ts +2 -1
- package/declarations/components/hds/app-header/index.d.ts.map +1 -1
- package/declarations/components/hds/app-side-nav/index.d.ts +2 -1
- package/declarations/components/hds/app-side-nav/index.d.ts.map +1 -1
- package/declarations/components/hds/app-side-nav/portal/target.d.ts.map +1 -1
- package/declarations/components/hds/breadcrumb/item.d.ts +1 -1
- package/declarations/components/hds/breadcrumb/item.d.ts.map +1 -1
- package/declarations/components/hds/code-block/copy-button.d.ts +5 -2
- package/declarations/components/hds/code-block/copy-button.d.ts.map +1 -1
- package/declarations/components/hds/code-block/index.d.ts +3 -0
- package/declarations/components/hds/code-block/index.d.ts.map +1 -1
- package/declarations/components/hds/code-editor/description.d.ts +22 -0
- package/declarations/components/hds/code-editor/description.d.ts.map +1 -0
- package/declarations/components/hds/code-editor/full-screen-button.d.ts +18 -0
- package/declarations/components/hds/code-editor/full-screen-button.d.ts.map +1 -0
- package/declarations/components/hds/code-editor/generic.d.ts +13 -0
- package/declarations/components/hds/code-editor/generic.d.ts.map +1 -0
- package/declarations/components/hds/code-editor/index.d.ts +54 -0
- package/declarations/components/hds/code-editor/index.d.ts.map +1 -0
- package/declarations/components/hds/code-editor/title.d.ts +24 -0
- package/declarations/components/hds/code-editor/title.d.ts.map +1 -0
- package/declarations/components/hds/dropdown/list-item/interactive.d.ts +2 -1
- package/declarations/components/hds/dropdown/list-item/interactive.d.ts.map +1 -1
- package/declarations/components/hds/dropdown/toggle/icon.d.ts +2 -1
- package/declarations/components/hds/dropdown/toggle/icon.d.ts.map +1 -1
- package/declarations/components/hds/flyout/body.d.ts +2 -1
- package/declarations/components/hds/flyout/body.d.ts.map +1 -1
- package/declarations/components/hds/flyout/description.d.ts +2 -1
- package/declarations/components/hds/flyout/description.d.ts.map +1 -1
- package/declarations/components/hds/flyout/footer.d.ts +2 -1
- package/declarations/components/hds/flyout/footer.d.ts.map +1 -1
- package/declarations/components/hds/flyout/header.d.ts +2 -1
- package/declarations/components/hds/flyout/header.d.ts.map +1 -1
- package/declarations/components/hds/form/masked-input/base.d.ts +5 -2
- package/declarations/components/hds/form/masked-input/base.d.ts.map +1 -1
- package/declarations/components/hds/form/super-select/multiple/base.d.ts +1 -1
- package/declarations/components/hds/form/super-select/multiple/base.d.ts.map +1 -1
- package/declarations/components/hds/form/super-select/single/base.d.ts +1 -1
- package/declarations/components/hds/form/super-select/single/base.d.ts.map +1 -1
- package/declarations/components/hds/form/text-input/field.d.ts +3 -2
- package/declarations/components/hds/form/text-input/field.d.ts.map +1 -1
- package/declarations/components/hds/icon/index.d.ts +2 -1
- package/declarations/components/hds/icon/index.d.ts.map +1 -1
- package/declarations/components/hds/interactive/index.d.ts +1 -1
- package/declarations/components/hds/interactive/index.d.ts.map +1 -1
- package/declarations/components/hds/link/inline.d.ts +2 -1
- package/declarations/components/hds/link/inline.d.ts.map +1 -1
- package/declarations/components/hds/link/standalone.d.ts +2 -1
- package/declarations/components/hds/link/standalone.d.ts.map +1 -1
- package/declarations/components/hds/menu-primitive/index.d.ts +2 -1
- package/declarations/components/hds/menu-primitive/index.d.ts.map +1 -1
- package/declarations/components/hds/modal/body.d.ts +2 -1
- package/declarations/components/hds/modal/body.d.ts.map +1 -1
- package/declarations/components/hds/modal/footer.d.ts +2 -1
- package/declarations/components/hds/modal/footer.d.ts.map +1 -1
- package/declarations/components/hds/modal/header.d.ts +2 -1
- package/declarations/components/hds/modal/header.d.ts.map +1 -1
- package/declarations/components/hds/pagination/compact/index.d.ts +2 -1
- package/declarations/components/hds/pagination/compact/index.d.ts.map +1 -1
- package/declarations/components/hds/pagination/numbered/index.d.ts +3 -2
- package/declarations/components/hds/pagination/numbered/index.d.ts.map +1 -1
- package/declarations/components/hds/popover-primitive/index.d.ts +2 -1
- package/declarations/components/hds/popover-primitive/index.d.ts.map +1 -1
- package/declarations/components/hds/rich-tooltip/toggle.d.ts.map +1 -1
- package/declarations/components/hds/side-nav/header/icon-button.d.ts +2 -1
- package/declarations/components/hds/side-nav/header/icon-button.d.ts.map +1 -1
- package/declarations/components/hds/side-nav/index.d.ts +2 -1
- package/declarations/components/hds/side-nav/index.d.ts.map +1 -1
- package/declarations/components/hds/side-nav/portal/target.d.ts.map +1 -1
- package/declarations/components/hds/stepper/task/indicator.d.ts +1 -1
- package/declarations/components/hds/stepper/task/indicator.d.ts.map +1 -1
- package/declarations/components/hds/table/index.d.ts +2 -1
- package/declarations/components/hds/table/index.d.ts.map +1 -1
- package/declarations/components/hds/table/th-selectable.d.ts +3 -3
- package/declarations/components/hds/table/th-selectable.d.ts.map +1 -1
- package/declarations/components/hds/tabs/index.d.ts +2 -1
- package/declarations/components/hds/tabs/index.d.ts.map +1 -1
- package/declarations/components/hds/tabs/tab.d.ts +7 -1
- package/declarations/components/hds/tabs/tab.d.ts.map +1 -1
- package/declarations/components/hds/tag/index.d.ts +16 -0
- package/declarations/components/hds/tag/index.d.ts.map +1 -1
- package/declarations/components/hds/tag/types.d.ts +15 -0
- package/declarations/components/hds/tag/types.d.ts.map +1 -1
- package/declarations/components/hds/time/index.d.ts.map +1 -1
- package/declarations/components.d.ts +15 -0
- package/declarations/components.d.ts.map +1 -1
- package/declarations/helpers/hds-format-date.d.ts +16 -3
- package/declarations/helpers/hds-format-date.d.ts.map +1 -1
- package/declarations/helpers/hds-format-relative.d.ts +9 -3
- package/declarations/helpers/hds-format-relative.d.ts.map +1 -1
- package/declarations/helpers/hds-link-to-models.d.ts +7 -1
- package/declarations/helpers/hds-link-to-models.d.ts.map +1 -1
- package/declarations/helpers/hds-link-to-query.d.ts +7 -1
- package/declarations/helpers/hds-link-to-query.d.ts.map +1 -1
- package/declarations/instance-initializers/load-sprite.d.ts.map +1 -1
- package/declarations/modifiers/hds-advanced-table-cell/dom-management.d.ts +10 -0
- package/declarations/modifiers/hds-advanced-table-cell/dom-management.d.ts.map +1 -0
- package/declarations/modifiers/hds-advanced-table-cell/keyboard-navigation.d.ts +6 -0
- package/declarations/modifiers/hds-advanced-table-cell/keyboard-navigation.d.ts.map +1 -0
- package/declarations/modifiers/hds-advanced-table-cell.d.ts +26 -0
- package/declarations/modifiers/hds-advanced-table-cell.d.ts.map +1 -0
- package/declarations/modifiers/hds-clipboard.d.ts.map +1 -1
- package/declarations/modifiers/hds-code-editor/highlight-styles/hds-dark-highlight-style.d.ts +8 -0
- package/declarations/modifiers/hds-code-editor/highlight-styles/hds-dark-highlight-style.d.ts.map +1 -0
- package/declarations/modifiers/hds-code-editor/languages/rego.d.ts +48 -0
- package/declarations/modifiers/hds-code-editor/languages/rego.d.ts.map +1 -0
- package/declarations/modifiers/hds-code-editor/languages/sentinel.d.ts +48 -0
- package/declarations/modifiers/hds-code-editor/languages/sentinel.d.ts.map +1 -0
- package/declarations/modifiers/hds-code-editor/palettes/hds-dark-palette.d.ts +21 -0
- package/declarations/modifiers/hds-code-editor/palettes/hds-dark-palette.d.ts.map +1 -0
- package/declarations/modifiers/hds-code-editor/themes/hds-dark-theme.d.ts +7 -0
- package/declarations/modifiers/hds-code-editor/themes/hds-dark-theme.d.ts.map +1 -0
- package/declarations/modifiers/hds-code-editor/types.d.ts +18 -0
- package/declarations/modifiers/hds-code-editor/types.d.ts.map +1 -0
- package/declarations/modifiers/hds-code-editor.d.ts +47 -0
- package/declarations/modifiers/hds-code-editor.d.ts.map +1 -0
- package/declarations/modifiers/hds-tooltip.d.ts +4 -2
- package/declarations/modifiers/hds-tooltip.d.ts.map +1 -1
- package/declarations/services/hds-time-types.d.ts +7 -7
- package/declarations/services/hds-time-types.d.ts.map +1 -1
- package/declarations/services/hds-time.d.ts +7 -3
- package/declarations/services/hds-time.d.ts.map +1 -1
- package/declarations/template-registry.d.ts +49 -0
- package/declarations/template-registry.d.ts.map +1 -1
- package/dist/README.md +4 -8
- package/dist/_app_/components/hds/advanced-table/expandable-tr-group.js +1 -0
- package/dist/_app_/components/hds/advanced-table/index.js +1 -0
- package/dist/_app_/components/hds/advanced-table/td.js +1 -0
- package/dist/_app_/components/hds/advanced-table/th-button-expand.js +1 -0
- package/dist/_app_/components/hds/advanced-table/th-button-sort.js +1 -0
- package/dist/_app_/components/hds/advanced-table/th-button-tooltip.js +1 -0
- package/dist/_app_/components/hds/advanced-table/th-selectable.js +1 -0
- package/dist/_app_/components/hds/advanced-table/th-sort.js +1 -0
- package/dist/_app_/components/hds/advanced-table/th.js +1 -0
- package/dist/_app_/components/hds/advanced-table/tr.js +1 -0
- package/dist/_app_/components/hds/code-editor/description.js +1 -0
- package/dist/_app_/components/hds/code-editor/full-screen-button.js +1 -0
- package/dist/_app_/components/hds/code-editor/generic.js +1 -0
- package/dist/_app_/components/hds/code-editor/index.js +1 -0
- package/dist/_app_/components/hds/code-editor/title.js +1 -0
- package/dist/_app_/modifiers/hds-advanced-table-cell/dom-management.js +1 -0
- package/dist/_app_/modifiers/hds-advanced-table-cell/keyboard-navigation.js +1 -0
- package/dist/_app_/modifiers/hds-advanced-table-cell.js +1 -0
- package/dist/_app_/modifiers/hds-code-editor/highlight-styles/hds-dark-highlight-style.js +1 -0
- package/dist/_app_/modifiers/hds-code-editor/languages/rego.js +1 -0
- package/dist/_app_/modifiers/hds-code-editor/languages/sentinel.js +1 -0
- package/dist/_app_/modifiers/hds-code-editor/palettes/hds-dark-palette.js +1 -0
- package/dist/_app_/modifiers/hds-code-editor/themes/hds-dark-theme.js +1 -0
- package/dist/_app_/modifiers/hds-code-editor/types.js +1 -0
- package/dist/_app_/modifiers/hds-code-editor.js +1 -0
- package/dist/components/hds/accordion/index.js.map +1 -1
- package/dist/components/hds/accordion/item/button.js +11 -4
- package/dist/components/hds/accordion/item/button.js.map +1 -1
- package/dist/components/hds/accordion/item/index.js +12 -11
- package/dist/components/hds/accordion/item/index.js.map +1 -1
- package/dist/components/hds/advanced-table/expandable-tr-group.js +74 -0
- package/dist/components/hds/advanced-table/expandable-tr-group.js.map +1 -0
- package/dist/components/hds/advanced-table/index.js +328 -0
- package/dist/components/hds/advanced-table/index.js.map +1 -0
- package/dist/components/hds/advanced-table/td.js +89 -0
- package/dist/components/hds/advanced-table/td.js.map +1 -0
- package/dist/components/hds/advanced-table/th-button-expand.js +53 -0
- package/dist/components/hds/advanced-table/th-button-expand.js.map +1 -0
- package/dist/components/hds/advanced-table/th-button-sort.js +58 -0
- package/dist/components/hds/advanced-table/th-button-sort.js.map +1 -0
- package/dist/components/hds/advanced-table/th-button-tooltip.js +29 -0
- package/dist/components/hds/advanced-table/th-button-tooltip.js.map +1 -0
- package/dist/components/hds/advanced-table/th-selectable.js +100 -0
- package/dist/components/hds/advanced-table/th-selectable.js.map +1 -0
- package/dist/components/hds/advanced-table/th-sort.js +88 -0
- package/dist/components/hds/advanced-table/th-sort.js.map +1 -0
- package/dist/components/hds/advanced-table/th.js +105 -0
- package/dist/components/hds/advanced-table/th.js.map +1 -0
- package/dist/components/hds/advanced-table/tr.js +39 -0
- package/dist/components/hds/advanced-table/tr.js.map +1 -0
- package/dist/components/hds/advanced-table/types.js +54 -0
- package/dist/components/hds/advanced-table/types.js.map +1 -0
- package/dist/components/hds/alert/description.js.map +1 -1
- package/dist/components/hds/alert/index.js +19 -16
- package/dist/components/hds/alert/index.js.map +1 -1
- package/dist/components/hds/alert/title.js.map +1 -1
- package/dist/components/hds/app-footer/copyright.js.map +1 -1
- package/dist/components/hds/app-footer/index.js.map +1 -1
- package/dist/components/hds/app-footer/item.js.map +1 -1
- package/dist/components/hds/app-footer/legal-links.js.map +1 -1
- package/dist/components/hds/app-footer/link.js.map +1 -1
- package/dist/components/hds/app-footer/status-link.js.map +1 -1
- package/dist/components/hds/app-frame/index.js.map +1 -1
- package/dist/components/hds/app-frame/parts/footer.js.map +1 -1
- package/dist/components/hds/app-frame/parts/header.js.map +1 -1
- package/dist/components/hds/app-frame/parts/main.js.map +1 -1
- package/dist/components/hds/app-frame/parts/modals.js.map +1 -1
- package/dist/components/hds/app-frame/parts/sidebar.js.map +1 -1
- package/dist/components/hds/app-header/home-link.js.map +1 -1
- package/dist/components/hds/app-header/index.js +42 -34
- package/dist/components/hds/app-header/index.js.map +1 -1
- package/dist/components/hds/app-header/menu-button.js +11 -4
- package/dist/components/hds/app-header/menu-button.js.map +1 -1
- package/dist/components/hds/app-side-nav/index.js +44 -31
- package/dist/components/hds/app-side-nav/index.js.map +1 -1
- package/dist/components/hds/app-side-nav/list/back-link.js.map +1 -1
- package/dist/components/hds/app-side-nav/list/index.js +15 -13
- package/dist/components/hds/app-side-nav/list/index.js.map +1 -1
- package/dist/components/hds/app-side-nav/list/item.js.map +1 -1
- package/dist/components/hds/app-side-nav/list/link.js.map +1 -1
- package/dist/components/hds/app-side-nav/list/title.js +13 -9
- package/dist/components/hds/app-side-nav/list/title.js.map +1 -1
- package/dist/components/hds/app-side-nav/portal/index.js.map +1 -1
- package/dist/components/hds/app-side-nav/portal/target.js +31 -28
- package/dist/components/hds/app-side-nav/portal/target.js.map +1 -1
- package/dist/components/hds/app-side-nav/toggle-button.js.map +1 -1
- package/dist/components/hds/application-state/body.js.map +1 -1
- package/dist/components/hds/application-state/footer.js.map +1 -1
- package/dist/components/hds/application-state/header.js.map +1 -1
- package/dist/components/hds/application-state/index.js.map +1 -1
- package/dist/components/hds/application-state/media.js.map +1 -1
- package/dist/components/hds/badge/index.js.map +1 -1
- package/dist/components/hds/badge-count/index.js.map +1 -1
- package/dist/components/hds/breadcrumb/index.js.map +1 -1
- package/dist/components/hds/breadcrumb/item.js +1 -1
- package/dist/components/hds/breadcrumb/item.js.map +1 -1
- package/dist/components/hds/breadcrumb/truncation.js.map +1 -1
- package/dist/components/hds/button/index.js.map +1 -1
- package/dist/components/hds/button-set/index.js.map +1 -1
- package/dist/components/hds/card/container.js.map +1 -1
- package/dist/components/hds/code-block/copy-button.js +9 -5
- package/dist/components/hds/code-block/copy-button.js.map +1 -1
- package/dist/components/hds/code-block/description.js.map +1 -1
- package/dist/components/hds/code-block/index.js +27 -21
- package/dist/components/hds/code-block/index.js.map +1 -1
- package/dist/components/hds/code-block/title.js.map +1 -1
- package/dist/components/hds/code-editor/description.js +18 -0
- package/dist/components/hds/code-editor/description.js.map +1 -0
- package/dist/components/hds/code-editor/full-screen-button.js +26 -0
- package/dist/components/hds/code-editor/full-screen-button.js.map +1 -0
- package/dist/components/hds/code-editor/generic.js +16 -0
- package/dist/components/hds/code-editor/generic.js.map +1 -0
- package/dist/components/hds/code-editor/index.js +135 -0
- package/dist/components/hds/code-editor/index.js.map +1 -0
- package/dist/components/hds/code-editor/title.js +21 -0
- package/dist/components/hds/code-editor/title.js.map +1 -0
- package/dist/components/hds/copy/button/index.js +23 -20
- package/dist/components/hds/copy/button/index.js.map +1 -1
- package/dist/components/hds/copy/snippet/index.js +23 -20
- package/dist/components/hds/copy/snippet/index.js.map +1 -1
- package/dist/components/hds/dialog-primitive/body.js.map +1 -1
- package/dist/components/hds/dialog-primitive/description.js.map +1 -1
- package/dist/components/hds/dialog-primitive/footer.js.map +1 -1
- package/dist/components/hds/dialog-primitive/header.js.map +1 -1
- package/dist/components/hds/dialog-primitive/overlay.js.map +1 -1
- package/dist/components/hds/dialog-primitive/wrapper.js.map +1 -1
- package/dist/components/hds/disclosure-primitive/index.js +27 -21
- package/dist/components/hds/disclosure-primitive/index.js.map +1 -1
- package/dist/components/hds/dismiss-button/index.js.map +1 -1
- package/dist/components/hds/dropdown/footer.js.map +1 -1
- package/dist/components/hds/dropdown/header.js.map +1 -1
- package/dist/components/hds/dropdown/index.js +12 -5
- package/dist/components/hds/dropdown/index.js.map +1 -1
- package/dist/components/hds/dropdown/list-item/checkbox.js.map +1 -1
- package/dist/components/hds/dropdown/list-item/checkmark.js.map +1 -1
- package/dist/components/hds/dropdown/list-item/copy-item.js.map +1 -1
- package/dist/components/hds/dropdown/list-item/description.js.map +1 -1
- package/dist/components/hds/dropdown/list-item/generic.js.map +1 -1
- package/dist/components/hds/dropdown/list-item/interactive.js.map +1 -1
- package/dist/components/hds/dropdown/list-item/radio.js.map +1 -1
- package/dist/components/hds/dropdown/list-item/separator.js.map +1 -1
- package/dist/components/hds/dropdown/list-item/title.js.map +1 -1
- package/dist/components/hds/dropdown/toggle/button.js +12 -10
- package/dist/components/hds/dropdown/toggle/button.js.map +1 -1
- package/dist/components/hds/dropdown/toggle/chevron.js.map +1 -1
- package/dist/components/hds/dropdown/toggle/icon.js +20 -12
- package/dist/components/hds/dropdown/toggle/icon.js.map +1 -1
- package/dist/components/hds/flyout/body.js +2 -1
- package/dist/components/hds/flyout/body.js.map +1 -1
- package/dist/components/hds/flyout/description.js +1 -0
- package/dist/components/hds/flyout/description.js.map +1 -1
- package/dist/components/hds/flyout/footer.js +2 -1
- package/dist/components/hds/flyout/footer.js.map +1 -1
- package/dist/components/hds/flyout/header.js +2 -1
- package/dist/components/hds/flyout/header.js.map +1 -1
- package/dist/components/hds/flyout/index.js +33 -18
- package/dist/components/hds/flyout/index.js.map +1 -1
- package/dist/components/hds/form/character-count/index.js.map +1 -1
- package/dist/components/hds/form/checkbox/base.js.map +1 -1
- package/dist/components/hds/form/checkbox/field.js.map +1 -1
- package/dist/components/hds/form/checkbox/group.js.map +1 -1
- package/dist/components/hds/form/error/index.js.map +1 -1
- package/dist/components/hds/form/error/message.js.map +1 -1
- package/dist/components/hds/form/field/index.js +15 -7
- package/dist/components/hds/form/field/index.js.map +1 -1
- package/dist/components/hds/form/fieldset/index.js +15 -7
- package/dist/components/hds/form/fieldset/index.js.map +1 -1
- package/dist/components/hds/form/file-input/base.js.map +1 -1
- package/dist/components/hds/form/file-input/field.js.map +1 -1
- package/dist/components/hds/form/helper-text/index.js.map +1 -1
- package/dist/components/hds/form/indicator/index.js.map +1 -1
- package/dist/components/hds/form/label/index.js.map +1 -1
- package/dist/components/hds/form/legend/index.js.map +1 -1
- package/dist/components/hds/form/masked-input/base.js +45 -15
- package/dist/components/hds/form/masked-input/base.js.map +1 -1
- package/dist/components/hds/form/masked-input/field.js.map +1 -1
- package/dist/components/hds/form/radio/base.js.map +1 -1
- package/dist/components/hds/form/radio/field.js.map +1 -1
- package/dist/components/hds/form/radio/group.js.map +1 -1
- package/dist/components/hds/form/radio-card/description.js.map +1 -1
- package/dist/components/hds/form/radio-card/group.js.map +1 -1
- package/dist/components/hds/form/radio-card/index.js.map +1 -1
- package/dist/components/hds/form/radio-card/label.js.map +1 -1
- package/dist/components/hds/form/select/base.js.map +1 -1
- package/dist/components/hds/form/select/field.js.map +1 -1
- package/dist/components/hds/form/super-select/after-options.js.map +1 -1
- package/dist/components/hds/form/super-select/multiple/base.js +39 -29
- package/dist/components/hds/form/super-select/multiple/base.js.map +1 -1
- package/dist/components/hds/form/super-select/multiple/field.js +1 -1
- package/dist/components/hds/form/super-select/multiple/field.js.map +1 -1
- package/dist/components/hds/form/super-select/option-group.js +11 -10
- package/dist/components/hds/form/super-select/option-group.js.map +1 -1
- package/dist/components/hds/form/super-select/placeholder.js.map +1 -1
- package/dist/components/hds/form/super-select/single/base.js +18 -13
- package/dist/components/hds/form/super-select/single/base.js.map +1 -1
- package/dist/components/hds/form/super-select/single/field.js +1 -1
- package/dist/components/hds/form/super-select/single/field.js.map +1 -1
- package/dist/components/hds/form/text-input/base.js.map +1 -1
- package/dist/components/hds/form/text-input/field.js +21 -18
- package/dist/components/hds/form/text-input/field.js.map +1 -1
- package/dist/components/hds/form/textarea/base.js.map +1 -1
- package/dist/components/hds/form/textarea/field.js.map +1 -1
- package/dist/components/hds/form/toggle/base.js.map +1 -1
- package/dist/components/hds/form/toggle/field.js.map +1 -1
- package/dist/components/hds/form/toggle/group.js.map +1 -1
- package/dist/components/hds/form/visibility-toggle/index.js.map +1 -1
- package/dist/components/hds/icon/index.js +7 -3
- package/dist/components/hds/icon/index.js.map +1 -1
- package/dist/components/hds/icon-tile/index.js.map +1 -1
- package/dist/components/hds/interactive/index.js +12 -5
- package/dist/components/hds/interactive/index.js.map +1 -1
- package/dist/components/hds/link/inline.js.map +1 -1
- package/dist/components/hds/link/standalone.js.map +1 -1
- package/dist/components/hds/menu-primitive/index.js +37 -24
- package/dist/components/hds/menu-primitive/index.js.map +1 -1
- package/dist/components/hds/modal/body.js +1 -0
- package/dist/components/hds/modal/body.js.map +1 -1
- package/dist/components/hds/modal/footer.js +2 -1
- package/dist/components/hds/modal/footer.js.map +1 -1
- package/dist/components/hds/modal/header.js +1 -0
- package/dist/components/hds/modal/header.js.map +1 -1
- package/dist/components/hds/modal/index.js +30 -16
- package/dist/components/hds/modal/index.js.map +1 -1
- package/dist/components/hds/page-header/actions.js.map +1 -1
- package/dist/components/hds/page-header/badges.js.map +1 -1
- package/dist/components/hds/page-header/description.js.map +1 -1
- package/dist/components/hds/page-header/index.js.map +1 -1
- package/dist/components/hds/page-header/subtitle.js.map +1 -1
- package/dist/components/hds/page-header/title.js.map +1 -1
- package/dist/components/hds/pagination/compact/index.js +31 -28
- package/dist/components/hds/pagination/compact/index.js.map +1 -1
- package/dist/components/hds/pagination/info/index.js.map +1 -1
- package/dist/components/hds/pagination/nav/arrow.js +10 -4
- package/dist/components/hds/pagination/nav/arrow.js.map +1 -1
- package/dist/components/hds/pagination/nav/ellipsis.js.map +1 -1
- package/dist/components/hds/pagination/nav/number.js +10 -4
- package/dist/components/hds/pagination/nav/number.js.map +1 -1
- package/dist/components/hds/pagination/numbered/index.js +44 -47
- package/dist/components/hds/pagination/numbered/index.js.map +1 -1
- package/dist/components/hds/pagination/size-selector/index.js +12 -8
- package/dist/components/hds/pagination/size-selector/index.js.map +1 -1
- package/dist/components/hds/popover-primitive/index.js +127 -96
- package/dist/components/hds/popover-primitive/index.js.map +1 -1
- package/dist/components/hds/reveal/index.js +26 -24
- package/dist/components/hds/reveal/index.js.map +1 -1
- package/dist/components/hds/reveal/toggle/button.js.map +1 -1
- package/dist/components/hds/rich-tooltip/bubble.js.map +1 -1
- package/dist/components/hds/rich-tooltip/index.js +8 -7
- package/dist/components/hds/rich-tooltip/index.js.map +1 -1
- package/dist/components/hds/rich-tooltip/toggle.js +1 -1
- package/dist/components/hds/rich-tooltip/toggle.js.map +1 -1
- package/dist/components/hds/segmented-group/index.js.map +1 -1
- package/dist/components/hds/separator/index.js.map +1 -1
- package/dist/components/hds/side-nav/base.js.map +1 -1
- package/dist/components/hds/side-nav/header/home-link.js.map +1 -1
- package/dist/components/hds/side-nav/header/icon-button.js +1 -0
- package/dist/components/hds/side-nav/header/icon-button.js.map +1 -1
- package/dist/components/hds/side-nav/header/index.js.map +1 -1
- package/dist/components/hds/side-nav/index.js +47 -34
- package/dist/components/hds/side-nav/index.js.map +1 -1
- package/dist/components/hds/side-nav/list/back-link.js.map +1 -1
- package/dist/components/hds/side-nav/list/index.js +15 -13
- package/dist/components/hds/side-nav/list/index.js.map +1 -1
- package/dist/components/hds/side-nav/list/item.js.map +1 -1
- package/dist/components/hds/side-nav/list/link.js.map +1 -1
- package/dist/components/hds/side-nav/list/title.js +13 -9
- package/dist/components/hds/side-nav/list/title.js.map +1 -1
- package/dist/components/hds/side-nav/portal/index.js.map +1 -1
- package/dist/components/hds/side-nav/portal/target.js +31 -28
- package/dist/components/hds/side-nav/portal/target.js.map +1 -1
- package/dist/components/hds/side-nav/toggle-button.js.map +1 -1
- package/dist/components/hds/stepper/step/indicator.js.map +1 -1
- package/dist/components/hds/stepper/task/indicator.js.map +1 -1
- package/dist/components/hds/table/index.js +54 -40
- package/dist/components/hds/table/index.js.map +1 -1
- package/dist/components/hds/table/td.js.map +1 -1
- package/dist/components/hds/table/th-button-sort.js +8 -7
- package/dist/components/hds/table/th-button-sort.js.map +1 -1
- package/dist/components/hds/table/th-button-tooltip.js +7 -6
- package/dist/components/hds/table/th-button-tooltip.js.map +1 -1
- package/dist/components/hds/table/th-selectable.js +26 -32
- package/dist/components/hds/table/th-selectable.js.map +1 -1
- package/dist/components/hds/table/th-sort.js +12 -10
- package/dist/components/hds/table/th-sort.js.map +1 -1
- package/dist/components/hds/table/th.js +12 -10
- package/dist/components/hds/table/th.js.map +1 -1
- package/dist/components/hds/table/tr.js.map +1 -1
- package/dist/components/hds/tabs/index.js +78 -55
- package/dist/components/hds/tabs/index.js.map +1 -1
- package/dist/components/hds/tabs/panel.js +21 -14
- package/dist/components/hds/tabs/panel.js.map +1 -1
- package/dist/components/hds/tabs/tab.js +38 -14
- package/dist/components/hds/tabs/tab.js.map +1 -1
- package/dist/components/hds/tag/index.js +43 -3
- package/dist/components/hds/tag/index.js.map +1 -1
- package/dist/components/hds/tag/types.js +16 -1
- package/dist/components/hds/tag/types.js.map +1 -1
- package/dist/components/hds/text/body.js.map +1 -1
- package/dist/components/hds/text/code.js.map +1 -1
- package/dist/components/hds/text/display.js.map +1 -1
- package/dist/components/hds/text/index.js.map +1 -1
- package/dist/components/hds/time/index.js +19 -14
- package/dist/components/hds/time/index.js.map +1 -1
- package/dist/components/hds/time/range.js +11 -12
- package/dist/components/hds/time/range.js.map +1 -1
- package/dist/components/hds/time/single.js.map +1 -1
- package/dist/components/hds/toast/index.js.map +1 -1
- package/dist/components/hds/tooltip-button/index.js.map +1 -1
- package/dist/components/hds/yield/index.js.map +1 -1
- package/dist/components.js +16 -1
- package/dist/components.js.map +1 -1
- package/dist/helpers/hds-format-date.js.map +1 -1
- package/dist/helpers/hds-format-relative.js.map +1 -1
- package/dist/instance-initializers/load-sprite.js +3 -1
- package/dist/instance-initializers/load-sprite.js.map +1 -1
- package/dist/modifiers/hds-advanced-table-cell/dom-management.js +51 -0
- package/dist/modifiers/hds-advanced-table-cell/dom-management.js.map +1 -0
- package/dist/modifiers/hds-advanced-table-cell/keyboard-navigation.js +105 -0
- package/dist/modifiers/hds-advanced-table-cell/keyboard-navigation.js.map +1 -0
- package/dist/modifiers/hds-advanced-table-cell.js +55 -0
- package/dist/modifiers/hds-advanced-table-cell.js.map +1 -0
- package/dist/modifiers/hds-clipboard.js +29 -35
- package/dist/modifiers/hds-clipboard.js.map +1 -1
- package/dist/modifiers/hds-code-editor/highlight-styles/hds-dark-highlight-style.js +80 -0
- package/dist/modifiers/hds-code-editor/highlight-styles/hds-dark-highlight-style.js.map +1 -0
- package/dist/modifiers/hds-code-editor/languages/rego.js +191 -0
- package/dist/modifiers/hds-code-editor/languages/rego.js.map +1 -0
- package/dist/modifiers/hds-code-editor/languages/sentinel.js +148 -0
- package/dist/modifiers/hds-code-editor/languages/sentinel.js.map +1 -0
- package/dist/modifiers/hds-code-editor/palettes/hds-dark-palette.js +24 -0
- package/dist/modifiers/hds-code-editor/palettes/hds-dark-palette.js.map +1 -0
- package/dist/modifiers/hds-code-editor/themes/hds-dark-theme.js +62 -0
- package/dist/modifiers/hds-code-editor/themes/hds-dark-theme.js.map +1 -0
- package/dist/modifiers/hds-code-editor/types.js +21 -0
- package/dist/modifiers/hds-code-editor/types.js.map +1 -0
- package/dist/modifiers/hds-code-editor.js +293 -0
- package/dist/modifiers/hds-code-editor.js.map +1 -0
- package/dist/modifiers/hds-tooltip.js +128 -108
- package/dist/modifiers/hds-tooltip.js.map +1 -1
- package/dist/services/hds-time.js +29 -23
- package/dist/services/hds-time.js.map +1 -1
- package/dist/styles/@hashicorp/design-system-components.css +560 -65
- package/dist/styles/@hashicorp/design-system-components.scss +2 -0
- package/dist/styles/@hashicorp/design-system-power-select-overrides.scss +3 -3
- package/dist/styles/components/accordion.scss +1 -1
- package/dist/styles/components/advanced-table.scss +353 -0
- package/dist/styles/components/alert.scss +2 -2
- package/dist/styles/components/app-header.scss +1 -1
- package/dist/styles/components/badge-count.scss +1 -1
- package/dist/styles/components/badge.scss +12 -2
- package/dist/styles/components/breadcrumb.scss +2 -2
- package/dist/styles/components/card/container.scss +1 -1
- package/dist/styles/components/code-block/index.scss +1 -1
- package/dist/styles/components/code-editor/index.scss +113 -0
- package/dist/styles/components/code-editor/theme.scss +20 -0
- package/dist/styles/components/copy/snippet.scss +1 -1
- package/dist/styles/components/dropdown.scss +4 -3
- package/dist/styles/components/form/select.scss +1 -1
- package/dist/styles/components/icon-tile.scss +1 -1
- package/dist/styles/components/link/standalone.scss +1 -1
- package/dist/styles/components/modal.scss +1 -1
- package/dist/styles/components/rich-tooltip.scss +4 -2
- package/dist/styles/components/side-nav/a11y-refocus.scss +1 -1
- package/dist/styles/components/table.scss +10 -33
- package/dist/styles/components/tag.scss +28 -0
- package/dist/styles/components/time.scss +7 -0
- package/dist/styles/components/tooltip.scss +49 -0
- package/dist/styles/mixins/_button.scss +3 -3
- package/dist/utils/hds-aria-described-by.js +14 -17
- package/dist/utils/hds-aria-described-by.js.map +1 -1
- package/package.json +101 -70
- package/dist/_rollupPluginBabelHelpers-81503waH.js +0 -57
- package/dist/_rollupPluginBabelHelpers-81503waH.js.map +0 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import Modifier from 'ember-modifier';
|
|
2
|
+
import { registerDestructor } from '@ember/destroyable';
|
|
3
|
+
import { didInsertGridCell, updateTabbableChildren } from './hds-advanced-table-cell/dom-management.js';
|
|
4
|
+
import { handleGridCellKeyPress } from './hds-advanced-table-cell/keyboard-navigation.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Copyright (c) HashiCorp, Inc.
|
|
8
|
+
* SPDX-License-Identifier: MPL-2.0
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
function cleanup(instance) {
|
|
12
|
+
const {
|
|
13
|
+
_observer
|
|
14
|
+
} = instance;
|
|
15
|
+
if (_observer) {
|
|
16
|
+
_observer.disconnect();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
class HdsAdvancedTableCellModifier extends Modifier {
|
|
20
|
+
// have a copy of shouldTrapFocus internally so the correct value is used when update tabbable children
|
|
21
|
+
_shouldTrapFocus = false;
|
|
22
|
+
_didSetup = false;
|
|
23
|
+
_observer = undefined;
|
|
24
|
+
constructor(owner, args) {
|
|
25
|
+
super(owner, args);
|
|
26
|
+
registerDestructor(this, cleanup);
|
|
27
|
+
}
|
|
28
|
+
modify(element, positional, named) {
|
|
29
|
+
this._shouldTrapFocus = named.shouldTrapFocus;
|
|
30
|
+
if (!this._didSetup) {
|
|
31
|
+
this.#setupObserver(element, positional, named);
|
|
32
|
+
named.setCellElement(element);
|
|
33
|
+
this._didSetup = true;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
#setupObserver(element, _positional, named) {
|
|
37
|
+
const {
|
|
38
|
+
handleEnableFocusTrap
|
|
39
|
+
} = named;
|
|
40
|
+
didInsertGridCell(element);
|
|
41
|
+
element.addEventListener('keydown', event => {
|
|
42
|
+
handleGridCellKeyPress(event, handleEnableFocusTrap);
|
|
43
|
+
});
|
|
44
|
+
this._observer = new MutationObserver(() => {
|
|
45
|
+
updateTabbableChildren(element, this._shouldTrapFocus);
|
|
46
|
+
});
|
|
47
|
+
this._observer.observe(element, {
|
|
48
|
+
childList: true,
|
|
49
|
+
subtree: true
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export { HdsAdvancedTableCellModifier as default };
|
|
55
|
+
//# sourceMappingURL=hds-advanced-table-cell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hds-advanced-table-cell.js","sources":["../../src/modifiers/hds-advanced-table-cell.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Modifier from 'ember-modifier';\nimport type { ArgsFor, PositionalArgs } from 'ember-modifier';\nimport { registerDestructor } from '@ember/destroyable';\n\nimport {\n didInsertGridCell,\n updateTabbableChildren,\n} from './hds-advanced-table-cell/dom-management.ts';\nimport { handleGridCellKeyPress } from './hds-advanced-table-cell/keyboard-navigation.ts';\nimport type Owner from '@ember/owner';\n\nexport interface HdsAdvancedTableCellModifierSignature {\n Args: {\n Named: {\n handleEnableFocusTrap: () => void;\n shouldTrapFocus: boolean;\n setCellElement: (el: HTMLDivElement) => void;\n };\n };\n Element: HTMLDivElement;\n}\n\nfunction cleanup(instance: HdsAdvancedTableCellModifier): void {\n const { _observer } = instance;\n if (_observer) {\n _observer.disconnect();\n }\n}\n\nexport default class HdsAdvancedTableCellModifier extends Modifier<HdsAdvancedTableCellModifierSignature> {\n // have a copy of shouldTrapFocus internally so the correct value is used when update tabbable children\n private _shouldTrapFocus = false;\n private _didSetup = false;\n _observer: MutationObserver | undefined = undefined;\n\n constructor(\n owner: Owner,\n args: ArgsFor<HdsAdvancedTableCellModifierSignature>\n ) {\n super(owner, args);\n registerDestructor(this, cleanup);\n }\n\n modify(\n element: HTMLDivElement,\n positional: PositionalArgs<HdsAdvancedTableCellModifierSignature>,\n named: HdsAdvancedTableCellModifierSignature['Args']['Named']\n ): void {\n this._shouldTrapFocus = named.shouldTrapFocus;\n\n if (!this._didSetup) {\n this.#setupObserver(element, positional, named);\n named.setCellElement(element);\n this._didSetup = true;\n }\n }\n\n #setupObserver(\n element: HdsAdvancedTableCellModifierSignature['Element'],\n _positional: PositionalArgs<HdsAdvancedTableCellModifierSignature>,\n named: HdsAdvancedTableCellModifierSignature['Args']['Named']\n ): void {\n const { handleEnableFocusTrap } = named;\n\n didInsertGridCell(element);\n element.addEventListener('keydown', (event: KeyboardEvent) => {\n handleGridCellKeyPress(event, handleEnableFocusTrap);\n });\n\n this._observer = new MutationObserver(() => {\n updateTabbableChildren(element, this._shouldTrapFocus);\n });\n\n this._observer.observe(element, {\n childList: true,\n subtree: true,\n });\n }\n}\n"],"names":["cleanup","instance","_observer","disconnect","HdsAdvancedTableCellModifier","Modifier","_shouldTrapFocus","_didSetup","undefined","constructor","owner","args","registerDestructor","modify","element","positional","named","shouldTrapFocus","setCellElement","#setupObserver","_positional","handleEnableFocusTrap","didInsertGridCell","addEventListener","event","handleGridCellKeyPress","MutationObserver","updateTabbableChildren","observe","childList","subtree"],"mappings":";;;;;AAAA;AACA;AACA;AACA;;AAwBA,SAASA,OAAOA,CAACC,QAAsC,EAAQ;EAC7D,MAAM;AAAEC,IAAAA;AAAU,GAAC,GAAGD,QAAQ;AAC9B,EAAA,IAAIC,SAAS,EAAE;IACbA,SAAS,CAACC,UAAU,EAAE;AACxB;AACF;AAEe,MAAMC,4BAA4B,SAASC,QAAQ,CAAwC;AACxG;AACQC,EAAAA,gBAAgB,GAAG,KAAK;AACxBC,EAAAA,SAAS,GAAG,KAAK;AACzBL,EAAAA,SAAS,GAAiCM,SAAS;AAEnDC,EAAAA,WAAWA,CACTC,KAAY,EACZC,IAAoD,EACpD;AACA,IAAA,KAAK,CAACD,KAAK,EAAEC,IAAI,CAAC;AAClBC,IAAAA,kBAAkB,CAAC,IAAI,EAAEZ,OAAO,CAAC;AACnC;AAEAa,EAAAA,MAAMA,CACJC,OAAuB,EACvBC,UAAiE,EACjEC,KAA6D,EACvD;AACN,IAAA,IAAI,CAACV,gBAAgB,GAAGU,KAAK,CAACC,eAAe;AAE7C,IAAA,IAAI,CAAC,IAAI,CAACV,SAAS,EAAE;MACnB,IAAI,CAAC,cAAc,CAACO,OAAO,EAAEC,UAAU,EAAEC,KAAK,CAAC;AAC/CA,MAAAA,KAAK,CAACE,cAAc,CAACJ,OAAO,CAAC;MAC7B,IAAI,CAACP,SAAS,GAAG,IAAI;AACvB;AACF;AAEA,EAAA,cAAcY,CACZL,OAAyD,EACzDM,WAAkE,EAClEJ,KAA6D,EACvD;IACN,MAAM;AAAEK,MAAAA;AAAsB,KAAC,GAAGL,KAAK;IAEvCM,iBAAiB,CAACR,OAAO,CAAC;AAC1BA,IAAAA,OAAO,CAACS,gBAAgB,CAAC,SAAS,EAAGC,KAAoB,IAAK;AAC5DC,MAAAA,sBAAsB,CAACD,KAAK,EAAEH,qBAAqB,CAAC;AACtD,KAAC,CAAC;AAEF,IAAA,IAAI,CAACnB,SAAS,GAAG,IAAIwB,gBAAgB,CAAC,MAAM;AAC1CC,MAAAA,sBAAsB,CAACb,OAAO,EAAE,IAAI,CAACR,gBAAgB,CAAC;AACxD,KAAC,CAAC;AAEF,IAAA,IAAI,CAACJ,SAAS,CAAC0B,OAAO,CAACd,OAAO,EAAE;AAC9Be,MAAAA,SAAS,EAAE,IAAI;AACfC,MAAAA,OAAO,EAAE;AACX,KAAC,CAAC;AACJ;AACF;;;;"}
|
|
@@ -8,16 +8,14 @@ import { assert, warn } from '@ember/debug';
|
|
|
8
8
|
|
|
9
9
|
const getTextToCopy = text => {
|
|
10
10
|
let textToCopy = '';
|
|
11
|
-
if (text) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
assert(`\`hds-clipboard\` modifier - \`text\` argument must be a string - provided: ${typeof text}`);
|
|
20
|
-
}
|
|
11
|
+
if (typeof text === 'string') {
|
|
12
|
+
textToCopy = text;
|
|
13
|
+
} else if (
|
|
14
|
+
// context: https://github.com/hashicorp/design-system/pull/1564
|
|
15
|
+
typeof text === 'number' || typeof text === 'bigint') {
|
|
16
|
+
textToCopy = text.toString();
|
|
17
|
+
} else {
|
|
18
|
+
assert(`\`hds-clipboard\` modifier - \`text\` argument must be a string or number - provided: ${typeof text}`);
|
|
21
19
|
}
|
|
22
20
|
return textToCopy;
|
|
23
21
|
};
|
|
@@ -69,38 +67,34 @@ const getTextToCopyFromTargetElement = targetElement => {
|
|
|
69
67
|
const writeTextToClipboard = async textToCopy => {
|
|
70
68
|
// finally copy the text to the clipboard using the Clipboard API
|
|
71
69
|
// https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return false;
|
|
93
|
-
}
|
|
70
|
+
try {
|
|
71
|
+
// notice: the "clipboard-write" permission is granted automatically to pages when they are in the active tab
|
|
72
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/write
|
|
73
|
+
await navigator.clipboard.writeText(textToCopy);
|
|
74
|
+
// DEBUG uncomment this for easy debugging
|
|
75
|
+
// console.log('success', textToCopy);
|
|
76
|
+
return true;
|
|
77
|
+
} catch {
|
|
78
|
+
// if it is not a secure context, use the polyfill
|
|
79
|
+
// to test that this works in a non-secure context, access the port through your IP address (ie. XXX.XXX.X.XXX:4200/)
|
|
80
|
+
if (!navigator.clipboard) {
|
|
81
|
+
try {
|
|
82
|
+
const clipboard = await import('clipboard-polyfill');
|
|
83
|
+
await clipboard.writeText(textToCopy);
|
|
84
|
+
return true;
|
|
85
|
+
} catch (error) {
|
|
86
|
+
warn(`copy action failed, unable to use clipboard-polyfill: ${JSON.stringify(error)}`, {
|
|
87
|
+
id: 'hds-clipboard.write-text-to-clipboard.catch-error'
|
|
88
|
+
});
|
|
89
|
+
return false;
|
|
94
90
|
}
|
|
95
|
-
return false;
|
|
96
91
|
}
|
|
97
|
-
} else {
|
|
98
92
|
return false;
|
|
99
93
|
}
|
|
100
94
|
};
|
|
101
95
|
const copyToClipboard = async (text, target) => {
|
|
102
96
|
let textToCopy = '';
|
|
103
|
-
if (text) {
|
|
97
|
+
if (text !== undefined) {
|
|
104
98
|
textToCopy = getTextToCopy(text);
|
|
105
99
|
} else if (target) {
|
|
106
100
|
const targetElement = getTargetElement(target);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hds-clipboard.js","sources":["../../src/modifiers/hds-clipboard.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport { modifier } from 'ember-modifier';\nimport { assert, warn } from '@ember/debug';\n\ntype TextToCopy = string | number | bigint;\ntype TargetToCopy = HTMLElement | string;\n\nexport interface HdsClipboardModifierSignature {\n Element: HTMLElement;\n Args: {\n Named: {\n text?: TextToCopy;\n target?: TargetToCopy;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onSuccess?: (...args: any[]) => void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onError?: (...args: any[]) => void;\n };\n };\n}\n\nexport const getTextToCopy = (text: TextToCopy): string => {\n let textToCopy: string = '';\n\n if (text) {\n if (typeof text === 'string') {\n textToCopy = text;\n } else if (\n // context: https://github.com/hashicorp/design-system/pull/1564\n typeof text === 'number' ||\n typeof text === 'bigint'\n ) {\n textToCopy = text.toString();\n } else {\n assert(\n `\\`hds-clipboard\\` modifier - \\`text\\` argument must be a string - provided: ${typeof text}`\n );\n }\n }\n return textToCopy;\n};\n\nexport const getTargetElement = (\n target: string | Node\n): HTMLElement | undefined => {\n let targetElement: HTMLElement | null;\n\n if (typeof target === 'string') {\n targetElement = document.querySelector(target);\n\n if (!targetElement) {\n console.error(\n '`hds-clipboard` modifier - `target` selector provided does not point to an existing DOM node, check your selector string',\n targetElement\n );\n return;\n }\n } else if (target instanceof HTMLElement) {\n targetElement = target;\n } else {\n if (target instanceof NodeList) {\n assert(\n '`hds-clipboard` modifier - `target` argument must be a string or a DOM node - provided: a list of DOM nodes'\n );\n } else {\n assert(\n `\\`hds-clipboard\\` modifier - \\`target\\` argument must be a string or a DOM node - provided: ${typeof target}`\n );\n }\n }\n return targetElement;\n};\n\nexport const getTextToCopyFromTargetElement = (\n targetElement: TargetToCopy\n): string => {\n let textToCopy: string = '';\n\n if (targetElement instanceof HTMLElement) {\n if (\n targetElement instanceof HTMLInputElement || // targetElement.nodeName === 'INPUT' ||\n targetElement instanceof HTMLTextAreaElement || // targetElement.nodeName === 'TEXTAREA' ||\n targetElement instanceof HTMLSelectElement // targetElement.nodeName === 'SELECT'\n ) {\n textToCopy = targetElement.value;\n } else {\n // simplest approach\n textToCopy = targetElement.innerText;\n\n // approach based on text selection (left for backup just in case)\n // var selection = window.getSelection();\n // var range = document.createRange();\n // selection.removeAllRanges();\n // range.selectNodeContents(targetElement);\n // selection.addRange(range);\n // textToCopy = selection.toString();\n // selection.removeAllRanges();\n }\n }\n return textToCopy;\n};\n\nexport const writeTextToClipboard = async (\n textToCopy: string\n): Promise<boolean> => {\n // finally copy the text to the clipboard using the Clipboard API\n // https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API\n if (textToCopy) {\n try {\n // notice: the \"clipboard-write\" permission is granted automatically to pages when they are in the active tab\n // https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/write\n await navigator.clipboard.writeText(textToCopy);\n // DEBUG uncomment this for easy debugging\n // console.log('success', textToCopy);\n return true;\n } catch {\n // if it is not a secure context, use the polyfill\n // to test that this works in a non-secure context, access the port through your IP address (ie. XXX.XXX.X.XXX:4200/)\n if (!navigator.clipboard) {\n try {\n const clipboard = await import('clipboard-polyfill');\n await clipboard.writeText(textToCopy);\n return true;\n } catch (error) {\n warn(\n `copy action failed, unable to use clipboard-polyfill: ${JSON.stringify(\n error\n )}`,\n {\n id: 'hds-clipboard.write-text-to-clipboard.catch-error',\n }\n );\n return false;\n }\n }\n\n return false;\n }\n } else {\n return false;\n }\n};\n\nexport const copyToClipboard = async (\n text?: TextToCopy,\n target?: TargetToCopy\n): Promise<boolean> => {\n let textToCopy: string = '';\n\n if (text) {\n textToCopy = getTextToCopy(text);\n } else if (target) {\n const targetElement = getTargetElement(target);\n if (targetElement) {\n textToCopy = getTextToCopyFromTargetElement(targetElement);\n }\n } else {\n assert(\n '`hds-clipboard` modifier - either a `text` or a `target` argument is required'\n );\n }\n const success = await writeTextToClipboard(textToCopy);\n return success;\n};\n\n// Notice: we use a function-based modifier here instead of a class-based one\n// because it's quite simple in its logic, and doesn't require injecting services\n// see: https://github.com/ember-modifier/ember-modifier#function-based-modifiers\n\nexport default modifier<HdsClipboardModifierSignature>(\n (element, _positional, named): (() => void) => {\n assert(\n '`hds-clipboard` modifier - the modifier must be applied to an element',\n element\n );\n\n const { text, target, onSuccess, onError } = named;\n\n const onClick = async (event: MouseEvent): Promise<void> => {\n const trigger = event.currentTarget;\n const success = await copyToClipboard(text, target);\n\n // fire the `onSuccess/onError` callbacks (if provided)\n if (success) {\n if (typeof onSuccess === 'function') {\n onSuccess({ trigger, text, target });\n }\n } else {\n if (typeof onError === 'function') {\n onError({ trigger, text, target });\n }\n }\n };\n\n // add the \"onClick\" event listener to the element\n element.addEventListener('click', onClick);\n\n // this (teardown) function is run when the element is removed\n return (): void => {\n element.removeEventListener('click', onClick);\n };\n }\n);\n"],"names":["getTextToCopy","text","textToCopy","toString","assert","getTargetElement","target","targetElement","document","querySelector","console","error","HTMLElement","NodeList","getTextToCopyFromTargetElement","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","value","innerText","writeTextToClipboard","navigator","clipboard","writeText","warn","JSON","stringify","id","copyToClipboard","success","modifier","element","_positional","named","onSuccess","onError","onClick","event","trigger","currentTarget","addEventListener","removeEventListener"],"mappings":";;;AAAA;AACA;AACA;AACA;;AAsBaA,MAAAA,aAAa,GAAIC,IAAgB,IAAa;EACzD,IAAIC,UAAkB,GAAG,EAAE;AAE3B,EAAA,IAAID,IAAI,EAAE;AACR,IAAA,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;AAC5BC,MAAAA,UAAU,GAAGD,IAAI;AACnB,KAAC,MAAM;AACL;IACA,OAAOA,IAAI,KAAK,QAAQ,IACxB,OAAOA,IAAI,KAAK,QAAQ,EACxB;AACAC,MAAAA,UAAU,GAAGD,IAAI,CAACE,QAAQ,EAAE;AAC9B,KAAC,MAAM;AACLC,MAAAA,MAAM,CACJ,CAAA,4EAAA,EAA+E,OAAOH,IAAI,EAC5F,CAAC;AACH;AACF;AACA,EAAA,OAAOC,UAAU;AACnB;AAEaG,MAAAA,gBAAgB,GAC3BC,MAAqB,IACO;AAC5B,EAAA,IAAIC,aAAiC;AAErC,EAAA,IAAI,OAAOD,MAAM,KAAK,QAAQ,EAAE;AAC9BC,IAAAA,aAAa,GAAGC,QAAQ,CAACC,aAAa,CAACH,MAAM,CAAC;IAE9C,IAAI,CAACC,aAAa,EAAE;AAClBG,MAAAA,OAAO,CAACC,KAAK,CACX,0HAA0H,EAC1HJ,aACF,CAAC;AACD,MAAA;AACF;AACF,GAAC,MAAM,IAAID,MAAM,YAAYM,WAAW,EAAE;AACxCL,IAAAA,aAAa,GAAGD,MAAM;AACxB,GAAC,MAAM;IACL,IAAIA,MAAM,YAAYO,QAAQ,EAAE;MAC9BT,MAAM,CACJ,6GACF,CAAC;AACH,KAAC,MAAM;AACLA,MAAAA,MAAM,CACJ,CAAA,4FAAA,EAA+F,OAAOE,MAAM,EAC9G,CAAC;AACH;AACF;AACA,EAAA,OAAOC,aAAa;AACtB;AAEaO,MAAAA,8BAA8B,GACzCP,aAA2B,IAChB;EACX,IAAIL,UAAkB,GAAG,EAAE;EAE3B,IAAIK,aAAa,YAAYK,WAAW,EAAE;IACxC,IACEL,aAAa,YAAYQ,gBAAgB;AAAI;AAC7CR,IAAAA,aAAa,YAAYS,mBAAmB;AAAI;IAChDT,aAAa,YAAYU,iBAAiB;MAC1C;MACAf,UAAU,GAAGK,aAAa,CAACW,KAAK;AAClC,KAAC,MAAM;AACL;MACAhB,UAAU,GAAGK,aAAa,CAACY,SAAS;;AAEpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF;AACF;AACA,EAAA,OAAOjB,UAAU;AACnB;AAEakB,MAAAA,oBAAoB,GAAG,MAClClB,UAAkB,IACG;AACrB;AACA;AACA,EAAA,IAAIA,UAAU,EAAE;IACd,IAAI;AACF;AACA;AACA,MAAA,MAAMmB,SAAS,CAACC,SAAS,CAACC,SAAS,CAACrB,UAAU,CAAC;AAC/C;AACA;AACA,MAAA,OAAO,IAAI;AACb,KAAC,CAAC,MAAM;AACN;AACA;AACA,MAAA,IAAI,CAACmB,SAAS,CAACC,SAAS,EAAE;QACxB,IAAI;AACF,UAAA,MAAMA,SAAS,GAAG,MAAM,OAAO,oBAAoB,CAAC;AACpD,UAAA,MAAMA,SAAS,CAACC,SAAS,CAACrB,UAAU,CAAC;AACrC,UAAA,OAAO,IAAI;SACZ,CAAC,OAAOS,KAAK,EAAE;UACda,IAAI,CACF,yDAAyDC,IAAI,CAACC,SAAS,CACrEf,KACF,CAAC,CAAA,CAAE,EACH;AACEgB,YAAAA,EAAE,EAAE;AACN,WACF,CAAC;AACD,UAAA,OAAO,KAAK;AACd;AACF;AAEA,MAAA,OAAO,KAAK;AACd;AACF,GAAC,MAAM;AACL,IAAA,OAAO,KAAK;AACd;AACF;AAEO,MAAMC,eAAe,GAAG,OAC7B3B,IAAiB,EACjBK,MAAqB,KACA;EACrB,IAAIJ,UAAkB,GAAG,EAAE;AAE3B,EAAA,IAAID,IAAI,EAAE;AACRC,IAAAA,UAAU,GAAGF,aAAa,CAACC,IAAI,CAAC;GACjC,MAAM,IAAIK,MAAM,EAAE;AACjB,IAAA,MAAMC,aAAa,GAAGF,gBAAgB,CAACC,MAAM,CAAC;AAC9C,IAAA,IAAIC,aAAa,EAAE;AACjBL,MAAAA,UAAU,GAAGY,8BAA8B,CAACP,aAAa,CAAC;AAC5D;AACF,GAAC,MAAM;IACLH,MAAM,CACJ,+EACF,CAAC;AACH;AACA,EAAA,MAAMyB,OAAO,GAAG,MAAMT,oBAAoB,CAAClB,UAAU,CAAC;AACtD,EAAA,OAAO2B,OAAO;AAChB;;AAEA;AACA;AACA;;AAEA,mBAAeC,QAAQ,CACrB,CAACC,OAAO,EAAEC,WAAW,EAAEC,KAAK,KAAmB;AAC7C7B,EAAAA,MAAM,CACJ,uEAAuE,EACvE2B,OACF,CAAC;EAED,MAAM;IAAE9B,IAAI;IAAEK,MAAM;IAAE4B,SAAS;AAAEC,IAAAA;AAAQ,GAAC,GAAGF,KAAK;AAElD,EAAA,MAAMG,OAAO,GAAG,MAAOC,KAAiB,IAAoB;AAC1D,IAAA,MAAMC,OAAO,GAAGD,KAAK,CAACE,aAAa;IACnC,MAAMV,OAAO,GAAG,MAAMD,eAAe,CAAC3B,IAAI,EAAEK,MAAM,CAAC;;AAEnD;AACA,IAAA,IAAIuB,OAAO,EAAE;AACX,MAAA,IAAI,OAAOK,SAAS,KAAK,UAAU,EAAE;AACnCA,QAAAA,SAAS,CAAC;UAAEI,OAAO;UAAErC,IAAI;AAAEK,UAAAA;AAAO,SAAC,CAAC;AACtC;AACF,KAAC,MAAM;AACL,MAAA,IAAI,OAAO6B,OAAO,KAAK,UAAU,EAAE;AACjCA,QAAAA,OAAO,CAAC;UAAEG,OAAO;UAAErC,IAAI;AAAEK,UAAAA;AAAO,SAAC,CAAC;AACpC;AACF;GACD;;AAED;AACAyB,EAAAA,OAAO,CAACS,gBAAgB,CAAC,OAAO,EAAEJ,OAAO,CAAC;;AAE1C;AACA,EAAA,OAAO,MAAY;AACjBL,IAAAA,OAAO,CAACU,mBAAmB,CAAC,OAAO,EAAEL,OAAO,CAAC;GAC9C;AACH,CACF,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"hds-clipboard.js","sources":["../../src/modifiers/hds-clipboard.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport { modifier } from 'ember-modifier';\nimport { assert, warn } from '@ember/debug';\n\ntype TextToCopy = string | number | bigint;\ntype TargetToCopy = HTMLElement | string;\n\nexport interface HdsClipboardModifierSignature {\n Element: HTMLElement;\n Args: {\n Named: {\n text?: TextToCopy;\n target?: TargetToCopy;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onSuccess?: (...args: any[]) => void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onError?: (...args: any[]) => void;\n };\n };\n}\n\nexport const getTextToCopy = (text: TextToCopy): string => {\n let textToCopy: string = '';\n\n if (typeof text === 'string') {\n textToCopy = text;\n } else if (\n // context: https://github.com/hashicorp/design-system/pull/1564\n typeof text === 'number' ||\n typeof text === 'bigint'\n ) {\n textToCopy = text.toString();\n } else {\n assert(\n `\\`hds-clipboard\\` modifier - \\`text\\` argument must be a string or number - provided: ${typeof text}`\n );\n }\n\n return textToCopy;\n};\n\nexport const getTargetElement = (\n target: string | Node\n): HTMLElement | undefined => {\n let targetElement: HTMLElement | null;\n\n if (typeof target === 'string') {\n targetElement = document.querySelector(target);\n\n if (!targetElement) {\n console.error(\n '`hds-clipboard` modifier - `target` selector provided does not point to an existing DOM node, check your selector string',\n targetElement\n );\n return;\n }\n } else if (target instanceof HTMLElement) {\n targetElement = target;\n } else {\n if (target instanceof NodeList) {\n assert(\n '`hds-clipboard` modifier - `target` argument must be a string or a DOM node - provided: a list of DOM nodes'\n );\n } else {\n assert(\n `\\`hds-clipboard\\` modifier - \\`target\\` argument must be a string or a DOM node - provided: ${typeof target}`\n );\n }\n }\n return targetElement;\n};\n\nexport const getTextToCopyFromTargetElement = (\n targetElement: TargetToCopy\n): string => {\n let textToCopy: string = '';\n\n if (targetElement instanceof HTMLElement) {\n if (\n targetElement instanceof HTMLInputElement || // targetElement.nodeName === 'INPUT' ||\n targetElement instanceof HTMLTextAreaElement || // targetElement.nodeName === 'TEXTAREA' ||\n targetElement instanceof HTMLSelectElement // targetElement.nodeName === 'SELECT'\n ) {\n textToCopy = targetElement.value;\n } else {\n // simplest approach\n textToCopy = targetElement.innerText;\n\n // approach based on text selection (left for backup just in case)\n // var selection = window.getSelection();\n // var range = document.createRange();\n // selection.removeAllRanges();\n // range.selectNodeContents(targetElement);\n // selection.addRange(range);\n // textToCopy = selection.toString();\n // selection.removeAllRanges();\n }\n }\n return textToCopy;\n};\n\nexport const writeTextToClipboard = async (\n textToCopy: string\n): Promise<boolean> => {\n // finally copy the text to the clipboard using the Clipboard API\n // https://developer.mozilla.org/en-US/docs/Web/API/Clipboard_API\n try {\n // notice: the \"clipboard-write\" permission is granted automatically to pages when they are in the active tab\n // https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/write\n await navigator.clipboard.writeText(textToCopy);\n // DEBUG uncomment this for easy debugging\n // console.log('success', textToCopy);\n return true;\n } catch {\n // if it is not a secure context, use the polyfill\n // to test that this works in a non-secure context, access the port through your IP address (ie. XXX.XXX.X.XXX:4200/)\n if (!navigator.clipboard) {\n try {\n const clipboard = await import('clipboard-polyfill');\n await clipboard.writeText(textToCopy);\n return true;\n } catch (error) {\n warn(\n `copy action failed, unable to use clipboard-polyfill: ${JSON.stringify(\n error\n )}`,\n {\n id: 'hds-clipboard.write-text-to-clipboard.catch-error',\n }\n );\n return false;\n }\n }\n\n return false;\n }\n};\n\nexport const copyToClipboard = async (\n text?: TextToCopy,\n target?: TargetToCopy\n): Promise<boolean> => {\n let textToCopy: string = '';\n\n if (text !== undefined) {\n textToCopy = getTextToCopy(text);\n } else if (target) {\n const targetElement = getTargetElement(target);\n if (targetElement) {\n textToCopy = getTextToCopyFromTargetElement(targetElement);\n }\n } else {\n assert(\n '`hds-clipboard` modifier - either a `text` or a `target` argument is required'\n );\n }\n const success = await writeTextToClipboard(textToCopy);\n return success;\n};\n\n// Notice: we use a function-based modifier here instead of a class-based one\n// because it's quite simple in its logic, and doesn't require injecting services\n// see: https://github.com/ember-modifier/ember-modifier#function-based-modifiers\n\nexport default modifier<HdsClipboardModifierSignature>(\n (element, _positional, named): (() => void) => {\n assert(\n '`hds-clipboard` modifier - the modifier must be applied to an element',\n element\n );\n\n const { text, target, onSuccess, onError } = named;\n\n const onClick = async (event: MouseEvent): Promise<void> => {\n const trigger = event.currentTarget;\n const success = await copyToClipboard(text, target);\n\n // fire the `onSuccess/onError` callbacks (if provided)\n if (success) {\n if (typeof onSuccess === 'function') {\n onSuccess({ trigger, text, target });\n }\n } else {\n if (typeof onError === 'function') {\n onError({ trigger, text, target });\n }\n }\n };\n\n // add the \"onClick\" event listener to the element\n element.addEventListener('click', onClick);\n\n // this (teardown) function is run when the element is removed\n return (): void => {\n element.removeEventListener('click', onClick);\n };\n }\n);\n"],"names":["getTextToCopy","text","textToCopy","toString","assert","getTargetElement","target","targetElement","document","querySelector","console","error","HTMLElement","NodeList","getTextToCopyFromTargetElement","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","value","innerText","writeTextToClipboard","navigator","clipboard","writeText","warn","JSON","stringify","id","copyToClipboard","undefined","success","modifier","element","_positional","named","onSuccess","onError","onClick","event","trigger","currentTarget","addEventListener","removeEventListener"],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { tags } from '@lezer/highlight';
|
|
2
|
+
import { HighlightStyle } from '@codemirror/language';
|
|
3
|
+
import { HDS_CODE_BLOCK_CYAN, HDS_CODE_BLOCK_BLUE, HDS_CODE_BLOCK_ORANGE, HDS_CODE_BLOCK_PURPLE, HDS_CODE_BLOCK_GREEN, HDS_CODE_BLOCK_RED, HDS_CODE_BLOCK_WHITE, HDS_CODE_EDITOR_COLOR_FOREGROUND_PRIMARY } from '../palettes/hds-dark-palette.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Copyright (c) HashiCorp, Inc.
|
|
7
|
+
* SPDX-License-Identifier: MPL-2.0
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const hdsDarkHighlightStyle = HighlightStyle.define([
|
|
11
|
+
// Cyan | Property, url, or operator
|
|
12
|
+
{
|
|
13
|
+
tag: tags.propertyName,
|
|
14
|
+
color: HDS_CODE_BLOCK_CYAN
|
|
15
|
+
}, {
|
|
16
|
+
tag: tags.url,
|
|
17
|
+
color: HDS_CODE_BLOCK_CYAN
|
|
18
|
+
}, {
|
|
19
|
+
tag: tags.operator,
|
|
20
|
+
color: HDS_CODE_BLOCK_CYAN
|
|
21
|
+
}, {
|
|
22
|
+
tag: tags.attributeValue,
|
|
23
|
+
color: HDS_CODE_BLOCK_CYAN
|
|
24
|
+
},
|
|
25
|
+
// Blue | Function, builtins
|
|
26
|
+
{
|
|
27
|
+
tag: tags.attributeName,
|
|
28
|
+
color: HDS_CODE_BLOCK_BLUE
|
|
29
|
+
}, {
|
|
30
|
+
tag: tags.function(tags.variableName),
|
|
31
|
+
color: HDS_CODE_BLOCK_BLUE
|
|
32
|
+
}, {
|
|
33
|
+
tag: tags.function(tags.propertyName),
|
|
34
|
+
color: HDS_CODE_BLOCK_BLUE
|
|
35
|
+
},
|
|
36
|
+
// Orange | Strings, characters
|
|
37
|
+
{
|
|
38
|
+
tag: tags.string,
|
|
39
|
+
color: HDS_CODE_BLOCK_ORANGE
|
|
40
|
+
}, {
|
|
41
|
+
tag: tags.regexp,
|
|
42
|
+
color: HDS_CODE_BLOCK_ORANGE
|
|
43
|
+
},
|
|
44
|
+
// Purple | Booleans, numbers
|
|
45
|
+
{
|
|
46
|
+
tag: tags.bool,
|
|
47
|
+
color: HDS_CODE_BLOCK_PURPLE
|
|
48
|
+
}, {
|
|
49
|
+
tag: tags.number,
|
|
50
|
+
color: HDS_CODE_BLOCK_PURPLE
|
|
51
|
+
},
|
|
52
|
+
// Green | Keywords, class names, saving the world
|
|
53
|
+
{
|
|
54
|
+
tag: tags.keyword,
|
|
55
|
+
color: HDS_CODE_BLOCK_GREEN
|
|
56
|
+
}, {
|
|
57
|
+
tag: tags.className,
|
|
58
|
+
color: HDS_CODE_BLOCK_GREEN
|
|
59
|
+
},
|
|
60
|
+
// Red | Important items
|
|
61
|
+
{
|
|
62
|
+
tag: tags.deleted,
|
|
63
|
+
color: HDS_CODE_BLOCK_RED
|
|
64
|
+
},
|
|
65
|
+
// White | Default color within the code block, also used for punctuation
|
|
66
|
+
{
|
|
67
|
+
tag: tags.name,
|
|
68
|
+
color: HDS_CODE_BLOCK_WHITE
|
|
69
|
+
}, {
|
|
70
|
+
tag: tags.punctuation,
|
|
71
|
+
color: HDS_CODE_BLOCK_WHITE
|
|
72
|
+
},
|
|
73
|
+
// Gray | Used for comments across languages
|
|
74
|
+
{
|
|
75
|
+
tag: tags.comment,
|
|
76
|
+
color: HDS_CODE_EDITOR_COLOR_FOREGROUND_PRIMARY
|
|
77
|
+
}]);
|
|
78
|
+
|
|
79
|
+
export { hdsDarkHighlightStyle as default };
|
|
80
|
+
//# sourceMappingURL=hds-dark-highlight-style.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hds-dark-highlight-style.js","sources":["../../../../src/modifiers/hds-code-editor/highlight-styles/hds-dark-highlight-style.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport { tags } from '@lezer/highlight';\nimport { HighlightStyle } from '@codemirror/language';\nimport {\n HDS_CODE_BLOCK_BLUE,\n HDS_CODE_BLOCK_GREEN,\n HDS_CODE_BLOCK_ORANGE,\n HDS_CODE_BLOCK_PURPLE,\n HDS_CODE_BLOCK_RED,\n HDS_CODE_BLOCK_CYAN,\n HDS_CODE_BLOCK_WHITE,\n HDS_CODE_EDITOR_COLOR_FOREGROUND_PRIMARY,\n} from '../palettes/hds-dark-palette.ts';\n\nconst hdsDarkHighlightStyle = HighlightStyle.define([\n // Cyan | Property, url, or operator\n { tag: tags.propertyName, color: HDS_CODE_BLOCK_CYAN },\n { tag: tags.url, color: HDS_CODE_BLOCK_CYAN },\n { tag: tags.operator, color: HDS_CODE_BLOCK_CYAN },\n { tag: tags.attributeValue, color: HDS_CODE_BLOCK_CYAN },\n\n // Blue | Function, builtins\n { tag: tags.attributeName, color: HDS_CODE_BLOCK_BLUE },\n { tag: tags.function(tags.variableName), color: HDS_CODE_BLOCK_BLUE },\n { tag: tags.function(tags.propertyName), color: HDS_CODE_BLOCK_BLUE },\n\n // Orange | Strings, characters\n { tag: tags.string, color: HDS_CODE_BLOCK_ORANGE },\n { tag: tags.regexp, color: HDS_CODE_BLOCK_ORANGE },\n\n // Purple | Booleans, numbers\n { tag: tags.bool, color: HDS_CODE_BLOCK_PURPLE },\n { tag: tags.number, color: HDS_CODE_BLOCK_PURPLE },\n\n // Green | Keywords, class names, saving the world\n { tag: tags.keyword, color: HDS_CODE_BLOCK_GREEN },\n { tag: tags.className, color: HDS_CODE_BLOCK_GREEN },\n\n // Red | Important items\n { tag: tags.deleted, color: HDS_CODE_BLOCK_RED },\n\n // White | Default color within the code block, also used for punctuation\n { tag: tags.name, color: HDS_CODE_BLOCK_WHITE },\n { tag: tags.punctuation, color: HDS_CODE_BLOCK_WHITE },\n\n // Gray | Used for comments across languages\n { tag: tags.comment, color: HDS_CODE_EDITOR_COLOR_FOREGROUND_PRIMARY },\n]);\n\nexport default hdsDarkHighlightStyle;\n"],"names":["hdsDarkHighlightStyle","HighlightStyle","define","tag","tags","propertyName","color","HDS_CODE_BLOCK_CYAN","url","operator","attributeValue","attributeName","HDS_CODE_BLOCK_BLUE","function","variableName","string","HDS_CODE_BLOCK_ORANGE","regexp","bool","HDS_CODE_BLOCK_PURPLE","number","keyword","HDS_CODE_BLOCK_GREEN","className","deleted","HDS_CODE_BLOCK_RED","name","HDS_CODE_BLOCK_WHITE","punctuation","comment","HDS_CODE_EDITOR_COLOR_FOREGROUND_PRIMARY"],"mappings":";;;;AAAA;AACA;AACA;AACA;;AAeA,MAAMA,qBAAqB,GAAGC,cAAc,CAACC,MAAM,CAAC;AAClD;AACA;EAAEC,GAAG,EAAEC,IAAI,CAACC,YAAY;AAAEC,EAAAA,KAAK,EAAEC;AAAoB,CAAC,EACtD;EAAEJ,GAAG,EAAEC,IAAI,CAACI,GAAG;AAAEF,EAAAA,KAAK,EAAEC;AAAoB,CAAC,EAC7C;EAAEJ,GAAG,EAAEC,IAAI,CAACK,QAAQ;AAAEH,EAAAA,KAAK,EAAEC;AAAoB,CAAC,EAClD;EAAEJ,GAAG,EAAEC,IAAI,CAACM,cAAc;AAAEJ,EAAAA,KAAK,EAAEC;AAAoB,CAAC;AAExD;AACA;EAAEJ,GAAG,EAAEC,IAAI,CAACO,aAAa;AAAEL,EAAAA,KAAK,EAAEM;AAAoB,CAAC,EACvD;EAAET,GAAG,EAAEC,IAAI,CAACS,QAAQ,CAACT,IAAI,CAACU,YAAY,CAAC;AAAER,EAAAA,KAAK,EAAEM;AAAoB,CAAC,EACrE;EAAET,GAAG,EAAEC,IAAI,CAACS,QAAQ,CAACT,IAAI,CAACC,YAAY,CAAC;AAAEC,EAAAA,KAAK,EAAEM;AAAoB,CAAC;AAErE;AACA;EAAET,GAAG,EAAEC,IAAI,CAACW,MAAM;AAAET,EAAAA,KAAK,EAAEU;AAAsB,CAAC,EAClD;EAAEb,GAAG,EAAEC,IAAI,CAACa,MAAM;AAAEX,EAAAA,KAAK,EAAEU;AAAsB,CAAC;AAElD;AACA;EAAEb,GAAG,EAAEC,IAAI,CAACc,IAAI;AAAEZ,EAAAA,KAAK,EAAEa;AAAsB,CAAC,EAChD;EAAEhB,GAAG,EAAEC,IAAI,CAACgB,MAAM;AAAEd,EAAAA,KAAK,EAAEa;AAAsB,CAAC;AAElD;AACA;EAAEhB,GAAG,EAAEC,IAAI,CAACiB,OAAO;AAAEf,EAAAA,KAAK,EAAEgB;AAAqB,CAAC,EAClD;EAAEnB,GAAG,EAAEC,IAAI,CAACmB,SAAS;AAAEjB,EAAAA,KAAK,EAAEgB;AAAqB,CAAC;AAEpD;AACA;EAAEnB,GAAG,EAAEC,IAAI,CAACoB,OAAO;AAAElB,EAAAA,KAAK,EAAEmB;AAAmB,CAAC;AAEhD;AACA;EAAEtB,GAAG,EAAEC,IAAI,CAACsB,IAAI;AAAEpB,EAAAA,KAAK,EAAEqB;AAAqB,CAAC,EAC/C;EAAExB,GAAG,EAAEC,IAAI,CAACwB,WAAW;AAAEtB,EAAAA,KAAK,EAAEqB;AAAqB,CAAC;AAEtD;AACA;EAAExB,GAAG,EAAEC,IAAI,CAACyB,OAAO;AAAEvB,EAAAA,KAAK,EAAEwB;AAAyC,CAAC,CACvE;;;;"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) HashiCorp, Inc.
|
|
3
|
+
* SPDX-License-Identifier: MPL-2.0
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
function wordRegexp(words) {
|
|
7
|
+
return new RegExp('^((' + words.join(')|(') + '))\\b');
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// keywords
|
|
11
|
+
const regoKeywords = ['as', 'contains', 'data', 'default', 'else', 'every', 'false', 'if', 'in', 'import', 'input', 'package', 'not', 'null', 'some', 'true', 'with'];
|
|
12
|
+
|
|
13
|
+
// built-ins / constants
|
|
14
|
+
const regoBuiltins = [
|
|
15
|
+
// numbers
|
|
16
|
+
'abs', 'ceil', 'floor', 'numbers.range', 'numbers.range_step', 'rand.intn', 'round',
|
|
17
|
+
// aggregates
|
|
18
|
+
'count', 'max', 'min', 'product', 'sort', 'sum',
|
|
19
|
+
// arrays
|
|
20
|
+
'array.concat', 'array.reverse', 'array.slice',
|
|
21
|
+
// sets
|
|
22
|
+
'intersection', 'union',
|
|
23
|
+
// objects
|
|
24
|
+
'json.filter', 'json.match_scema', 'json.patch', 'json.remove', 'json.verify_schema', 'object.filter', 'object.get', 'object.keys', 'object.remove', 'object.subset', 'object.union', 'object.union_n',
|
|
25
|
+
// strings
|
|
26
|
+
'concat', 'contains', 'endswith', 'format_int', 'indexof_n', 'lower', 'replace', 'split', 'sprintf', 'startswith', 'strings.any_prefix_match', 'strings.count', 'strings.render_template', 'strings.replace_n', 'strings.reverse', 'substring', 'trim', 'trim_left', 'trim_prefix', 'trim_right', 'trim_space', 'trim_suffix', 'upper',
|
|
27
|
+
// regex
|
|
28
|
+
'regex.find_all_string_submatch_n', 'regex.find_n', 'regex.globs_match', 'regex.is_valid', 'regex.match', 'regex.replace', 'regex.split', 'regex.template_match',
|
|
29
|
+
// glob
|
|
30
|
+
'glob.match', 'glob.quote_meta',
|
|
31
|
+
// bitwise
|
|
32
|
+
'bits.and', 'bits.lsh', 'bits.negate', 'bits.or', 'bits.rsh', 'bits.xor',
|
|
33
|
+
// conversions
|
|
34
|
+
'to_number',
|
|
35
|
+
// units
|
|
36
|
+
'units.parse', 'units.parse_bytes',
|
|
37
|
+
// types
|
|
38
|
+
'is_array', 'is_boolean', 'is_null', 'is_number', 'is_object', 'is_set', 'is_string', 'type_name',
|
|
39
|
+
// encoding
|
|
40
|
+
'base64.decode', 'base64.encode', 'base64.is_valid', 'base64url.decode', 'base64url.encode', 'base64url.encode_no_pad', 'hex.decode', 'hex.encode', 'json.is_valid', 'json.marshal', 'json.marshal_with_options', 'json.unmarshal', 'urlquery.decode', 'urlquery.decode_object', 'urlquery.encode', 'urlquery.encode_object', 'yaml.is_valid', 'yaml.marshal', 'yaml.unmarshal',
|
|
41
|
+
// token signing
|
|
42
|
+
'io.jwt.encode_sign', 'io.jwt.encode_sign_raw',
|
|
43
|
+
// token verification
|
|
44
|
+
'io.jwt.decode', 'io.jwt.decode_verify', 'io.jwt.verify_es256', 'io.jwt.verify_es384', 'io.jwt.verify_es512', 'io.jwt.verify_hs256', 'io.jwt.verify_hs384', 'io.jwt.verify_hs512', 'io.jwt.verify_ps384', 'io.jwt.verify_ps512', 'io.jwt.verify_rs256', 'io.jwt.verify_rs384', 'io.jwt.verify_rs512',
|
|
45
|
+
// time
|
|
46
|
+
'time.add_date', 'time.clock', 'time.date', 'time.diff', 'time.format', 'time.now_ns', 'time.parse_duration_ns', 'time.parse_ns', 'time.parse_rfc3339_ns', 'time.weekday',
|
|
47
|
+
// crypto
|
|
48
|
+
'crypto.hmac.equal', 'crypto.hmac.md5', 'crypto.hmac.sha1', 'crypto.hmac.sha256', 'crypto.hmac.sha512', 'crypto.md5', 'crypto.parse_private_keys', 'crypto.sha1', 'crypto.sha256', 'crypto.x509.parse_and_verify_certificates', 'crypto.x509.parse_and_verify_certificates_with_options', 'crypto.x509.parse_certificates', 'crypto.x509.parse_keypair', 'crypto.x509.parse_rsa_private_key',
|
|
49
|
+
// graphs
|
|
50
|
+
'graph.reachable', 'graph.reachable_paths', 'walk',
|
|
51
|
+
// graphql
|
|
52
|
+
'graphql.is_valid', 'graphql.parse', 'graphql.parse_and_verify', 'graphql.parse_query', 'graphql.parse_schema', 'graphql.parse_schema_is_valid',
|
|
53
|
+
// http
|
|
54
|
+
'http.send',
|
|
55
|
+
// aws
|
|
56
|
+
'providers.aws.sign_req',
|
|
57
|
+
// net
|
|
58
|
+
'net.cidr_contains', 'net.cidr_contains_matches', 'net.cidr_expand', 'net.cidr_intersects', 'net.cidr_is_valid', 'net.cidr_merge', 'net.lookup_ip_addr',
|
|
59
|
+
// uuid
|
|
60
|
+
'uuid.parse', 'uuid.rfc4122',
|
|
61
|
+
// semantic versions
|
|
62
|
+
'semver.compare', 'semver.is_valid',
|
|
63
|
+
// rego
|
|
64
|
+
'rego.metadata.chain', 'rego.metadata.rule', 'rego.metadata.parse_module'];
|
|
65
|
+
const keywords = wordRegexp(regoKeywords);
|
|
66
|
+
const builtins = wordRegexp(regoBuiltins);
|
|
67
|
+
function mkRego(parserConf = {}) {
|
|
68
|
+
const ERRORCLASS = 'error';
|
|
69
|
+
|
|
70
|
+
// delimiters, operators, etc.
|
|
71
|
+
const delimiters = parserConf.delimiters ?? /^[()[\]{},:;.|]/;
|
|
72
|
+
const operators = [parserConf.operators ?? /^(?:in|\+|-|\*|\/|%|<=|>=|<|>|==|!=|&&|\|\|)\b/];
|
|
73
|
+
|
|
74
|
+
// tokenizer
|
|
75
|
+
function tokenBase(stream, state) {
|
|
76
|
+
if (stream.eatSpace()) return null;
|
|
77
|
+
|
|
78
|
+
// comments
|
|
79
|
+
// single-line comment starting with #
|
|
80
|
+
if (stream.match('#')) {
|
|
81
|
+
stream.skipToEnd();
|
|
82
|
+
return 'comment';
|
|
83
|
+
}
|
|
84
|
+
// multi-line comment starting with /* ... */
|
|
85
|
+
if (stream.match('/*')) {
|
|
86
|
+
state.tokenize = tokenComment;
|
|
87
|
+
return state.tokenize(stream, state);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// strings
|
|
91
|
+
// only double-quoted strings are standard
|
|
92
|
+
if (stream.match('"')) {
|
|
93
|
+
state.tokenize = tokenString('"');
|
|
94
|
+
return state.tokenize(stream, state);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// numbers
|
|
98
|
+
if (stream.match(/^[0-9]+(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/)) {
|
|
99
|
+
return 'number';
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// operators
|
|
103
|
+
for (let i = 0; i < operators.length; i++) {
|
|
104
|
+
if (stream.match(operators[i])) {
|
|
105
|
+
return 'operator';
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// delimiters/punctuation
|
|
110
|
+
if (stream.match(delimiters)) {
|
|
111
|
+
return 'punctuation';
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// keywords, operators, builtins
|
|
115
|
+
if (stream.match(keywords)) {
|
|
116
|
+
return 'keyword';
|
|
117
|
+
}
|
|
118
|
+
if (stream.match(builtins)) {
|
|
119
|
+
return 'builtin';
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// identifiers (variables, function names, etc.)
|
|
123
|
+
if (stream.match(/^[_A-Za-z][_A-Za-z0-9]*/)) {
|
|
124
|
+
return 'variable';
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// if nothing matched, consume one character and mark it as error
|
|
128
|
+
stream.next();
|
|
129
|
+
return ERRORCLASS;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Tokenizer for multi-line (block) comments.
|
|
134
|
+
*/
|
|
135
|
+
function tokenComment(stream, state) {
|
|
136
|
+
while (!stream.eol()) {
|
|
137
|
+
if (stream.match('*/')) {
|
|
138
|
+
state.tokenize = tokenBase;
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
stream.next();
|
|
142
|
+
}
|
|
143
|
+
return 'comment';
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// string tokenizer factory
|
|
147
|
+
function tokenString(quote) {
|
|
148
|
+
return function (stream, state) {
|
|
149
|
+
let escaped = false;
|
|
150
|
+
let ch = null;
|
|
151
|
+
while ((ch = stream.next()) != null) {
|
|
152
|
+
if (ch === quote && !escaped) {
|
|
153
|
+
// end of string
|
|
154
|
+
state.tokenize = tokenBase;
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
escaped = !escaped && ch === '\\';
|
|
158
|
+
}
|
|
159
|
+
return 'string';
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// CodeMirror API
|
|
164
|
+
return {
|
|
165
|
+
name: 'rego',
|
|
166
|
+
startState: function () {
|
|
167
|
+
return {
|
|
168
|
+
tokenize: tokenBase
|
|
169
|
+
};
|
|
170
|
+
},
|
|
171
|
+
token: function (stream, state) {
|
|
172
|
+
return state.tokenize(stream, state);
|
|
173
|
+
},
|
|
174
|
+
languageData: {
|
|
175
|
+
commentTokens: {
|
|
176
|
+
line: '#',
|
|
177
|
+
block: {
|
|
178
|
+
open: '/*',
|
|
179
|
+
close: '*/'
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
closeBrackets: {
|
|
183
|
+
brackets: ['(', '[', '{', '"', "'"]
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
const rego = mkRego();
|
|
189
|
+
|
|
190
|
+
export { mkRego, rego };
|
|
191
|
+
//# sourceMappingURL=rego.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rego.js","sources":["../../../../src/modifiers/hds-code-editor/languages/rego.ts"],"sourcesContent":["/**\n * Copyright (c) HashiCorp, Inc.\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport type { StringStream } from '@codemirror/language';\n\ntype Quote = '\"' | \"'\";\n\ninterface ParserConfig {\n delimiters?: RegExp;\n operators?: RegExp;\n}\n\ninterface RegoState {\n tokenize: (stream: StringStream, state: RegoState) => string | null;\n}\n\nfunction wordRegexp(words: string[]): RegExp {\n return new RegExp('^((' + words.join(')|(') + '))\\\\b');\n}\n\n// keywords\nconst regoKeywords = [\n 'as',\n 'contains',\n 'data',\n 'default',\n 'else',\n 'every',\n 'false',\n 'if',\n 'in',\n 'import',\n 'input',\n 'package',\n 'not',\n 'null',\n 'some',\n 'true',\n 'with',\n];\n\n// built-ins / constants\nconst regoBuiltins = [\n // numbers\n 'abs',\n 'ceil',\n 'floor',\n 'numbers.range',\n 'numbers.range_step',\n 'rand.intn',\n 'round',\n // aggregates\n 'count',\n 'max',\n 'min',\n 'product',\n 'sort',\n 'sum',\n // arrays\n 'array.concat',\n 'array.reverse',\n 'array.slice',\n // sets\n 'intersection',\n 'union',\n // objects\n 'json.filter',\n 'json.match_scema',\n 'json.patch',\n 'json.remove',\n 'json.verify_schema',\n 'object.filter',\n 'object.get',\n 'object.keys',\n 'object.remove',\n 'object.subset',\n 'object.union',\n 'object.union_n',\n // strings\n 'concat',\n 'contains',\n 'endswith',\n 'format_int',\n 'indexof_n',\n 'lower',\n 'replace',\n 'split',\n 'sprintf',\n 'startswith',\n 'strings.any_prefix_match',\n 'strings.count',\n 'strings.render_template',\n 'strings.replace_n',\n 'strings.reverse',\n 'substring',\n 'trim',\n 'trim_left',\n 'trim_prefix',\n 'trim_right',\n 'trim_space',\n 'trim_suffix',\n 'upper',\n // regex\n 'regex.find_all_string_submatch_n',\n 'regex.find_n',\n 'regex.globs_match',\n 'regex.is_valid',\n 'regex.match',\n 'regex.replace',\n 'regex.split',\n 'regex.template_match',\n // glob\n 'glob.match',\n 'glob.quote_meta',\n // bitwise\n 'bits.and',\n 'bits.lsh',\n 'bits.negate',\n 'bits.or',\n 'bits.rsh',\n 'bits.xor',\n // conversions\n 'to_number',\n // units\n 'units.parse',\n 'units.parse_bytes',\n // types\n 'is_array',\n 'is_boolean',\n 'is_null',\n 'is_number',\n 'is_object',\n 'is_set',\n 'is_string',\n 'type_name',\n // encoding\n 'base64.decode',\n 'base64.encode',\n 'base64.is_valid',\n 'base64url.decode',\n 'base64url.encode',\n 'base64url.encode_no_pad',\n 'hex.decode',\n 'hex.encode',\n 'json.is_valid',\n 'json.marshal',\n 'json.marshal_with_options',\n 'json.unmarshal',\n 'urlquery.decode',\n 'urlquery.decode_object',\n 'urlquery.encode',\n 'urlquery.encode_object',\n 'yaml.is_valid',\n 'yaml.marshal',\n 'yaml.unmarshal',\n // token signing\n 'io.jwt.encode_sign',\n 'io.jwt.encode_sign_raw',\n // token verification\n 'io.jwt.decode',\n 'io.jwt.decode_verify',\n 'io.jwt.verify_es256',\n 'io.jwt.verify_es384',\n 'io.jwt.verify_es512',\n 'io.jwt.verify_hs256',\n 'io.jwt.verify_hs384',\n 'io.jwt.verify_hs512',\n 'io.jwt.verify_ps384',\n 'io.jwt.verify_ps512',\n 'io.jwt.verify_rs256',\n 'io.jwt.verify_rs384',\n 'io.jwt.verify_rs512',\n // time\n 'time.add_date',\n 'time.clock',\n 'time.date',\n 'time.diff',\n 'time.format',\n 'time.now_ns',\n 'time.parse_duration_ns',\n 'time.parse_ns',\n 'time.parse_rfc3339_ns',\n 'time.weekday',\n // crypto\n 'crypto.hmac.equal',\n 'crypto.hmac.md5',\n 'crypto.hmac.sha1',\n 'crypto.hmac.sha256',\n 'crypto.hmac.sha512',\n 'crypto.md5',\n 'crypto.parse_private_keys',\n 'crypto.sha1',\n 'crypto.sha256',\n 'crypto.x509.parse_and_verify_certificates',\n 'crypto.x509.parse_and_verify_certificates_with_options',\n 'crypto.x509.parse_certificates',\n 'crypto.x509.parse_keypair',\n 'crypto.x509.parse_rsa_private_key',\n // graphs\n 'graph.reachable',\n 'graph.reachable_paths',\n 'walk',\n // graphql\n 'graphql.is_valid',\n 'graphql.parse',\n 'graphql.parse_and_verify',\n 'graphql.parse_query',\n 'graphql.parse_schema',\n 'graphql.parse_schema_is_valid',\n // http\n 'http.send',\n // aws\n 'providers.aws.sign_req',\n // net\n 'net.cidr_contains',\n 'net.cidr_contains_matches',\n 'net.cidr_expand',\n 'net.cidr_intersects',\n 'net.cidr_is_valid',\n 'net.cidr_merge',\n 'net.lookup_ip_addr',\n // uuid\n 'uuid.parse',\n 'uuid.rfc4122',\n // semantic versions\n 'semver.compare',\n 'semver.is_valid',\n // rego\n 'rego.metadata.chain',\n 'rego.metadata.rule',\n 'rego.metadata.parse_module',\n];\n\nconst keywords = wordRegexp(regoKeywords);\nconst builtins = wordRegexp(regoBuiltins);\n\nexport function mkRego(parserConf: ParserConfig = {}) {\n const ERRORCLASS = 'error';\n\n // delimiters, operators, etc.\n const delimiters = parserConf.delimiters ?? /^[()[\\]{},:;.|]/;\n const operators = [\n parserConf.operators ?? /^(?:in|\\+|-|\\*|\\/|%|<=|>=|<|>|==|!=|&&|\\|\\|)\\b/,\n ];\n\n // tokenizer\n function tokenBase(stream: StringStream, state: RegoState): string | null {\n if (stream.eatSpace()) return null;\n\n // comments\n // single-line comment starting with #\n if (stream.match('#')) {\n stream.skipToEnd();\n return 'comment';\n }\n // multi-line comment starting with /* ... */\n if (stream.match('/*')) {\n state.tokenize = tokenComment;\n return state.tokenize(stream, state);\n }\n\n // strings\n // only double-quoted strings are standard\n if (stream.match('\"')) {\n state.tokenize = tokenString('\"');\n return state.tokenize(stream, state);\n }\n\n // numbers\n if (stream.match(/^[0-9]+(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/)) {\n return 'number';\n }\n\n // operators\n for (let i = 0; i < operators.length; i++) {\n if (stream.match(operators[i]!)) {\n return 'operator';\n }\n }\n\n // delimiters/punctuation\n if (stream.match(delimiters)) {\n return 'punctuation';\n }\n\n // keywords, operators, builtins\n if (stream.match(keywords)) {\n return 'keyword';\n }\n if (stream.match(builtins)) {\n return 'builtin';\n }\n\n // identifiers (variables, function names, etc.)\n if (stream.match(/^[_A-Za-z][_A-Za-z0-9]*/)) {\n return 'variable';\n }\n\n // if nothing matched, consume one character and mark it as error\n stream.next();\n\n return ERRORCLASS;\n }\n\n /**\n * Tokenizer for multi-line (block) comments.\n */\n function tokenComment(stream: StringStream, state: RegoState): string {\n while (!stream.eol()) {\n if (stream.match('*/')) {\n state.tokenize = tokenBase;\n break;\n }\n stream.next();\n }\n return 'comment';\n }\n\n // string tokenizer factory\n function tokenString(\n quote: Quote\n ): (stream: StringStream, state: RegoState) => string {\n return function (stream: StringStream, state: RegoState): string {\n let escaped = false;\n let ch = null;\n\n while ((ch = stream.next()) != null) {\n if (ch === quote && !escaped) {\n // end of string\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && ch === '\\\\';\n }\n\n return 'string';\n };\n }\n\n // CodeMirror API\n return {\n name: 'rego',\n\n startState: function (): RegoState {\n return { tokenize: tokenBase };\n },\n\n token: function (stream: StringStream, state: RegoState): string | null {\n return state.tokenize(stream, state);\n },\n\n languageData: {\n commentTokens: { line: '#', block: { open: '/*', close: '*/' } },\n closeBrackets: { brackets: ['(', '[', '{', '\"', \"'\"] },\n },\n };\n}\n\nexport const rego = mkRego();\n"],"names":["wordRegexp","words","RegExp","join","regoKeywords","regoBuiltins","keywords","builtins","mkRego","parserConf","ERRORCLASS","delimiters","operators","tokenBase","stream","state","eatSpace","match","skipToEnd","tokenize","tokenComment","tokenString","i","length","next","eol","quote","escaped","ch","name","startState","token","languageData","commentTokens","line","block","open","close","closeBrackets","brackets","rego"],"mappings":"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"}
|