@limetech/lime-elements 37.55.4 → 37.55.5

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.
Files changed (62) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/cjs/lime-elements.cjs.js +1 -1
  3. package/dist/cjs/limel-callout.cjs.entry.js +1 -1
  4. package/dist/cjs/limel-callout.cjs.entry.js.map +1 -1
  5. package/dist/cjs/limel-color-picker.cjs.entry.js.map +1 -1
  6. package/dist/cjs/limel-dynamic-label_4.cjs.entry.js +2 -2
  7. package/dist/cjs/limel-dynamic-label_4.cjs.entry.js.map +1 -1
  8. package/dist/cjs/limel-form.cjs.entry.js +2 -2
  9. package/dist/cjs/limel-form.cjs.entry.js.map +1 -1
  10. package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +6 -6
  11. package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js.map +1 -1
  12. package/dist/cjs/limel-snackbar.cjs.entry.js +92 -523
  13. package/dist/cjs/limel-snackbar.cjs.entry.js.map +1 -1
  14. package/dist/cjs/loader.cjs.js +1 -1
  15. package/dist/collection/components/callout/callout.helpers.js +1 -1
  16. package/dist/collection/components/callout/callout.helpers.js.map +1 -1
  17. package/dist/collection/components/color-picker/color-picker.js +0 -1
  18. package/dist/collection/components/color-picker/color-picker.js.map +1 -1
  19. package/dist/collection/components/form/widgets/code-editor.js +2 -2
  20. package/dist/collection/components/form/widgets/code-editor.js.map +1 -1
  21. package/dist/collection/components/list/list-renderer.js +2 -2
  22. package/dist/collection/components/list/list-renderer.js.map +1 -1
  23. package/dist/collection/components/snackbar/container.js +50 -0
  24. package/dist/collection/components/snackbar/container.js.map +1 -0
  25. package/dist/collection/components/snackbar/snackbar.css +37 -51
  26. package/dist/collection/components/snackbar/snackbar.js +66 -40
  27. package/dist/collection/components/snackbar/snackbar.js.map +1 -1
  28. package/dist/collection/index.js.map +1 -1
  29. package/dist/esm/lime-elements.js +1 -1
  30. package/dist/esm/limel-callout.entry.js +1 -1
  31. package/dist/esm/limel-callout.entry.js.map +1 -1
  32. package/dist/esm/limel-color-picker.entry.js.map +1 -1
  33. package/dist/esm/limel-dynamic-label_4.entry.js +2 -2
  34. package/dist/esm/limel-dynamic-label_4.entry.js.map +1 -1
  35. package/dist/esm/limel-form.entry.js +2 -2
  36. package/dist/esm/limel-form.entry.js.map +1 -1
  37. package/dist/esm/limel-prosemirror-adapter.entry.js +6 -6
  38. package/dist/esm/limel-prosemirror-adapter.entry.js.map +1 -1
  39. package/dist/esm/limel-snackbar.entry.js +92 -523
  40. package/dist/esm/limel-snackbar.entry.js.map +1 -1
  41. package/dist/esm/loader.js +1 -1
  42. package/dist/lime-elements/lime-elements.esm.js +1 -1
  43. package/dist/lime-elements/lime-elements.esm.js.map +1 -1
  44. package/dist/lime-elements/p-47f7d74f.entry.js.map +1 -1
  45. package/dist/lime-elements/p-48652dbe.entry.js.map +1 -1
  46. package/dist/lime-elements/p-50303eb1.entry.js.map +1 -1
  47. package/dist/lime-elements/{p-ed214c35.entry.js → p-a82054c2.entry.js} +2 -2
  48. package/dist/lime-elements/p-a82054c2.entry.js.map +1 -0
  49. package/dist/lime-elements/p-c66da652.entry.js +2 -0
  50. package/dist/lime-elements/p-c66da652.entry.js.map +1 -0
  51. package/dist/lime-elements/p-e7fc1c16.entry.js +2 -0
  52. package/dist/lime-elements/p-e7fc1c16.entry.js.map +1 -0
  53. package/dist/types/components/list/list-renderer.d.ts +1 -1
  54. package/dist/types/components/snackbar/snackbar.d.ts +9 -7
  55. package/dist/types/components.d.ts +2 -4
  56. package/dist/types/index.d.ts +7 -0
  57. package/package.json +14 -11
  58. package/dist/lime-elements/p-480884e6.entry.js +0 -90
  59. package/dist/lime-elements/p-480884e6.entry.js.map +0 -1
  60. package/dist/lime-elements/p-9a895330.entry.js +0 -2
  61. package/dist/lime-elements/p-9a895330.entry.js.map +0 -1
  62. package/dist/lime-elements/p-ed214c35.entry.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SnackbarContainer","constructor","this","snackbarElements","add","snackbar","popover","getPopover","showPopover","emitOffsets","remove","hidePopover","filter","item","offset","forEach","dispatchEvent","CustomEvent","detail","getBoundingClientRect","height","shadowRoot","querySelector","snackbarCss","container","hideAnimationDuration","Snackbar","hostRef","close","open","closing","timeoutId","clearTimeout","undefined","setTimeout","host","hide","emit","handleClickAction","action","snackbarId","createRandomString","onChangeIndex","event","stopPropagation","async","timeout","window","Math","max","render","h","style","class","id","role","message","renderActions","actionText","renderDismissButton","dismissible","renderActionButton","label","onClick","translate","get","language","renderTimeoutVisualization","icon","width","viewBox","r","cx","cy","fill","d","stroke"],"sources":["./src/components/snackbar/container.ts","./src/components/snackbar/snackbar.scss?tag=limel-snackbar&encapsulation=shadow","./src/components/snackbar/snackbar.tsx"],"sourcesContent":["/**\n * Container to keep track of all snackbar elements that gets added to the page.\n * When an element gets added or removed, the container will emit a\n * `changeOffset` event on all elements in the container, letting them know\n * the new offset to where they should position themselves.\n */\nexport class SnackbarContainer {\n private snackbarElements: HTMLLimelSnackbarElement[] = [];\n\n /**\n * Add a new element to the container\n *\n * @param snackbar - element to add\n */\n public add(snackbar: HTMLLimelSnackbarElement) {\n const popover = this.getPopover(snackbar);\n\n // Stencil does not seem to recognise the existance of showPopover\n // @ts-ignore\n popover?.showPopover();\n\n this.snackbarElements = [snackbar, ...this.snackbarElements];\n this.emitOffsets();\n }\n\n /**\n * Remove an element from the container\n *\n * @param snackbar - element to remove\n */\n public remove(snackbar: HTMLLimelSnackbarElement): void {\n const popover = this.getPopover(snackbar);\n\n // Stencil does not seem to recognise the existance of hidePopover\n // @ts-ignore\n popover?.hidePopover();\n\n this.snackbarElements = this.snackbarElements.filter(\n (item) => item !== snackbar,\n );\n this.emitOffsets();\n }\n\n private emitOffsets() {\n let offset = 0;\n this.snackbarElements.forEach((snackbar) => {\n snackbar.dispatchEvent(\n new CustomEvent('changeOffset', {\n detail: offset,\n }),\n );\n offset += this.getPopover(snackbar).getBoundingClientRect().height;\n });\n }\n\n private getPopover(snackbar: HTMLLimelSnackbarElement) {\n return snackbar.shadowRoot.querySelector('[popover]');\n }\n}\n","* {\n box-sizing: border-box;\n}\n\naside {\n background: none;\n border: none;\n inset: unset;\n overflow: visible;\n padding: 0.5rem 0.5rem 0 0.5rem;\n right: 0;\n\n width: var(--limel-snackbar-width, 21rem);\n top: calc(\n var(--snackbar-distance-to-top-edge) + env(safe-area-inset-top, 0)\n );\n\n transition:\n opacity var(--limel-snackbar-opacity-transition-speed, 0.2s) ease,\n top var(--limel-snackbar-top-transition-speed, 0.46s)\n cubic-bezier(1, 0.09, 0, 0.89),\n transform var(--limel-snackbar-top-transition-speed, 0.46s) ease;\n transform: translate3d(0, 0, 0);\n opacity: 1;\n\n &.is-closing {\n transform: translate3d(2rem, 0, 0);\n opacity: 0;\n --limel-snackbar-top-transition-speed: 0.2s;\n --limel-snackbar-opacity-transition-speed: 0.2s;\n }\n}\n\n.surface {\n overflow: hidden;\n\n padding: 0.5rem;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 0.25rem;\n\n min-height: 3.25rem;\n border-radius: 0.75rem;\n\n background-color: rgb(var(--contrast-1400));\n box-shadow: var(--shadow-depth-8), var(--shadow-depth-16);\n}\n\n.label {\n color: rgb(var(--contrast-100));\n\n -webkit-font-smoothing: antialiased;\n font-size: 0.8125rem;\n font-weight: 400;\n padding: 0 0.25rem;\n\n width: 100%;\n flex-grow: 1;\n}\n\n.actions {\n display: flex;\n flex-shrink: 0;\n align-items: center;\n box-sizing: border-box;\n gap: 0.5rem;\n}\n\n.dismiss,\n.actions {\n --lime-elevated-surface-background-color: rgb(\n var(--contrast-1300)\n ); // background color of the buttons\n}\n\n.dismiss {\n --mdc-theme-on-surface: rgb(var(--contrast-100)); // color of the X icon\n --icon-background-color: var(--lime-elevated-surface-background-color);\n --fill-color: var(--mdc-theme-primary);\n --track-color: rgb(var(--contrast-800), 0.2);\n transition:\n opacity 0.1s ease,\n transform 0.1s ease;\n position: absolute;\n top: -0.375rem;\n left: -0.375rem;\n transform: scale(0.7);\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n svg {\n position: absolute;\n transform: rotate(90deg);\n fill: transparent;\n stroke-dasharray: 100;\n stroke-linecap: round;\n\n aside:popover-open & {\n animation: timeout var(--snackbar-timeout) linear forwards;\n }\n }\n\n .is-closing {\n transform: scale(0.5);\n opacity: 0;\n }\n}\n\n.dismiss-button {\n transform: scale(0.8);\n margin: 0;\n padding: 0;\n}\n\n@keyframes timeout {\n 0% {\n stroke-width: 4;\n stroke-dashoffset: 0;\n opacity: 1;\n }\n 100% {\n stroke-width: 1;\n stroke-dashoffset: -100;\n opacity: 0.7;\n }\n}\n","import { Languages } from '../date-picker/date.types';\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Listen,\n Method,\n Prop,\n State,\n} from '@stencil/core';\nimport translate from '../../global/translations';\nimport { SnackbarContainer } from './container';\nimport { createRandomString } from 'src/util/random-string';\n\nconst container = new SnackbarContainer();\nconst hideAnimationDuration = 300;\n\n/**\n * A Snackbar –also known as \"Toast\"– is used to inform the end user\n * about an action or a process in the system.\n * The information could vary from announcing that a process has just started,\n * is taking place now, has ended, or has been interrupted or canceled.\n *\n * The information that you provide using a snackbar should be:\n * - temporary\n * - contextual\n * - short\n * - and most importantly, ignorable.\n *\n * It means if the user misses the information, it shouldn't be a big deal.\n *\n * :::note\n * If the information you want to display has a higher importance or priority,\n * and you need to make sure that the user takes an action to dismiss it,\n * consider using the [Banner](/#/component/limel-banner/) component instead.\n * For more complex interactions and for delivering more detailed information,\n * [Dialog](/#/component/limel-dialog/) is a better choice.\n * :::\n *\n * @exampleComponent limel-example-snackbar\n * @exampleComponent limel-example-snackbar-dismissible\n * @exampleComponent limel-example-snackbar-with-action\n * @exampleComponent limel-example-snackbar-with-changing-messages\n */\n@Component({\n tag: 'limel-snackbar',\n shadow: true,\n styleUrl: 'snackbar.scss',\n})\nexport class Snackbar {\n /**\n * The text message to display.\n */\n @Prop()\n public message: string;\n\n /**\n * The amount of time in milliseconds to show the snackbar.\n */\n @Prop()\n // eslint-disable-next-line no-magic-numbers\n public timeout?: number = 5000;\n\n /**\n * The text to display for the action button.\n */\n @Prop()\n public actionText: string;\n\n /**\n * When `true` displays a dismiss button on the snackbar,\n * allowing users to close it.\n */\n @Prop()\n public dismissible: boolean = true;\n\n /**\n * Whether to show the snackbar with space for multiple lines of text\n * @deprecated Setting this property no longer has any effect. The property will be removed in a future major version.\n */\n @Prop()\n public multiline: boolean;\n\n /**\n * Defines the language for translations.\n */\n @Prop()\n public language: Languages = 'en';\n\n @Element()\n private host: HTMLLimelSnackbarElement;\n\n /**\n * Emitted when the action button is pressed\n */\n @Event()\n private action: EventEmitter<void>;\n\n /**\n * Emitted when the snackbar hides itself\n */\n @Event()\n private hide: EventEmitter<void>;\n\n @State()\n private offset: number = 0;\n\n @State()\n private open: boolean = false;\n\n @State()\n private closing: boolean = true;\n\n private snackbarId: string;\n private timeoutId?: number;\n\n public constructor() {\n this.snackbarId = createRandomString();\n }\n\n @Listen('changeOffset')\n protected onChangeIndex(event: CustomEvent<number>) {\n event.stopPropagation();\n this.offset = event.detail;\n }\n\n /**\n * Show the snackbar\n */\n @Method()\n public async show() {\n if (this.open) {\n return;\n }\n\n this.open = true;\n this.closing = false;\n container.add(this.host);\n\n if (this.timeout) {\n this.timeoutId = window.setTimeout(\n this.close,\n Math.max(this.timeout - hideAnimationDuration, 0),\n );\n }\n }\n\n private close = () => {\n if (!this.open) {\n return false;\n }\n\n this.closing = true;\n\n if (this.timeoutId) {\n clearTimeout(this.timeoutId);\n this.timeoutId = undefined;\n }\n\n setTimeout(() => {\n this.open = false;\n container.remove(this.host);\n this.hide.emit();\n this.offset = 0;\n }, hideAnimationDuration);\n };\n\n public render() {\n return (\n <aside\n popover=\"manual\"\n style={{\n '--snackbar-timeout': `${this.timeout}ms`,\n '--snackbar-distance-to-top-edge': `${this.offset}px`,\n }}\n class={{\n open: this.open,\n 'is-closing': this.closing,\n }}\n id={this.snackbarId}\n role={this.open ? 'status' : undefined}\n aria-relevant={this.open ? 'additions' : undefined}\n >\n <div class=\"surface\" aria-atomic=\"false\">\n <div class=\"label\">{this.message}</div>\n {this.renderActions(this.actionText)}\n {this.renderDismissButton(this.dismissible)}\n </div>\n </aside>\n );\n }\n\n private handleClickAction = () => {\n this.action.emit();\n };\n\n private renderActions(actionText: string) {\n if (!actionText) {\n return;\n }\n\n return (\n <div class=\"actions\" aria-atomic=\"true\">\n {this.renderActionButton(actionText)}\n </div>\n );\n }\n\n private renderActionButton(actionText: string) {\n if (!actionText) {\n return;\n }\n\n return (\n <limel-button label={actionText} onClick={this.handleClickAction} />\n );\n }\n\n private renderDismissButton(dismissible: boolean) {\n if (!dismissible) {\n return;\n }\n\n const label = translate.get('snackbar.dismiss', this.language);\n\n return (\n <div class=\"dismiss\">\n {this.renderTimeoutVisualization()}\n <limel-icon-button\n class=\"dismiss-button\"\n icon=\"multiply\"\n label={label}\n onClick={this.close}\n aria-controls={this.snackbarId}\n />\n </div>\n );\n }\n\n private renderTimeoutVisualization() {\n return (\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\">\n <circle r=\"18\" cx=\"18\" cy=\"18\" fill=\"var(--track-color)\" />\n <path\n class=\"track\"\n d=\"M 18,18 m -16,0 a 16,16 0 1,0 32,0 a 16,16 0 1,0 -32,0\"\n stroke=\"var(--fill-color)\"\n />\n </svg>\n );\n }\n}\n"],"mappings":"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"}
@@ -28,7 +28,7 @@ export declare class ListRenderer {
28
28
  * @returns the list item
29
29
  */
30
30
  private renderListItem;
31
- private rendertext;
31
+ private renderTextForSeparator;
32
32
  private getPrimaryComponent;
33
33
  private hasPrimaryComponent;
34
34
  /**
@@ -25,7 +25,6 @@ import { Languages } from '../date-picker/date.types';
25
25
  * @exampleComponent limel-example-snackbar-dismissible
26
26
  * @exampleComponent limel-example-snackbar-with-action
27
27
  * @exampleComponent limel-example-snackbar-with-changing-messages
28
- * @exampleComponent limel-example-snackbar-positioning
29
28
  */
30
29
  export declare class Snackbar {
31
30
  /**
@@ -47,6 +46,7 @@ export declare class Snackbar {
47
46
  dismissible: boolean;
48
47
  /**
49
48
  * Whether to show the snackbar with space for multiple lines of text
49
+ * @deprecated Setting this property no longer has any effect. The property will be removed in a future major version.
50
50
  */
51
51
  multiline: boolean;
52
52
  /**
@@ -62,18 +62,20 @@ export declare class Snackbar {
62
62
  * Emitted when the snackbar hides itself
63
63
  */
64
64
  private hide;
65
- private mdcSnackbar;
65
+ private offset;
66
+ private open;
67
+ private closing;
68
+ private snackbarId;
69
+ private timeoutId?;
66
70
  constructor();
67
- connectedCallback(): void;
68
- componentDidLoad(): void;
69
- private initialize;
70
- disconnectedCallback(): void;
71
+ protected onChangeIndex(event: CustomEvent<number>): void;
71
72
  /**
72
73
  * Show the snackbar
73
74
  */
74
75
  show(): Promise<void>;
76
+ private close;
75
77
  render(): any;
76
- private handleMdcClosing;
78
+ private handleClickAction;
77
79
  private renderActions;
78
80
  private renderActionButton;
79
81
  private renderDismissButton;
@@ -2264,7 +2264,6 @@ export namespace Components {
2264
2264
  * @exampleComponent limel-example-snackbar-dismissible
2265
2265
  * @exampleComponent limel-example-snackbar-with-action
2266
2266
  * @exampleComponent limel-example-snackbar-with-changing-messages
2267
- * @exampleComponent limel-example-snackbar-positioning
2268
2267
  */
2269
2268
  interface LimelSnackbar {
2270
2269
  /**
@@ -2285,6 +2284,7 @@ export namespace Components {
2285
2284
  "message": string;
2286
2285
  /**
2287
2286
  * Whether to show the snackbar with space for multiple lines of text
2287
+ * @deprecated Setting this property no longer has any effect. The property will be removed in a future major version.
2288
2288
  */
2289
2289
  "multiline": boolean;
2290
2290
  /**
@@ -4003,7 +4003,6 @@ declare global {
4003
4003
  * @exampleComponent limel-example-snackbar-dismissible
4004
4004
  * @exampleComponent limel-example-snackbar-with-action
4005
4005
  * @exampleComponent limel-example-snackbar-with-changing-messages
4006
- * @exampleComponent limel-example-snackbar-positioning
4007
4006
  */
4008
4007
  interface HTMLLimelSnackbarElement extends Components.LimelSnackbar, HTMLStencilElement {
4009
4008
  }
@@ -6668,7 +6667,6 @@ declare namespace LocalJSX {
6668
6667
  * @exampleComponent limel-example-snackbar-dismissible
6669
6668
  * @exampleComponent limel-example-snackbar-with-action
6670
6669
  * @exampleComponent limel-example-snackbar-with-changing-messages
6671
- * @exampleComponent limel-example-snackbar-positioning
6672
6670
  */
6673
6671
  interface LimelSnackbar {
6674
6672
  /**
@@ -6689,6 +6687,7 @@ declare namespace LocalJSX {
6689
6687
  "message"?: string;
6690
6688
  /**
6691
6689
  * Whether to show the snackbar with space for multiple lines of text
6690
+ * @deprecated Setting this property no longer has any effect. The property will be removed in a future major version.
6692
6691
  */
6693
6692
  "multiline"?: boolean;
6694
6693
  /**
@@ -8099,7 +8098,6 @@ declare module "@stencil/core" {
8099
8098
  * @exampleComponent limel-example-snackbar-dismissible
8100
8099
  * @exampleComponent limel-example-snackbar-with-action
8101
8100
  * @exampleComponent limel-example-snackbar-with-changing-messages
8102
- * @exampleComponent limel-example-snackbar-positioning
8103
8101
  */
8104
8102
  "limel-snackbar": LocalJSX.LimelSnackbar & JSXBase.HTMLAttributes<HTMLLimelSnackbarElement>;
8105
8103
  /**
@@ -1,3 +1,10 @@
1
1
  export * from './components';
2
2
  export * from './interface';
3
+ declare module '@stencil/core/internal' {
4
+ namespace JSXBase {
5
+ interface HTMLAttributes {
6
+ popover?: 'auto' | 'manual';
7
+ }
8
+ }
9
+ }
3
10
  //# sourceMappingURL=index.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@limetech/lime-elements",
3
- "version": "37.55.4",
3
+ "version": "37.55.5",
4
4
  "description": "Lime Elements",
5
5
  "author": "Lime Technologies",
6
6
  "license": "Apache-2.0",
@@ -44,7 +44,9 @@
44
44
  },
45
45
  "devDependencies": {
46
46
  "@commitlint/config-conventional": "^19.2.2",
47
- "@microsoft/api-extractor": "^7.46.2",
47
+ "@eslint/eslintrc": "^3.1.0",
48
+ "@eslint/js": "^9.8.0",
49
+ "@microsoft/api-extractor": "^7.47.5",
48
50
  "@popperjs/core": "^2.11.8",
49
51
  "@rjsf/core": "^2.4.2",
50
52
  "@rollup/plugin-node-resolve": "^13.3.0",
@@ -57,20 +59,21 @@
57
59
  "@types/react": "^18.2.79",
58
60
  "@types/react-dom": "^18.2.25",
59
61
  "@types/tabulator-tables": "^4.9.4",
60
- "@typescript-eslint/eslint-plugin": "^7.7.1",
61
- "@typescript-eslint/parser": "^7.7.1",
62
+ "@typescript-eslint/eslint-plugin": "^8.0.1",
63
+ "@typescript-eslint/parser": "^8.0.1",
62
64
  "codemirror": "^5.65.9",
63
65
  "cross-env": "^7.0.3",
64
66
  "dayjs": "^1.11.11",
65
- "eslint": "^8.57.0",
67
+ "eslint": "^9.8.0",
66
68
  "eslint-config-prettier": "^9.1.0",
67
69
  "eslint-plugin-ban": "^1.6.0",
68
70
  "eslint-plugin-prefer-arrow": "^1.2.3",
69
- "eslint-plugin-prettier": "^5.1.3",
70
- "eslint-plugin-react": "^7.34.1",
71
- "eslint-plugin-sonarjs": "^0.25.1",
72
- "eslint-plugin-tsdoc": "^0.2.17",
71
+ "eslint-plugin-prettier": "^5.2.1",
72
+ "eslint-plugin-react": "^7.35.0",
73
+ "eslint-plugin-sonarjs": "^1.0.4",
74
+ "eslint-plugin-tsdoc": "^0.3.0",
73
75
  "flatpickr": "^4.6.13",
76
+ "globals": "^15.8.0",
74
77
  "html-escaper": "^3.0.3",
75
78
  "jest": "^27.5.1",
76
79
  "jest-cli": "^27.5.1",
@@ -82,10 +85,10 @@
82
85
  "moment": "^2.30.1",
83
86
  "number-abbreviate": "^2.0.0",
84
87
  "parse-css-color": "^0.2.1",
85
- "prettier": "^3.2.5",
88
+ "prettier": "^3.3.3",
86
89
  "prosemirror-example-setup": "^1.2.2",
87
90
  "prosemirror-markdown": "^1.12.0",
88
- "prosemirror-schema-basic": "^1.2.2",
91
+ "prosemirror-schema-basic": "^1.2.3",
89
92
  "puppeteer": "^19.11.1",
90
93
  "react": "^18.2.0",
91
94
  "react-dom": "^18.2.0",
@@ -1,90 +0,0 @@
1
- import{r as t,c as i,h as n,g as s}from"./p-443111b3.js";import{t as e}from"./p-1b6c1122.js";import{_ as r,a,M as c,b as o}from"./p-2ff3f85e.js";import{c as u}from"./p-dcc97cc2.js";
2
- /**
3
- * @license
4
- * Copyright 2018 Google Inc.
5
- *
6
- * Permission is hereby granted, free of charge, to any person obtaining a copy
7
- * of this software and associated documentation files (the "Software"), to deal
8
- * in the Software without restriction, including without limitation the rights
9
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- * copies of the Software, and to permit persons to whom the Software is
11
- * furnished to do so, subject to the following conditions:
12
- *
13
- * The above copyright notice and this permission notice shall be included in
14
- * all copies or substantial portions of the Software.
15
- *
16
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
- * THE SOFTWARE.
23
- */var f={CLOSING:"mdc-snackbar--closing",OPEN:"mdc-snackbar--open",OPENING:"mdc-snackbar--opening"};var l={ACTION_SELECTOR:".mdc-snackbar__action",ARIA_LIVE_LABEL_TEXT_ATTR:"data-mdc-snackbar-label-text",CLOSED_EVENT:"MDCSnackbar:closed",CLOSING_EVENT:"MDCSnackbar:closing",DISMISS_SELECTOR:".mdc-snackbar__dismiss",LABEL_SELECTOR:".mdc-snackbar__label",OPENED_EVENT:"MDCSnackbar:opened",OPENING_EVENT:"MDCSnackbar:opening",REASON_ACTION:"action",REASON_DISMISS:"dismiss",SURFACE_SELECTOR:".mdc-snackbar__surface"};var h={DEFAULT_AUTO_DISMISS_TIMEOUT_MS:5e3,INDETERMINATE:-1,MAX_AUTO_DISMISS_TIMEOUT_MS:1e4,MIN_AUTO_DISMISS_TIMEOUT_MS:4e3,SNACKBAR_ANIMATION_CLOSE_TIME_MS:75,SNACKBAR_ANIMATION_OPEN_TIME_MS:150,ARIA_LIVE_DELAY_MS:1e3};
24
- /**
25
- * @license
26
- * Copyright 2018 Google Inc.
27
- *
28
- * Permission is hereby granted, free of charge, to any person obtaining a copy
29
- * of this software and associated documentation files (the "Software"), to deal
30
- * in the Software without restriction, including without limitation the rights
31
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
32
- * copies of the Software, and to permit persons to whom the Software is
33
- * furnished to do so, subject to the following conditions:
34
- *
35
- * The above copyright notice and this permission notice shall be included in
36
- * all copies or substantial portions of the Software.
37
- *
38
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
39
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
40
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
41
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
42
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
43
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
44
- * THE SOFTWARE.
45
- */var d=h.ARIA_LIVE_DELAY_MS;var m=l.ARIA_LIVE_LABEL_TEXT_ATTR;function b(t,i){if(i===void 0){i=t}var n=t.getAttribute("aria-live");var s=i.textContent.trim();if(!s||!n){return}t.setAttribute("aria-live","off");i.textContent="";i.innerHTML='<span style="display: inline-block; width: 0; height: 1px;">&nbsp;</span>';i.setAttribute(m,s);setTimeout((function(){t.setAttribute("aria-live",n);i.removeAttribute(m);i.textContent=s}),d)}
46
- /**
47
- * @license
48
- * Copyright 2018 Google Inc.
49
- *
50
- * Permission is hereby granted, free of charge, to any person obtaining a copy
51
- * of this software and associated documentation files (the "Software"), to deal
52
- * in the Software without restriction, including without limitation the rights
53
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
54
- * copies of the Software, and to permit persons to whom the Software is
55
- * furnished to do so, subject to the following conditions:
56
- *
57
- * The above copyright notice and this permission notice shall be included in
58
- * all copies or substantial portions of the Software.
59
- *
60
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
61
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
62
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
63
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
64
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
65
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
66
- * THE SOFTWARE.
67
- */var _=f.OPENING,g=f.OPEN,k=f.CLOSING;var v=l.REASON_ACTION,p=l.REASON_DISMISS;var E=function(t){r(i,t);function i(n){var s=t.call(this,a(a({},i.defaultAdapter),n))||this;s.opened=false;s.animationFrame=0;s.animationTimer=0;s.autoDismissTimer=0;s.autoDismissTimeoutMs=h.DEFAULT_AUTO_DISMISS_TIMEOUT_MS;s.closeOnEscape=true;return s}Object.defineProperty(i,"cssClasses",{get:function(){return f},enumerable:false,configurable:true});Object.defineProperty(i,"strings",{get:function(){return l},enumerable:false,configurable:true});Object.defineProperty(i,"numbers",{get:function(){return h},enumerable:false,configurable:true});Object.defineProperty(i,"defaultAdapter",{get:function(){return{addClass:function(){return undefined},announce:function(){return undefined},notifyClosed:function(){return undefined},notifyClosing:function(){return undefined},notifyOpened:function(){return undefined},notifyOpening:function(){return undefined},removeClass:function(){return undefined}}},enumerable:false,configurable:true});i.prototype.destroy=function(){this.clearAutoDismissTimer();cancelAnimationFrame(this.animationFrame);this.animationFrame=0;clearTimeout(this.animationTimer);this.animationTimer=0;this.adapter.removeClass(_);this.adapter.removeClass(g);this.adapter.removeClass(k)};i.prototype.open=function(){var t=this;this.clearAutoDismissTimer();this.opened=true;this.adapter.notifyOpening();this.adapter.removeClass(k);this.adapter.addClass(_);this.adapter.announce();this.runNextAnimationFrame((function(){t.adapter.addClass(g);t.animationTimer=setTimeout((function(){var i=t.getTimeoutMs();t.handleAnimationTimerEnd();t.adapter.notifyOpened();if(i!==h.INDETERMINATE){t.autoDismissTimer=setTimeout((function(){t.close(p)}),i)}}),h.SNACKBAR_ANIMATION_OPEN_TIME_MS)}))};i.prototype.close=function(t){var i=this;if(t===void 0){t=""}if(!this.opened){return}cancelAnimationFrame(this.animationFrame);this.animationFrame=0;this.clearAutoDismissTimer();this.opened=false;this.adapter.notifyClosing(t);this.adapter.addClass(f.CLOSING);this.adapter.removeClass(f.OPEN);this.adapter.removeClass(f.OPENING);clearTimeout(this.animationTimer);this.animationTimer=setTimeout((function(){i.handleAnimationTimerEnd();i.adapter.notifyClosed(t)}),h.SNACKBAR_ANIMATION_CLOSE_TIME_MS)};i.prototype.isOpen=function(){return this.opened};i.prototype.getTimeoutMs=function(){return this.autoDismissTimeoutMs};i.prototype.setTimeoutMs=function(t){var i=h.MIN_AUTO_DISMISS_TIMEOUT_MS;var n=h.MAX_AUTO_DISMISS_TIMEOUT_MS;var s=h.INDETERMINATE;if(t===h.INDETERMINATE||t<=n&&t>=i){this.autoDismissTimeoutMs=t}else{throw new Error("\n timeoutMs must be an integer in the range "+i+"–"+n+"\n (or "+s+" to disable), but got '"+t+"'")}};i.prototype.getCloseOnEscape=function(){return this.closeOnEscape};i.prototype.setCloseOnEscape=function(t){this.closeOnEscape=t};i.prototype.handleKeyDown=function(t){var i=t.key==="Escape"||t.keyCode===27;if(i&&this.getCloseOnEscape()){this.close(p)}};i.prototype.handleActionButtonClick=function(t){this.close(v)};i.prototype.handleActionIconClick=function(t){this.close(p)};i.prototype.clearAutoDismissTimer=function(){clearTimeout(this.autoDismissTimer);this.autoDismissTimer=0};i.prototype.handleAnimationTimerEnd=function(){this.animationTimer=0;this.adapter.removeClass(f.OPENING);this.adapter.removeClass(f.CLOSING)};i.prototype.runNextAnimationFrame=function(t){var i=this;cancelAnimationFrame(this.animationFrame);this.animationFrame=requestAnimationFrame((function(){i.animationFrame=0;clearTimeout(i.animationTimer);i.animationTimer=setTimeout(t,0)}))};return i}(c);
68
- /**
69
- * @license
70
- * Copyright 2018 Google Inc.
71
- *
72
- * Permission is hereby granted, free of charge, to any person obtaining a copy
73
- * of this software and associated documentation files (the "Software"), to deal
74
- * in the Software without restriction, including without limitation the rights
75
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
76
- * copies of the Software, and to permit persons to whom the Software is
77
- * furnished to do so, subject to the following conditions:
78
- *
79
- * The above copyright notice and this permission notice shall be included in
80
- * all copies or substantial portions of the Software.
81
- *
82
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
83
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
84
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
85
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
86
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
87
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
88
- * THE SOFTWARE.
89
- */var T=l.SURFACE_SELECTOR,O=l.LABEL_SELECTOR,S=l.ACTION_SELECTOR,y=l.DISMISS_SELECTOR,A=l.OPENING_EVENT,I=l.OPENED_EVENT,M=l.CLOSING_EVENT,C=l.CLOSED_EVENT;var N=function(t){r(i,t);function i(){return t!==null&&t.apply(this,arguments)||this}i.attachTo=function(t){return new i(t)};i.prototype.initialize=function(t){if(t===void 0){t=function(){return b}}this.announce=t()};i.prototype.initialSyncWithDOM=function(){var t=this;this.surfaceEl=this.root.querySelector(T);this.labelEl=this.root.querySelector(O);this.actionEl=this.root.querySelector(S);this.handleKeyDown=function(i){t.foundation.handleKeyDown(i)};this.handleSurfaceClick=function(i){var n=i.target;if(t.isActionButton(n)){t.foundation.handleActionButtonClick(i)}else if(t.isActionIcon(n)){t.foundation.handleActionIconClick(i)}};this.registerKeyDownHandler(this.handleKeyDown);this.registerSurfaceClickHandler(this.handleSurfaceClick)};i.prototype.destroy=function(){t.prototype.destroy.call(this);this.deregisterKeyDownHandler(this.handleKeyDown);this.deregisterSurfaceClickHandler(this.handleSurfaceClick)};i.prototype.open=function(){this.foundation.open()};i.prototype.close=function(t){if(t===void 0){t=""}this.foundation.close(t)};i.prototype.getDefaultFoundation=function(){var t=this;var i={addClass:function(i){t.root.classList.add(i)},announce:function(){t.announce(t.labelEl)},notifyClosed:function(i){return t.emit(C,i?{reason:i}:{})},notifyClosing:function(i){return t.emit(M,i?{reason:i}:{})},notifyOpened:function(){return t.emit(I,{})},notifyOpening:function(){return t.emit(A,{})},removeClass:function(i){return t.root.classList.remove(i)}};return new E(i)};Object.defineProperty(i.prototype,"timeoutMs",{get:function(){return this.foundation.getTimeoutMs()},set:function(t){this.foundation.setTimeoutMs(t)},enumerable:false,configurable:true});Object.defineProperty(i.prototype,"closeOnEscape",{get:function(){return this.foundation.getCloseOnEscape()},set:function(t){this.foundation.setCloseOnEscape(t)},enumerable:false,configurable:true});Object.defineProperty(i.prototype,"isOpen",{get:function(){return this.foundation.isOpen()},enumerable:false,configurable:true});Object.defineProperty(i.prototype,"labelText",{get:function(){return this.labelEl.textContent},set:function(t){this.labelEl.textContent=t},enumerable:false,configurable:true});Object.defineProperty(i.prototype,"actionButtonText",{get:function(){return this.actionEl.textContent},set:function(t){this.actionEl.textContent=t},enumerable:false,configurable:true});i.prototype.registerKeyDownHandler=function(t){this.listen("keydown",t)};i.prototype.deregisterKeyDownHandler=function(t){this.unlisten("keydown",t)};i.prototype.registerSurfaceClickHandler=function(t){this.surfaceEl.addEventListener("click",t)};i.prototype.deregisterSurfaceClickHandler=function(t){this.surfaceEl.removeEventListener("click",t)};i.prototype.isActionButton=function(t){return Boolean(u(t,S))};i.prototype.isActionIcon=function(t){return Boolean(u(t,y))};return i}(o);const w="*{box-sizing:border-box}.mdc-snackbar{top:var(--snackbar-top, auto);right:var(--snackbar-right, 0);bottom:var(--snackbar-bottom, 0);left:var(--snackbar-left, 0);display:none;position:fixed;z-index:8;padding:0.75rem;align-items:center;justify-content:center}.mdc-snackbar--opening,.mdc-snackbar--open,.mdc-snackbar--closing{display:flex}.mdc-snackbar--open .mdc-snackbar__label,.mdc-snackbar--open .mdc-snackbar__actions{visibility:visible}.mdc-snackbar--open .mdc-snackbar__surface{transform:scale(1);opacity:1}.mdc-snackbar__surface{transition:opacity 0.2s cubic-bezier(0, 0, 0.2, 1), transform 0.2s cubic-bezier(0, 0, 0.2, 1);padding:0.5rem;display:flex;align-items:center;justify-content:flex-start;gap:0.25rem;min-height:3.25rem;min-width:unset;max-width:42rem;transform:scale(0.8);opacity:0;border-radius:0.75rem;background-color:rgb(var(--contrast-1400));box-shadow:var(--shadow-depth-8), var(--shadow-depth-16)}.mdc-snackbar__label{visibility:hidden;color:rgb(var(--contrast-100));-webkit-font-smoothing:antialiased;font-size:0.8125rem;font-weight:400;padding:0 0.25rem;width:100%;flex-grow:1}.mdc-snackbar__actions{visibility:hidden;display:flex;flex-shrink:0;align-items:center;box-sizing:border-box;gap:0.5rem}.dismiss,.mdc-snackbar__actions{--lime-elevated-surface-background-color:rgb(\n var(--contrast-1300)\n )}.dismiss{--mdc-theme-on-surface:rgb(var(--contrast-100));--icon-background-color:var(--lime-elevated-surface-background-color);--fill-color:var(--mdc-theme-primary);--track-color:rgb(var(--contrast-800), 0.2);position:absolute;top:-0.9rem;left:-0.9rem;transform:scale(0.8);display:flex;align-items:center;justify-content:center}.dismiss limel-icon-button.mdc-snackbar__dismiss{transform:scale(0.8);margin:0;padding:0}.dismiss svg{position:absolute;transform:rotate(90deg);fill:transparent;stroke-dasharray:100;stroke-linecap:round}.mdc-snackbar--open .dismiss svg{animation:timeout var(--snackbar-timeout) linear forwards}@keyframes timeout{0%{stroke-width:4;stroke-dashoffset:0;opacity:1}100%{stroke-width:1;stroke-dashoffset:-100;opacity:0.7}}";const x=class{constructor(n){t(this,n);this.action=i(this,"action",7);this.hide=i(this,"hide",7);this.message=undefined;this.timeout=5e3;this.actionText=undefined;this.dismissible=true;this.multiline=undefined;this.language="en";this.handleMdcClosing=this.handleMdcClosing.bind(this)}connectedCallback(){this.initialize()}componentDidLoad(){this.initialize()}initialize(){const t=this.host.shadowRoot.querySelector(".mdc-snackbar");if(!t){return}this.mdcSnackbar=new N(t);this.mdcSnackbar.listen("MDCSnackbar:closing",this.handleMdcClosing)}disconnectedCallback(){this.mdcSnackbar.unlisten("MDCSnackbar:closing",this.handleMdcClosing);this.mdcSnackbar.destroy()}async show(){if(this.timeout){this.mdcSnackbar.timeoutMs=this.timeout}this.mdcSnackbar.labelText=this.message;this.mdcSnackbar.open()}render(){return n("aside",{class:`\n mdc-snackbar\n ${this.multiline?"mdc-snackbar--stacked":""}\n `,style:{"--snackbar-timeout":`${this.timeout}ms`}},n("div",{class:"mdc-snackbar__surface",role:"status","aria-relevant":"additions"},n("div",{class:"mdc-snackbar__label","aria-atomic":"false"}),this.renderActions(this.actionText),this.renderDismissButton(this.dismissible)))}handleMdcClosing(t){if(t.detail.reason==="action"){this.action.emit()}else{this.hide.emit()}}renderActions(t){if(!t){return}return n("div",{class:"mdc-snackbar__actions","aria-atomic":"true"},this.renderActionButton(t))}renderActionButton(t){if(!t){return}return n("limel-button",{class:"mdc-button mdc-snackbar__action",label:t})}renderDismissButton(t){if(!t){return}const i=e.get("snackbar.dismiss",this.language);return n("div",{class:"dismiss"},this.renderTimeoutVisualization(),n("limel-icon-button",{class:"mdc-icon-button mdc-snackbar__dismiss",icon:"multiply",label:i}))}renderTimeoutVisualization(){return n("svg",{width:"36",height:"36",viewBox:"0 0 36 36"},n("circle",{r:"18",cx:"18",cy:"18",fill:"var(--track-color)"}),n("path",{class:"track",d:"M 18,18 m -16,0 a 16,16 0 1,0 32,0 a 16,16 0 1,0 -32,0",stroke:"var(--fill-color)"}))}get host(){return s(this)}};x.style=w;export{x as limel_snackbar};
90
- //# sourceMappingURL=p-480884e6.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["cssClasses","CLOSING","OPEN","OPENING","strings","ACTION_SELECTOR","ARIA_LIVE_LABEL_TEXT_ATTR","CLOSED_EVENT","CLOSING_EVENT","DISMISS_SELECTOR","LABEL_SELECTOR","OPENED_EVENT","OPENING_EVENT","REASON_ACTION","REASON_DISMISS","SURFACE_SELECTOR","numbers","DEFAULT_AUTO_DISMISS_TIMEOUT_MS","INDETERMINATE","MAX_AUTO_DISMISS_TIMEOUT_MS","MIN_AUTO_DISMISS_TIMEOUT_MS","SNACKBAR_ANIMATION_CLOSE_TIME_MS","SNACKBAR_ANIMATION_OPEN_TIME_MS","ARIA_LIVE_DELAY_MS","announce","ariaEl","labelEl","priority","getAttribute","labelText","textContent","trim","setAttribute","innerHTML","setTimeout","removeAttribute","MDCSnackbarFoundation","_super","__extends","adapter","_this","call","this","__assign","defaultAdapter","opened","animationFrame","animationTimer","autoDismissTimer","autoDismissTimeoutMs","closeOnEscape","Object","defineProperty","get","enumerable","configurable","addClass","undefined","notifyClosed","notifyClosing","notifyOpened","notifyOpening","removeClass","prototype","destroy","clearAutoDismissTimer","cancelAnimationFrame","clearTimeout","open","runNextAnimationFrame","timeoutMs","getTimeoutMs","handleAnimationTimerEnd","close","reason","isOpen","setTimeoutMs","minValue","maxValue","indeterminateValue","Error","getCloseOnEscape","setCloseOnEscape","handleKeyDown","evt","isEscapeKey","key","keyCode","handleActionButtonClick","_evt","handleActionIconClick","callback","requestAnimationFrame","MDCFoundation","MDCSnackbar","apply","arguments","attachTo","root","initialize","announcerFactory","util.announce","initialSyncWithDOM","surfaceEl","querySelector","actionEl","foundation","handleSurfaceClick","target","isActionButton","isActionIcon","registerKeyDownHandler","registerSurfaceClickHandler","deregisterKeyDownHandler","deregisterSurfaceClickHandler","getDefaultFoundation","className","classList","add","emit","remove","set","actionButtonText","handler","listen","unlisten","addEventListener","removeEventListener","Boolean","closest","MDCComponent","snackbarCss","Snackbar","constructor","hostRef","handleMdcClosing","bind","connectedCallback","componentDidLoad","element","host","shadowRoot","mdcSnackbar","disconnectedCallback","async","timeout","message","render","h","class","multiline","style","role","renderActions","actionText","renderDismissButton","dismissible","event","detail","action","hide","renderActionButton","label","translate","language","renderTimeoutVisualization","icon","width","height","viewBox","r","cx","cy","fill","d","stroke"],"sources":["./node_modules/@material/snackbar/constants.js","./node_modules/@material/snackbar/util.js","./node_modules/@material/snackbar/foundation.js","./node_modules/@material/snackbar/component.js","./src/components/snackbar/snackbar.scss?tag=limel-snackbar&encapsulation=shadow","./src/components/snackbar/snackbar.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nvar cssClasses = {\n CLOSING: 'mdc-snackbar--closing',\n OPEN: 'mdc-snackbar--open',\n OPENING: 'mdc-snackbar--opening',\n};\nvar strings = {\n ACTION_SELECTOR: '.mdc-snackbar__action',\n ARIA_LIVE_LABEL_TEXT_ATTR: 'data-mdc-snackbar-label-text',\n CLOSED_EVENT: 'MDCSnackbar:closed',\n CLOSING_EVENT: 'MDCSnackbar:closing',\n DISMISS_SELECTOR: '.mdc-snackbar__dismiss',\n LABEL_SELECTOR: '.mdc-snackbar__label',\n OPENED_EVENT: 'MDCSnackbar:opened',\n OPENING_EVENT: 'MDCSnackbar:opening',\n REASON_ACTION: 'action',\n REASON_DISMISS: 'dismiss',\n SURFACE_SELECTOR: '.mdc-snackbar__surface',\n};\nvar numbers = {\n DEFAULT_AUTO_DISMISS_TIMEOUT_MS: 5000,\n INDETERMINATE: -1,\n MAX_AUTO_DISMISS_TIMEOUT_MS: 10000,\n MIN_AUTO_DISMISS_TIMEOUT_MS: 4000,\n // These variables need to be kept in sync with the values in _variables.scss.\n SNACKBAR_ANIMATION_CLOSE_TIME_MS: 75,\n SNACKBAR_ANIMATION_OPEN_TIME_MS: 150,\n /**\n * Number of milliseconds to wait between temporarily clearing the label text\n * in the DOM and subsequently restoring it. This is necessary to force IE 11\n * to pick up the `aria-live` content change and announce it to the user.\n */\n ARIA_LIVE_DELAY_MS: 1000,\n};\nexport { cssClasses, strings, numbers };\n//# sourceMappingURL=constants.js.map","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { numbers, strings } from './constants';\nvar ARIA_LIVE_DELAY_MS = numbers.ARIA_LIVE_DELAY_MS;\nvar ARIA_LIVE_LABEL_TEXT_ATTR = strings.ARIA_LIVE_LABEL_TEXT_ATTR;\nfunction announce(ariaEl, labelEl) {\n if (labelEl === void 0) { labelEl = ariaEl; }\n var priority = ariaEl.getAttribute('aria-live');\n // Trim text to ignore `&nbsp;` (see below).\n // textContent is only null if the node is a document, DOCTYPE, or notation.\n var labelText = labelEl.textContent.trim();\n if (!labelText || !priority) {\n return;\n }\n // Temporarily disable `aria-live` to prevent JAWS+Firefox from announcing the message twice.\n ariaEl.setAttribute('aria-live', 'off');\n // Temporarily clear `textContent` to force a DOM mutation event that will be detected by screen readers.\n // `aria-live` elements are only announced when the element's `textContent` *changes*, so snackbars\n // sent to the browser in the initial HTML response won't be read unless we clear the element's `textContent` first.\n // Similarly, displaying the same snackbar message twice in a row doesn't trigger a DOM mutation event,\n // so screen readers won't announce the second message unless we first clear `textContent`.\n //\n // We have to clear the label text two different ways to make it work in all browsers and screen readers:\n //\n // 1. `textContent = ''` is required for IE11 + JAWS\n // 2. `innerHTML = '&nbsp;'` is required for Chrome + JAWS and NVDA\n //\n // All other browser/screen reader combinations support both methods.\n //\n // The wrapper `<span>` visually hides the space character so that it doesn't cause jank when added/removed.\n // N.B.: Setting `position: absolute`, `opacity: 0`, or `height: 0` prevents Chrome from detecting the DOM change.\n //\n // This technique has been tested in:\n //\n // * JAWS 2019:\n // - Chrome 70\n // - Firefox 60 (ESR)\n // - IE 11\n // * NVDA 2018:\n // - Chrome 70\n // - Firefox 60 (ESR)\n // - IE 11\n // * ChromeVox 53\n labelEl.textContent = '';\n labelEl.innerHTML = '<span style=\"display: inline-block; width: 0; height: 1px;\">&nbsp;</span>';\n // Prevent visual jank by temporarily displaying the label text in the ::before pseudo-element.\n // CSS generated content is normally announced by screen readers\n // (except in IE 11; see https://tink.uk/accessibility-support-for-css-generated-content/);\n // however, `aria-live` is turned off, so this DOM update will be ignored by screen readers.\n labelEl.setAttribute(ARIA_LIVE_LABEL_TEXT_ATTR, labelText);\n setTimeout(function () {\n // Allow screen readers to announce changes to the DOM again.\n ariaEl.setAttribute('aria-live', priority);\n // Remove the message from the ::before pseudo-element.\n labelEl.removeAttribute(ARIA_LIVE_LABEL_TEXT_ATTR);\n // Restore the original label text, which will be announced by screen readers.\n labelEl.textContent = labelText;\n }, ARIA_LIVE_DELAY_MS);\n}\nexport { announce };\n//# sourceMappingURL=util.js.map","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __assign, __extends } from \"tslib\";\nimport { MDCFoundation } from '@material/base/foundation';\nimport { cssClasses, numbers, strings } from './constants';\nvar OPENING = cssClasses.OPENING, OPEN = cssClasses.OPEN, CLOSING = cssClasses.CLOSING;\nvar REASON_ACTION = strings.REASON_ACTION, REASON_DISMISS = strings.REASON_DISMISS;\nvar MDCSnackbarFoundation = /** @class */ (function (_super) {\n __extends(MDCSnackbarFoundation, _super);\n function MDCSnackbarFoundation(adapter) {\n var _this = _super.call(this, __assign(__assign({}, MDCSnackbarFoundation.defaultAdapter), adapter)) || this;\n _this.opened = false;\n _this.animationFrame = 0;\n _this.animationTimer = 0;\n _this.autoDismissTimer = 0;\n _this.autoDismissTimeoutMs = numbers.DEFAULT_AUTO_DISMISS_TIMEOUT_MS;\n _this.closeOnEscape = true;\n return _this;\n }\n Object.defineProperty(MDCSnackbarFoundation, \"cssClasses\", {\n get: function () {\n return cssClasses;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCSnackbarFoundation, \"strings\", {\n get: function () {\n return strings;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCSnackbarFoundation, \"numbers\", {\n get: function () {\n return numbers;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCSnackbarFoundation, \"defaultAdapter\", {\n get: function () {\n return {\n addClass: function () { return undefined; },\n announce: function () { return undefined; },\n notifyClosed: function () { return undefined; },\n notifyClosing: function () { return undefined; },\n notifyOpened: function () { return undefined; },\n notifyOpening: function () { return undefined; },\n removeClass: function () { return undefined; },\n };\n },\n enumerable: false,\n configurable: true\n });\n MDCSnackbarFoundation.prototype.destroy = function () {\n this.clearAutoDismissTimer();\n cancelAnimationFrame(this.animationFrame);\n this.animationFrame = 0;\n clearTimeout(this.animationTimer);\n this.animationTimer = 0;\n this.adapter.removeClass(OPENING);\n this.adapter.removeClass(OPEN);\n this.adapter.removeClass(CLOSING);\n };\n MDCSnackbarFoundation.prototype.open = function () {\n var _this = this;\n this.clearAutoDismissTimer();\n this.opened = true;\n this.adapter.notifyOpening();\n this.adapter.removeClass(CLOSING);\n this.adapter.addClass(OPENING);\n this.adapter.announce();\n // Wait a frame once display is no longer \"none\", to establish basis for animation\n this.runNextAnimationFrame(function () {\n _this.adapter.addClass(OPEN);\n _this.animationTimer = setTimeout(function () {\n var timeoutMs = _this.getTimeoutMs();\n _this.handleAnimationTimerEnd();\n _this.adapter.notifyOpened();\n if (timeoutMs !== numbers.INDETERMINATE) {\n _this.autoDismissTimer = setTimeout(function () {\n _this.close(REASON_DISMISS);\n }, timeoutMs);\n }\n }, numbers.SNACKBAR_ANIMATION_OPEN_TIME_MS);\n });\n };\n /**\n * @param reason Why the snackbar was closed. Value will be passed to CLOSING_EVENT and CLOSED_EVENT via the\n * `event.detail.reason` property. Standard values are REASON_ACTION and REASON_DISMISS, but custom\n * client-specific values may also be used if desired.\n */\n MDCSnackbarFoundation.prototype.close = function (reason) {\n var _this = this;\n if (reason === void 0) { reason = ''; }\n if (!this.opened) {\n // Avoid redundant close calls (and events), e.g. repeated interactions as the snackbar is animating closed\n return;\n }\n cancelAnimationFrame(this.animationFrame);\n this.animationFrame = 0;\n this.clearAutoDismissTimer();\n this.opened = false;\n this.adapter.notifyClosing(reason);\n this.adapter.addClass(cssClasses.CLOSING);\n this.adapter.removeClass(cssClasses.OPEN);\n this.adapter.removeClass(cssClasses.OPENING);\n clearTimeout(this.animationTimer);\n this.animationTimer = setTimeout(function () {\n _this.handleAnimationTimerEnd();\n _this.adapter.notifyClosed(reason);\n }, numbers.SNACKBAR_ANIMATION_CLOSE_TIME_MS);\n };\n MDCSnackbarFoundation.prototype.isOpen = function () {\n return this.opened;\n };\n MDCSnackbarFoundation.prototype.getTimeoutMs = function () {\n return this.autoDismissTimeoutMs;\n };\n MDCSnackbarFoundation.prototype.setTimeoutMs = function (timeoutMs) {\n // Use shorter variable names to make the code more readable\n var minValue = numbers.MIN_AUTO_DISMISS_TIMEOUT_MS;\n var maxValue = numbers.MAX_AUTO_DISMISS_TIMEOUT_MS;\n var indeterminateValue = numbers.INDETERMINATE;\n if (timeoutMs === numbers.INDETERMINATE || (timeoutMs <= maxValue && timeoutMs >= minValue)) {\n this.autoDismissTimeoutMs = timeoutMs;\n }\n else {\n throw new Error(\"\\n timeoutMs must be an integer in the range \" + minValue + \"\\u2013\" + maxValue + \"\\n (or \" + indeterminateValue + \" to disable), but got '\" + timeoutMs + \"'\");\n }\n };\n MDCSnackbarFoundation.prototype.getCloseOnEscape = function () {\n return this.closeOnEscape;\n };\n MDCSnackbarFoundation.prototype.setCloseOnEscape = function (closeOnEscape) {\n this.closeOnEscape = closeOnEscape;\n };\n MDCSnackbarFoundation.prototype.handleKeyDown = function (evt) {\n var isEscapeKey = evt.key === 'Escape' || evt.keyCode === 27;\n if (isEscapeKey && this.getCloseOnEscape()) {\n this.close(REASON_DISMISS);\n }\n };\n MDCSnackbarFoundation.prototype.handleActionButtonClick = function (_evt) {\n this.close(REASON_ACTION);\n };\n MDCSnackbarFoundation.prototype.handleActionIconClick = function (_evt) {\n this.close(REASON_DISMISS);\n };\n MDCSnackbarFoundation.prototype.clearAutoDismissTimer = function () {\n clearTimeout(this.autoDismissTimer);\n this.autoDismissTimer = 0;\n };\n MDCSnackbarFoundation.prototype.handleAnimationTimerEnd = function () {\n this.animationTimer = 0;\n this.adapter.removeClass(cssClasses.OPENING);\n this.adapter.removeClass(cssClasses.CLOSING);\n };\n /**\n * Runs the given logic on the next animation frame, using setTimeout to factor in Firefox reflow behavior.\n */\n MDCSnackbarFoundation.prototype.runNextAnimationFrame = function (callback) {\n var _this = this;\n cancelAnimationFrame(this.animationFrame);\n this.animationFrame = requestAnimationFrame(function () {\n _this.animationFrame = 0;\n clearTimeout(_this.animationTimer);\n _this.animationTimer = setTimeout(callback, 0);\n });\n };\n return MDCSnackbarFoundation;\n}(MDCFoundation));\nexport { MDCSnackbarFoundation };\n// tslint:disable-next-line:no-default-export Needed for backward compatibility with MDC Web v0.44.0 and earlier.\nexport default MDCSnackbarFoundation;\n//# sourceMappingURL=foundation.js.map","/**\n * @license\n * Copyright 2018 Google Inc.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\nimport { __extends } from \"tslib\";\nimport { MDCComponent } from '@material/base/component';\nimport { closest } from '@material/dom/ponyfill';\nimport { strings } from './constants';\nimport { MDCSnackbarFoundation } from './foundation';\nimport * as util from './util';\nvar SURFACE_SELECTOR = strings.SURFACE_SELECTOR, LABEL_SELECTOR = strings.LABEL_SELECTOR, ACTION_SELECTOR = strings.ACTION_SELECTOR, DISMISS_SELECTOR = strings.DISMISS_SELECTOR, OPENING_EVENT = strings.OPENING_EVENT, OPENED_EVENT = strings.OPENED_EVENT, CLOSING_EVENT = strings.CLOSING_EVENT, CLOSED_EVENT = strings.CLOSED_EVENT;\nvar MDCSnackbar = /** @class */ (function (_super) {\n __extends(MDCSnackbar, _super);\n function MDCSnackbar() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MDCSnackbar.attachTo = function (root) {\n return new MDCSnackbar(root);\n };\n MDCSnackbar.prototype.initialize = function (announcerFactory) {\n if (announcerFactory === void 0) { announcerFactory = function () { return util.announce; }; }\n this.announce = announcerFactory();\n };\n MDCSnackbar.prototype.initialSyncWithDOM = function () {\n var _this = this;\n this.surfaceEl = this.root.querySelector(SURFACE_SELECTOR);\n this.labelEl = this.root.querySelector(LABEL_SELECTOR);\n this.actionEl = this.root.querySelector(ACTION_SELECTOR);\n this.handleKeyDown = function (evt) {\n _this.foundation.handleKeyDown(evt);\n };\n this.handleSurfaceClick = function (evt) {\n var target = evt.target;\n if (_this.isActionButton(target)) {\n _this.foundation.handleActionButtonClick(evt);\n }\n else if (_this.isActionIcon(target)) {\n _this.foundation.handleActionIconClick(evt);\n }\n };\n this.registerKeyDownHandler(this.handleKeyDown);\n this.registerSurfaceClickHandler(this.handleSurfaceClick);\n };\n MDCSnackbar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.deregisterKeyDownHandler(this.handleKeyDown);\n this.deregisterSurfaceClickHandler(this.handleSurfaceClick);\n };\n MDCSnackbar.prototype.open = function () {\n this.foundation.open();\n };\n /**\n * @param reason Why the snackbar was closed. Value will be passed to CLOSING_EVENT and CLOSED_EVENT via the\n * `event.detail.reason` property. Standard values are REASON_ACTION and REASON_DISMISS, but custom\n * client-specific values may also be used if desired.\n */\n MDCSnackbar.prototype.close = function (reason) {\n if (reason === void 0) { reason = ''; }\n this.foundation.close(reason);\n };\n MDCSnackbar.prototype.getDefaultFoundation = function () {\n var _this = this;\n // DO NOT INLINE this variable. For backward compatibility, foundations take a Partial<MDCFooAdapter>.\n // To ensure we don't accidentally omit any methods, we need a separate, strongly typed adapter variable.\n var adapter = {\n addClass: function (className) {\n _this.root.classList.add(className);\n },\n announce: function () {\n _this.announce(_this.labelEl);\n },\n notifyClosed: function (reason) { return _this.emit(CLOSED_EVENT, reason ? { reason: reason } : {}); },\n notifyClosing: function (reason) { return _this.emit(CLOSING_EVENT, reason ? { reason: reason } : {}); },\n notifyOpened: function () { return _this.emit(OPENED_EVENT, {}); },\n notifyOpening: function () { return _this.emit(OPENING_EVENT, {}); },\n removeClass: function (className) { return _this.root.classList.remove(className); },\n };\n return new MDCSnackbarFoundation(adapter);\n };\n Object.defineProperty(MDCSnackbar.prototype, \"timeoutMs\", {\n get: function () {\n return this.foundation.getTimeoutMs();\n },\n set: function (timeoutMs) {\n this.foundation.setTimeoutMs(timeoutMs);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCSnackbar.prototype, \"closeOnEscape\", {\n get: function () {\n return this.foundation.getCloseOnEscape();\n },\n set: function (closeOnEscape) {\n this.foundation.setCloseOnEscape(closeOnEscape);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCSnackbar.prototype, \"isOpen\", {\n get: function () {\n return this.foundation.isOpen();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCSnackbar.prototype, \"labelText\", {\n get: function () {\n // This property only returns null if the node is a document, DOCTYPE,\n // or notation. On Element nodes, it always returns a string.\n return this.labelEl.textContent;\n },\n set: function (labelText) {\n this.labelEl.textContent = labelText;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MDCSnackbar.prototype, \"actionButtonText\", {\n get: function () {\n return this.actionEl.textContent;\n },\n set: function (actionButtonText) {\n this.actionEl.textContent = actionButtonText;\n },\n enumerable: false,\n configurable: true\n });\n MDCSnackbar.prototype.registerKeyDownHandler = function (handler) {\n this.listen('keydown', handler);\n };\n MDCSnackbar.prototype.deregisterKeyDownHandler = function (handler) {\n this.unlisten('keydown', handler);\n };\n MDCSnackbar.prototype.registerSurfaceClickHandler = function (handler) {\n this.surfaceEl.addEventListener('click', handler);\n };\n MDCSnackbar.prototype.deregisterSurfaceClickHandler = function (handler) {\n this.surfaceEl.removeEventListener('click', handler);\n };\n MDCSnackbar.prototype.isActionButton = function (target) {\n return Boolean(closest(target, ACTION_SELECTOR));\n };\n MDCSnackbar.prototype.isActionIcon = function (target) {\n return Boolean(closest(target, DISMISS_SELECTOR));\n };\n return MDCSnackbar;\n}(MDCComponent));\nexport { MDCSnackbar };\n//# sourceMappingURL=component.js.map","/**\n * @prop --snackbar-top: Snackbar has `position: fixed;` and uses `--snackbar-top`, which defaults to `auto` for its `top` property. See the examples in the documentations for further info.\n * @prop --snackbar-right: Snackbar has `position: fixed;` and uses `--snackbar-right`, which defaults to `0` for its `right` property. See the examples in the documentations for further info.\n * @prop --snackbar-bottom: Snackbar has `position: fixed;` and uses `--snackbar-bottom`, which defaults to `0` for its `bottom` property. See the examples in the documentations for further info.\n * @prop --snackbar-left: Snackbar has `position: fixed;` and uses `--snackbar-left`, which defaults to `0` for its `left` property. See the examples in the documentations for further info.\n */\n\n* {\n box-sizing: border-box;\n}\n\n.mdc-snackbar {\n top: var(--snackbar-top, auto);\n right: var(--snackbar-right, 0);\n bottom: var(--snackbar-bottom, 0);\n left: var(--snackbar-left, 0);\n\n display: none;\n position: fixed;\n z-index: 8;\n\n padding: 0.75rem;\n\n align-items: center;\n justify-content: center;\n}\n\n.mdc-snackbar--opening,\n.mdc-snackbar--open,\n.mdc-snackbar--closing {\n display: flex;\n}\n\n.mdc-snackbar--open {\n .mdc-snackbar__label,\n .mdc-snackbar__actions {\n visibility: visible;\n }\n\n .mdc-snackbar__surface {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n.mdc-snackbar__surface {\n transition:\n opacity 0.2s cubic-bezier(0, 0, 0.2, 1),\n transform 0.2s cubic-bezier(0, 0, 0.2, 1);\n padding: 0.5rem;\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 0.25rem;\n\n min-height: 3.25rem;\n min-width: unset;\n max-width: 42rem;\n\n transform: scale(0.8);\n opacity: 0;\n border-radius: 0.75rem;\n\n background-color: rgb(var(--contrast-1400));\n box-shadow: var(--shadow-depth-8), var(--shadow-depth-16);\n}\n\n.mdc-snackbar__label {\n visibility: hidden;\n\n color: rgb(var(--contrast-100));\n\n -webkit-font-smoothing: antialiased;\n font-size: 0.8125rem;\n font-weight: 400;\n padding: 0 0.25rem;\n\n width: 100%;\n flex-grow: 1;\n}\n\n.mdc-snackbar__actions {\n visibility: hidden;\n\n display: flex;\n flex-shrink: 0;\n align-items: center;\n box-sizing: border-box;\n gap: 0.5rem;\n}\n\n.dismiss,\n.mdc-snackbar__actions {\n --lime-elevated-surface-background-color: rgb(\n var(--contrast-1300)\n ); // background color of the buttons\n}\n\n.dismiss {\n --mdc-theme-on-surface: rgb(var(--contrast-100)); // color of the X icon\n --icon-background-color: var(--lime-elevated-surface-background-color);\n --fill-color: var(--mdc-theme-primary);\n --track-color: rgb(var(--contrast-800), 0.2);\n position: absolute;\n top: -0.9rem;\n left: -0.9rem;\n transform: scale(0.8);\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n limel-icon-button.mdc-snackbar__dismiss {\n transform: scale(0.8);\n margin: 0;\n padding: 0;\n }\n\n svg {\n position: absolute;\n transform: rotate(90deg);\n fill: transparent;\n stroke-dasharray: 100;\n stroke-linecap: round;\n\n .mdc-snackbar--open & {\n animation: timeout var(--snackbar-timeout) linear forwards;\n }\n }\n}\n\n@keyframes timeout {\n 0% {\n stroke-width: 4;\n stroke-dashoffset: 0;\n opacity: 1;\n }\n 100% {\n stroke-width: 1;\n stroke-dashoffset: -100;\n opacity: 0.7;\n }\n}\n","import { Languages } from '../date-picker/date.types';\nimport { MDCSnackbar, MDCSnackbarCloseEvent } from '@material/snackbar';\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Method,\n Prop,\n} from '@stencil/core';\nimport translate from '../../global/translations';\n\n/**\n * A Snackbar –also known as \"Toast\"– is used to inform the end user\n * about an action or a process in the system.\n * The information could vary from announcing that a process has just started,\n * is taking place now, has ended, or has been interrupted or canceled.\n *\n * The information that you provide using a snackbar should be:\n * - temporary\n * - contextual\n * - short\n * - and most importantly, ignorable.\n *\n * It means if the user misses the information, it shouldn't be a big deal.\n *\n * :::note\n * If the information you want to display has a higher importance or priority,\n * and you need to make sure that the user takes an action to dismiss it,\n * consider using the [Banner](/#/component/limel-banner/) component instead.\n * For more complex interactions and for delivering more detailed information,\n * [Dialog](/#/component/limel-dialog/) is a better choice.\n * :::\n *\n * @exampleComponent limel-example-snackbar\n * @exampleComponent limel-example-snackbar-dismissible\n * @exampleComponent limel-example-snackbar-with-action\n * @exampleComponent limel-example-snackbar-with-changing-messages\n * @exampleComponent limel-example-snackbar-positioning\n */\n\n@Component({\n tag: 'limel-snackbar',\n shadow: true,\n styleUrl: 'snackbar.scss',\n})\nexport class Snackbar {\n /**\n * The text message to display.\n */\n @Prop()\n public message: string;\n\n /**\n * The amount of time in milliseconds to show the snackbar.\n */\n @Prop()\n // eslint-disable-next-line no-magic-numbers\n public timeout?: number = 5000;\n\n /**\n * The text to display for the action button.\n */\n @Prop()\n public actionText: string;\n\n /**\n * When `true` displays a dismiss button on the snackbar,\n * allowing users to close it.\n */\n @Prop()\n public dismissible: boolean = true;\n\n /**\n * Whether to show the snackbar with space for multiple lines of text\n */\n @Prop()\n public multiline: boolean;\n\n /**\n * Defines the language for translations.\n */\n @Prop()\n public language: Languages = 'en';\n\n @Element()\n private host: HTMLLimelSnackbarElement;\n\n /**\n * Emitted when the action button is pressed\n */\n @Event()\n private action: EventEmitter<void>;\n\n /**\n * Emitted when the snackbar hides itself\n */\n @Event()\n private hide: EventEmitter<void>;\n\n private mdcSnackbar: MDCSnackbar;\n\n constructor() {\n this.handleMdcClosing = this.handleMdcClosing.bind(this);\n }\n\n public connectedCallback() {\n this.initialize();\n }\n\n public componentDidLoad() {\n this.initialize();\n }\n\n private initialize() {\n const element = this.host.shadowRoot.querySelector('.mdc-snackbar');\n if (!element) {\n return;\n }\n\n this.mdcSnackbar = new MDCSnackbar(element);\n\n this.mdcSnackbar.listen('MDCSnackbar:closing', this.handleMdcClosing);\n }\n\n public disconnectedCallback() {\n this.mdcSnackbar.unlisten('MDCSnackbar:closing', this.handleMdcClosing);\n this.mdcSnackbar.destroy();\n }\n\n /**\n * Show the snackbar\n */\n @Method()\n public async show() {\n if (this.timeout) {\n this.mdcSnackbar.timeoutMs = this.timeout;\n }\n\n this.mdcSnackbar.labelText = this.message;\n\n this.mdcSnackbar.open();\n }\n\n public render() {\n return (\n <aside\n class={`\n mdc-snackbar\n ${this.multiline ? 'mdc-snackbar--stacked' : ''}\n `}\n style={{\n '--snackbar-timeout': `${this.timeout}ms`,\n }}\n >\n <div\n class=\"mdc-snackbar__surface\"\n role=\"status\"\n aria-relevant=\"additions\"\n >\n <div class=\"mdc-snackbar__label\" aria-atomic=\"false\"></div>\n {this.renderActions(this.actionText)}\n {this.renderDismissButton(this.dismissible)}\n </div>\n </aside>\n );\n }\n\n private handleMdcClosing(event: MDCSnackbarCloseEvent) {\n if (event.detail.reason === 'action') {\n this.action.emit();\n } else {\n this.hide.emit();\n }\n }\n\n private renderActions(actionText: string) {\n if (!actionText) {\n return;\n }\n\n return (\n <div class=\"mdc-snackbar__actions\" aria-atomic=\"true\">\n {this.renderActionButton(actionText)}\n </div>\n );\n }\n\n private renderActionButton(actionText: string) {\n if (!actionText) {\n return;\n }\n\n return (\n <limel-button\n class=\"mdc-button mdc-snackbar__action\"\n label={actionText}\n />\n );\n }\n\n private renderDismissButton(dismissible: boolean) {\n if (!dismissible) {\n return;\n }\n\n const label = translate.get('snackbar.dismiss', this.language);\n\n return (\n <div class=\"dismiss\">\n {this.renderTimeoutVisualization()}\n <limel-icon-button\n class=\"mdc-icon-button mdc-snackbar__dismiss\"\n icon=\"multiply\"\n label={label}\n />\n </div>\n );\n }\n\n private renderTimeoutVisualization() {\n return (\n <svg width=\"36\" height=\"36\" viewBox=\"0 0 36 36\">\n <circle r=\"18\" cx=\"18\" cy=\"18\" fill=\"var(--track-color)\" />\n <path\n class=\"track\"\n d=\"M 18,18 m -16,0 a 16,16 0 1,0 32,0 a 16,16 0 1,0 -32,0\"\n stroke=\"var(--fill-color)\"\n />\n </svg>\n );\n }\n}\n"],"mappings":"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"}