@limetech/lime-elements 38.17.0 → 38.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/cjs/limel-markdown.cjs.entry.js +1 -1
  3. package/dist/cjs/limel-markdown.cjs.entry.js.map +1 -1
  4. package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js +1 -1
  5. package/dist/cjs/limel-prosemirror-adapter.cjs.entry.js.map +1 -1
  6. package/dist/cjs/limel-table.cjs.entry.js +1 -5
  7. package/dist/cjs/limel-table.cjs.entry.js.map +1 -1
  8. package/dist/collection/components/markdown/markdown.css +37 -12
  9. package/dist/collection/components/table/table.js +1 -5
  10. package/dist/collection/components/table/table.js.map +1 -1
  11. package/dist/collection/components/text-editor/prosemirror-adapter/prosemirror-adapter.css +25 -12
  12. package/dist/esm/limel-markdown.entry.js +1 -1
  13. package/dist/esm/limel-markdown.entry.js.map +1 -1
  14. package/dist/esm/limel-prosemirror-adapter.entry.js +1 -1
  15. package/dist/esm/limel-prosemirror-adapter.entry.js.map +1 -1
  16. package/dist/esm/limel-table.entry.js +1 -5
  17. package/dist/esm/limel-table.entry.js.map +1 -1
  18. package/dist/lime-elements/lime-elements.esm.js +1 -1
  19. package/dist/lime-elements/p-1e7cec06.entry.js +2 -0
  20. package/dist/lime-elements/p-1e7cec06.entry.js.map +1 -0
  21. package/dist/lime-elements/{p-dd056e15.entry.js → p-466bf5f4.entry.js} +2 -2
  22. package/dist/lime-elements/{p-dd056e15.entry.js.map → p-466bf5f4.entry.js.map} +1 -1
  23. package/dist/lime-elements/p-b0d3099c.entry.js.map +1 -1
  24. package/package.json +1 -1
  25. package/dist/lime-elements/p-895ae176.entry.js +0 -2
  26. package/dist/lime-elements/p-895ae176.entry.js.map +0 -1
@@ -304,29 +304,42 @@ table {
304
304
 
305
305
  blockquote {
306
306
  position: relative;
307
- font-weight: 100;
308
- font-size: 0.875rem;
309
307
  max-width: 100%;
310
- line-height: 1.4;
311
- margin: 0;
312
- padding: 0.5rem 1.25rem;
313
- border-radius: 0.05rem 0.75rem;
314
- background-color: rgb(var(--contrast-300));
308
+ margin: 0.75rem 0;
309
+ padding: 0.5rem;
310
+ border-left: 0.25rem solid rgb(var(--contrast-500));
311
+ background-color: rgb(var(--contrast-200));
315
312
  }
316
313
  blockquote:before, blockquote:after {
317
314
  position: absolute;
318
- font-size: 2.75rem;
315
+ line-height: 0;
316
+ font-size: 2rem;
319
317
  opacity: 0.4;
320
318
  }
321
319
  blockquote:before {
322
320
  content: "“";
323
- left: 0;
324
- top: -0.75rem;
321
+ left: -0.5rem;
322
+ top: 0.5rem;
325
323
  }
326
324
  blockquote:after {
327
325
  content: "”";
328
- right: 0;
329
- bottom: -2rem;
326
+ right: -0.25rem;
327
+ bottom: -0.25rem;
328
+ }
329
+ blockquote blockquote {
330
+ padding-top: 0;
331
+ padding-right: 0;
332
+ padding-bottom: 0;
333
+ padding-left: 0.25rem;
334
+ border-color: rgb(var(--contrast-700));
335
+ border-left-width: 1px;
336
+ }
337
+ blockquote blockquote:before, blockquote blockquote:after {
338
+ display: none;
339
+ }
340
+ blockquote:has(> blockquote) {
341
+ padding-left: 0.25rem;
342
+ padding-bottom: 0;
330
343
  }
331
344
 
332
345
  dl {
@@ -457,6 +470,18 @@ kbd {
457
470
  * @prop --markdown-hyperlink-color: color of text for hyperlinks. Defaults to `--color-blue-dark`;
458
471
  * @prop --markdown-hyperlink-color--hovered: color of text for hyperlinks when hovered. Defaults to `--color-blue-default`;
459
472
  */
473
+ *,
474
+ *::before,
475
+ *::after {
476
+ box-sizing: border-box;
477
+ }
478
+ * :where(:not(img, video, svg, canvas, iframe)),
479
+ *::before :where(:not(img, video, svg, canvas, iframe)),
480
+ *::after :where(:not(img, video, svg, canvas, iframe)) {
481
+ min-width: 0;
482
+ min-height: 0;
483
+ }
484
+
460
485
  hr {
461
486
  border-top: 1px solid rgb(var(--contrast-700));
462
487
  }
@@ -306,11 +306,7 @@ export class Table {
306
306
  }
307
307
  const aggregate = this.aggregates.find((a) => a.field === column.field);
308
308
  if (aggregate) {
309
- column.aggregator = (col,
310
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
311
- _values,
312
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
313
- _data) => {
309
+ column.aggregator = (col, _values, _data) => {
314
310
  var _a;
315
311
  if (!col) {
316
312
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/components/table/table.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Prop,\n Element,\n Watch,\n EventEmitter,\n Event,\n Host,\n} from '@stencil/core';\nimport TabulatorTable from 'tabulator-tables';\nimport {\n Column,\n TableParams,\n ColumnSorter,\n ColumnAggregate,\n RowData,\n} from './table.types';\nimport { ColumnDefinitionFactory, createColumnSorter } from './columns';\nimport { isEqual, has } from 'lodash-es';\nimport { ElementPool } from './element-pool';\nimport { TableSelection } from './table-selection';\nimport { mapLayout, Layout } from './layout';\n\nconst FIRST_PAGE = 1;\n\n/**\n * @exampleComponent limel-example-table\n * @exampleComponent limel-example-table-custom-components\n * @exampleComponent limel-example-table-header-menu\n * @exampleComponent limel-example-table-movable-columns\n * @exampleComponent limel-example-table-sorting-disabled\n * @exampleComponent limel-example-table-local\n * @exampleComponent limel-example-table-remote\n * @exampleComponent limel-example-table-activate-row\n * @exampleComponent limel-example-table-selectable-rows\n * @exampleComponent limel-example-table-default-sorted\n * @exampleComponent limel-example-table-layout-default\n * @exampleComponent limel-example-table-layout-stretch-last-column\n * @exampleComponent limel-example-table-layout-stretch-columns\n * @exampleComponent limel-example-table-layout-low-density\n * @exampleComponent limel-example-table-interactive-rows\n */\n@Component({\n tag: 'limel-table',\n styleUrl: 'table.scss',\n shadow: true,\n})\nexport class Table {\n /**\n * Data to be displayed in the table\n */\n @Prop()\n public data: object[] = [];\n\n /**\n * Columns used to display the data\n */\n @Prop()\n public columns: Column[] = [];\n\n /**\n * Set to either `local` or `remote` to change how the table handles the\n * loaded data. When in `local` mode, all sorting and pagination will be\n * done locally with the data given. When in `remote` mode, the consumer\n * is responsible to give the table new data when a `load` event occurs\n */\n @Prop()\n public mode: 'local' | 'remote' = 'local';\n\n /**\n * Defines the layout of the table, based on how width of the columns are calculated.\n *\n * - `default`: makes columns as wide as their contents.\n * - `stretchLastColumn`: makes columns as wide as their contents, stretch the last column to fill up the remaining table width.\n * - `stretchColumns`: stretches all columns to fill the available width when possible.\n * - `lowDensity`: makes columns as wide as their contents, and creates a low density and airy layout.\n */\n @Prop()\n public layout: Layout;\n\n /**\n * Number of rows per page\n */\n @Prop()\n public pageSize: number;\n\n /**\n * The number of total rows available for the data\n */\n @Prop()\n public totalRows: number;\n\n /**\n * The initial sorted columns\n */\n @Prop()\n public sorting: ColumnSorter[] = [];\n\n /**\n * Active row in the table\n */\n @Prop({ mutable: true })\n public activeRow: RowData;\n\n /**\n * Set to `true` to enable reordering of the columns by dragging them\n */\n @Prop()\n public movableColumns: boolean;\n\n /**\n * Set to `true` to trigger loading animation\n */\n @Prop()\n public loading: boolean = false;\n\n /**\n * The page to show\n */\n @Prop()\n public page: number = FIRST_PAGE;\n\n /**\n * Emitted when `mode` is `local` the data is sorted\n */\n @Event()\n public sort: EventEmitter<ColumnSorter[]>;\n\n /**\n * Emitted when a new page has been set\n */\n @Event()\n public changePage: EventEmitter<number>;\n\n /**\n * A message to display when the table has no data\n */\n @Prop()\n public emptyMessage: string;\n\n /**\n * Column aggregates to be displayed in the table\n */\n @Prop()\n public aggregates: ColumnAggregate[];\n\n /**\n * Enables row selection\n */\n @Prop()\n public selectable: boolean;\n\n /**\n * Selected data. Requires `selectable` to be true.\n */\n @Prop()\n public selection: object[];\n\n /**\n * Emitted when `mode` is `remote` and the table is loading new data. The\n * consumer is responsible for giving the table new data\n */\n @Event()\n public load: EventEmitter<TableParams>;\n\n /**\n * Emitted when a row is activated\n */\n @Event()\n public activate: EventEmitter<object>;\n\n /**\n * Emitted when the columns have been changed\n */\n @Event()\n public changeColumns: EventEmitter<Column[]>;\n\n /**\n * Emitted when the row selection has been changed\n */\n @Event()\n public select: EventEmitter<object[]>;\n\n /**\n * Emitted when the select all rows state is toggled\n */\n @Event()\n public selectAll: EventEmitter<boolean>;\n\n @Element()\n private host: HTMLLimelTableElement;\n\n private currentLoad: { page: number; sorters: ColumnSorter[] };\n\n private tabulator: Tabulator;\n\n private pool: ElementPool;\n private columnFactory: ColumnDefinitionFactory;\n private firstRequest: boolean;\n private currentSorting: ColumnSorter[];\n private tableSelection: TableSelection;\n private shouldSort = false;\n\n constructor() {\n this.handleDataSorting = this.handleDataSorting.bind(this);\n this.handlePageLoaded = this.handlePageLoaded.bind(this);\n this.handleRenderComplete = this.handleRenderComplete.bind(this);\n this.handleAjaxRequesting = this.handleAjaxRequesting.bind(this);\n this.requestData = this.requestData.bind(this);\n this.onClickRow = this.onClickRow.bind(this);\n this.formatRow = this.formatRow.bind(this);\n this.formatRows = this.formatRows.bind(this);\n this.updateMaxPage = this.updateMaxPage.bind(this);\n this.initTabulatorComponent = this.initTabulatorComponent.bind(this);\n this.setSelection = this.setSelection.bind(this);\n this.addColumnAggregator = this.addColumnAggregator.bind(this);\n this.pool = new ElementPool(document);\n this.columnFactory = new ColumnDefinitionFactory(this.pool);\n }\n\n public componentWillLoad() {\n this.firstRequest = this.mode === 'remote';\n this.initTableSelection();\n }\n\n public componentDidLoad() {\n this.init();\n }\n\n public disconnectedCallback() {\n this.pool.clear();\n }\n\n @Watch('totalRows')\n protected totalRowsChanged() {\n this.updateMaxPage();\n }\n\n @Watch('pageSize')\n protected pageSizeChanged() {\n this.updateMaxPage();\n }\n\n @Watch('page')\n protected pageChanged() {\n if (!this.tabulator) {\n return;\n }\n\n if (this.tabulator.getPage() === this.page) {\n return;\n }\n\n this.tabulator.setPage(this.page);\n }\n\n @Watch('activeRow')\n protected activeRowChanged() {\n if (!this.tabulator) {\n return;\n }\n\n this.formatRows();\n }\n\n @Watch('data')\n protected updateData(newData: RowData[] = [], oldData: RowData[] = []) {\n const shouldReplace = this.shouldReplaceData(newData, oldData);\n\n setTimeout(() => {\n if (!this.tabulator) {\n return;\n }\n\n if (shouldReplace) {\n this.pool.releaseAll();\n this.tabulator.replaceData(newData);\n this.setSelection();\n\n return;\n }\n\n this.tabulator.updateOrAddData(newData);\n });\n }\n\n @Watch('columns')\n protected updateColumns(newColumns: Column[], oldColumns: Column[]) {\n if (!this.tabulator) {\n return;\n }\n\n if (this.areSameColumns(newColumns, oldColumns)) {\n return;\n }\n\n const columnsInTable = this.tabulator\n .getColumns()\n .filter((c) => c.getField());\n\n const oldColumnsInTable = columnsInTable.map((c) =>\n oldColumns.find((old) => old.field === c.getField()),\n );\n\n if (this.areSameColumns(newColumns, oldColumnsInTable)) {\n return;\n }\n\n this.tabulator.setColumns(this.getColumnDefinitions());\n this.shouldSort = true;\n }\n\n @Watch('aggregates')\n protected updateAggregates(\n newAggregates: ColumnAggregate[],\n oldAggregates: ColumnAggregate[],\n ) {\n if (!this.tabulator) {\n return;\n }\n\n if (isEqual(newAggregates, oldAggregates)) {\n return;\n }\n\n if (!this.haveSameAggregateFields(newAggregates, oldAggregates)) {\n this.init();\n\n return;\n }\n\n this.tabulator.recalc();\n this.tabulator.rowManager.redraw();\n }\n\n @Watch('selection')\n protected updateSelection(newSelection: any[]) {\n if (!this.tableSelection) {\n return;\n }\n\n this.tableSelection.setSelection(newSelection);\n }\n\n @Watch('selectable')\n protected updateSelectable() {\n if (this.tableSelection && !this.selectable) {\n this.tableSelection = null;\n }\n\n this.initTableSelection();\n this.init();\n }\n\n @Watch('sorting')\n protected updateSorting(\n newValue: ColumnSorter[],\n oldValue: ColumnSorter[],\n ) {\n const newSorting = this.getColumnSorter(newValue);\n const oldSorting = this.getColumnSorter(oldValue);\n if (isEqual(newSorting, oldSorting)) {\n return;\n }\n\n this.tabulator.setSort(newSorting);\n }\n\n private shouldReplaceData(newData: RowData[], oldData: RowData[]) {\n const newIds = newData.map((item) => item.id ?? item) as Array<\n string | number\n >;\n const oldIds = oldData.map((item) => item.id ?? item) as Array<\n string | number\n >;\n\n return (\n !this.areEqualIds(newIds, oldIds) ||\n !this.isSameOrder(newIds, oldIds)\n );\n }\n\n private areEqualIds(\n newIds: Array<string | number>,\n oldIds: Array<string | number>,\n ): boolean {\n const newIdSet = new Set(newIds);\n const oldIdSet = new Set(oldIds);\n\n return (\n newIdSet.size === oldIdSet.size &&\n newIds.every((id) => oldIdSet.has(id))\n );\n }\n\n private isSameOrder(\n newIds: Array<string | number>,\n oldIds: Array<string | number>,\n ): boolean {\n return newIds.every((id, index) => id === oldIds[index]);\n }\n\n private areSameColumns(newColumns: Column[], oldColumns: Column[]) {\n return (\n newColumns.length === oldColumns.length &&\n newColumns.every((column) => oldColumns.includes(column))\n );\n }\n\n private haveSameAggregateFields(\n newAggregates: ColumnAggregate[],\n oldAggregates: ColumnAggregate[],\n ) {\n const oldAggregateFields = oldAggregates?.map((a) => a.field) || [];\n\n return (\n newAggregates?.length === oldAggregates?.length &&\n !!newAggregates?.every((a) => oldAggregateFields.includes(a.field))\n );\n }\n\n private init() {\n if (this.tabulator) {\n this.pool.releaseAll();\n this.tabulator.destroy();\n }\n\n const table: HTMLElement =\n this.host.shadowRoot.querySelector('#tabulator-table');\n this.initTabulatorComponent(table);\n }\n\n /*\n * Tabulator requires that the html element it's rendered inside\n * has a size before it's created, otherwise it doesn't consider\n * it self renderedy completely. (the callback \"renderComplete\"\n * is never run).\n *\n * @param table {HTMLElement}\n *\n */\n private initTabulatorComponent(table: HTMLElement) {\n // Some browsers do not implement the ResizeObserver API...\n // If that's the case lets just create the table no\n // matter if its rendered or not.\n if (!('ResizeObserver' in window)) {\n this.tabulator = new TabulatorTable(table, this.getOptions());\n this.setSelection();\n\n return;\n }\n\n const observer = new ResizeObserver(() => {\n requestAnimationFrame(() => {\n this.tabulator = new TabulatorTable(table, this.getOptions());\n this.setSelection();\n observer.unobserve(table);\n observer.disconnect();\n });\n });\n observer.observe(table);\n }\n\n private initTableSelection() {\n if (this.selectable) {\n this.tableSelection = new TableSelection(\n () => this.tabulator,\n this.pool,\n this.select,\n );\n this.tableSelection.setSelection(this.selection);\n }\n }\n\n private setSelection() {\n if (!(this.tabulator && this.tableSelection)) {\n return;\n }\n\n this.tableSelection.setSelection(this.selection);\n }\n\n private updateMaxPage() {\n this.tabulator?.setMaxPage(this.calculatePageCount());\n }\n\n private getOptions(): Tabulator.Options {\n const ajaxOptions = this.getAjaxOptions();\n const paginationOptions = this.getPaginationOptions();\n const columnOptions = this.getColumnOptions();\n\n return {\n data: this.data,\n layout: mapLayout(this.layout),\n columns: this.getColumnDefinitions(),\n dataSorting: this.handleDataSorting,\n pageLoaded: this.handlePageLoaded,\n renderComplete: this.handleRenderComplete,\n ...ajaxOptions,\n ...paginationOptions,\n rowClick: this.onClickRow,\n rowFormatter: this.formatRow,\n initialSort: this.getInitialSorting(),\n nestedFieldSeparator: false,\n ...columnOptions,\n };\n }\n\n private getInitialSorting(): Tabulator.Sorter[] {\n if (this.currentSorting && this.currentSorting.length) {\n return this.getColumnSorter(this.currentSorting);\n }\n\n return this.getColumnSorter(this.sorting);\n }\n\n private getColumnSorter(sorting: ColumnSorter[]): Tabulator.Sorter[] {\n return sorting.map((sorter: ColumnSorter) => {\n return {\n column: String(sorter.column.field),\n dir: sorter.direction.toLocaleLowerCase() as Tabulator.SortDirection,\n };\n });\n }\n\n private getColumnDefinitions(): Tabulator.ColumnDefinition[] {\n const columnDefinitions = this.columns\n .map(this.addColumnAggregator)\n .map(this.columnFactory.create);\n\n if (this.tableSelection) {\n return this.tableSelection.getColumnDefinitions(columnDefinitions);\n }\n\n return columnDefinitions;\n }\n\n private addColumnAggregator(column: Column<any>): Column<any> {\n if (!this.aggregates?.length || column.aggregator) {\n return column;\n }\n\n const aggregate = this.aggregates.find((a) => a.field === column.field);\n if (aggregate) {\n column.aggregator = (\n col?: Column,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _values?: any[],\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _data?: any[],\n ) => {\n if (!col) {\n return undefined;\n }\n\n const value = this.aggregates.find(\n (a) => a.field === col.field,\n )?.value;\n\n if (col.formatter) {\n return col.formatter(value);\n }\n\n return value;\n };\n }\n\n return column;\n }\n\n private getAjaxOptions(): Tabulator.OptionsData {\n if (!this.isRemoteMode()) {\n return {};\n }\n\n // Tabulator needs a URL to be set, even though this one will never be\n // used since we have our own custom `ajaxRequestFunc`\n const remoteUrl = 'https://localhost';\n\n return {\n ajaxSorting: true,\n ajaxURL: remoteUrl,\n ajaxRequestFunc: this.requestData,\n ajaxRequesting: this.handleAjaxRequesting,\n };\n }\n\n /*\n * The ajaxRequesting callback is triggered when ever an ajax request is made.\n *\n * Tabulator is requesting data with an AJAX request even though it has been\n * given data when it was created.\n *\n * It seems unnecessary for us to emit the `load` event as well when this\n * happens, since we can just initialize the table with the data that has been\n * given to us. Therefore, we abort the request if:\n *\n * * its the first time this method is called and,\n * * data has been sent in to the component as a prop\n *\n */\n private handleAjaxRequesting() {\n const abortRequest = this.firstRequest && !!this.data?.length;\n this.firstRequest = false;\n\n if (abortRequest) {\n setTimeout(() => {\n this.updateMaxPage();\n this.tabulator.replaceData(this.data);\n });\n\n return false;\n }\n\n return true;\n }\n\n private getPaginationOptions(): Tabulator.OptionsPagination {\n if (!this.pageSize) {\n return {};\n }\n\n return {\n pagination: this.isRemoteMode() ? 'remote' : 'local',\n paginationSize: this.pageSize,\n paginationInitialPage: this.page,\n };\n }\n\n private requestData(_, __, params: any): Promise<object> {\n const sorters = params.sorters;\n const currentPage = params.page;\n\n if (this.page !== currentPage) {\n this.changePage.emit(currentPage);\n }\n\n const columnSorters = sorters.map(createColumnSorter(this.columns));\n\n const load = {\n page: currentPage,\n sorters: columnSorters,\n };\n\n // In order to make limel-table behave more like a controlled component,\n // we always return the existing data from this function, therefore\n // relying on the consumer component to handle the loading\n // state via the loading prop, if it actually decides to load new data.\n const resolveExistingData = Promise.resolve({\n last_page: this.calculatePageCount(), // eslint-disable-line camelcase\n data: this.data,\n });\n\n if (!isEqual(this.currentLoad, load)) {\n this.currentSorting = columnSorters;\n this.currentLoad = load;\n this.load.emit(load);\n }\n\n return resolveExistingData;\n }\n\n private isRemoteMode(): boolean {\n return this.mode === 'remote';\n }\n\n private handleDataSorting(sorters: Tabulator.Sorter[]): void {\n if (this.isRemoteMode()) {\n return;\n }\n\n const columnSorters = sorters.map(createColumnSorter(this.columns));\n if (columnSorters.length === 0) {\n return;\n }\n\n this.sort.emit(columnSorters);\n }\n\n private handlePageLoaded(page: number): void {\n if (this.isRemoteMode()) {\n return;\n }\n\n this.changePage.emit(page);\n }\n\n private handleRenderComplete(): void {\n if (this.tabulator && this.shouldSort) {\n this.shouldSort = false;\n this.tabulator.setSort(this.getColumnSorter(this.sorting));\n }\n }\n\n private onClickRow(_ev, row: Tabulator.RowComponent): void {\n if (typeof row.getPosition === 'undefined') {\n // Not a data row, probably a CalcComponent\n return;\n }\n\n if (this.isActiveRow(row)) {\n this.activeRow = null;\n } else {\n this.activeRow = row.getData();\n }\n\n this.activate.emit(this.activeRow);\n }\n\n private getActiveRows: () => Tabulator.RowComponent[] = () => {\n if (!this.tabulator) {\n return [];\n }\n\n return this.tabulator.getRows('active');\n };\n\n private getActiveRowsData: () => object[] = () => {\n // Note: Tabulator.getData() creates copies of each data object\n // and will break this.selection.has checks, hence why this function\n // intentionally retrieves the data using the row components\n return this.getActiveRows().map((row) => row.getData());\n };\n\n private selectAllOnChange = (ev: CustomEvent<boolean>) => {\n const selectAll = ev.detail;\n\n ev.stopPropagation();\n ev.preventDefault();\n\n const newSelection = selectAll ? this.getActiveRowsData() : [];\n this.select.emit(newSelection);\n this.tableSelection.setSelection(newSelection);\n this.selectAll.emit(selectAll);\n };\n\n private formatRows() {\n this.tabulator.getRows().forEach(this.formatRow);\n }\n\n private formatRow(row: Tabulator.RowComponent) {\n if (this.isActiveRow(row)) {\n row.getElement().classList.add('active');\n } else {\n row.getElement().classList.remove('active');\n }\n\n const interactiveFeedbackElement = row\n .getElement()\n .getElementsByClassName('interactive-feedback');\n if (interactiveFeedbackElement.length === 0) {\n const element = row.getElement().ownerDocument.createElement('div');\n element.classList.add('interactive-feedback');\n row.getElement().prepend(element);\n }\n }\n\n private isActiveRow(row: Tabulator.RowComponent) {\n if (!this.activeRow) {\n return false;\n }\n\n const activeRowId = this.activeRow.id ?? null;\n\n if (activeRowId !== null) {\n return activeRowId === row.getData().id;\n }\n\n return this.activeRow === row.getData();\n }\n\n private calculatePageCount(): number {\n let total = this.totalRows;\n if (!total) {\n total = this.data.length;\n }\n\n return Math.ceil(total / this.pageSize);\n }\n\n private hasAggregation(columns: Column[]): boolean {\n return columns.some((column) => has(column, 'aggregator'));\n }\n\n private getColumnOptions = (): Tabulator.OptionsColumns => {\n if (!this.movableColumns) {\n return {};\n }\n\n return {\n movableColumns: true,\n columnMoved: this.handleMoveColumn,\n };\n };\n\n private handleMoveColumn = (_, components: Tabulator.ColumnComponent[]) => {\n const columns = components.map(this.findColumn).filter((c) => c);\n this.changeColumns.emit(columns);\n };\n\n private findColumn = (component: Tabulator.ColumnComponent): Column => {\n return this.columns.find((column) => {\n return (\n column.field === component.getField() &&\n column.title === component.getDefinition().title\n );\n });\n };\n\n render() {\n return (\n <Host\n class={{\n 'has-low-density': this.layout === 'lowDensity',\n }}\n >\n <div\n id=\"tabulator-container\"\n class={{\n 'has-pagination': this.totalRows > this.pageSize,\n 'has-aggregation': this.hasAggregation(this.columns),\n 'has-movable-columns': this.movableColumns,\n 'has-rowselector': this.selectable,\n 'has-selection': this.tableSelection?.hasSelection,\n }}\n >\n {/* Toggle style instead of removing the loader\n because removing the element will cause a rerender, breaking the\n tabulator table */}\n <div\n id=\"tabulator-loader\"\n style={{ display: this.loading ? 'flex' : 'none' }}\n >\n <limel-spinner size=\"large\" />\n </div>\n {this.renderEmptyMessage()}\n {this.renderSelectAll()}\n <div id=\"tabulator-table\" />\n </div>\n </Host>\n );\n }\n\n private renderSelectAll() {\n if (!this.selectable) {\n return;\n }\n\n const showSelectAll = !this.loading && this.tableSelection;\n\n return (\n <div\n class=\"select-all\"\n style={{ display: showSelectAll ? 'inline-block' : 'none' }}\n >\n <limel-checkbox\n onChange={this.selectAllOnChange}\n disabled={!this.data.length}\n checked={this.tableSelection?.hasSelection}\n indeterminate={\n this.tableSelection?.hasSelection &&\n this.selection?.length < this.data.length\n }\n />\n </div>\n );\n }\n\n private renderEmptyMessage() {\n const showEmptyMessage =\n !this.loading && !this.data.length && this.emptyMessage;\n\n return (\n <div\n id=\"tabulator-empty-text\"\n style={{ display: showEmptyMessage ? 'flex' : 'none' }}\n >\n <span>{this.emptyMessage}</span>\n </div>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../../src/components/table/table.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n h,\n Prop,\n Element,\n Watch,\n EventEmitter,\n Event,\n Host,\n} from '@stencil/core';\nimport TabulatorTable from 'tabulator-tables';\nimport {\n Column,\n TableParams,\n ColumnSorter,\n ColumnAggregate,\n RowData,\n} from './table.types';\nimport { ColumnDefinitionFactory, createColumnSorter } from './columns';\nimport { isEqual, has } from 'lodash-es';\nimport { ElementPool } from './element-pool';\nimport { TableSelection } from './table-selection';\nimport { mapLayout, Layout } from './layout';\n\nconst FIRST_PAGE = 1;\n\n/**\n * @exampleComponent limel-example-table\n * @exampleComponent limel-example-table-custom-components\n * @exampleComponent limel-example-table-header-menu\n * @exampleComponent limel-example-table-movable-columns\n * @exampleComponent limel-example-table-sorting-disabled\n * @exampleComponent limel-example-table-local\n * @exampleComponent limel-example-table-remote\n * @exampleComponent limel-example-table-activate-row\n * @exampleComponent limel-example-table-selectable-rows\n * @exampleComponent limel-example-table-default-sorted\n * @exampleComponent limel-example-table-layout-default\n * @exampleComponent limel-example-table-layout-stretch-last-column\n * @exampleComponent limel-example-table-layout-stretch-columns\n * @exampleComponent limel-example-table-layout-low-density\n * @exampleComponent limel-example-table-interactive-rows\n */\n@Component({\n tag: 'limel-table',\n styleUrl: 'table.scss',\n shadow: true,\n})\nexport class Table {\n /**\n * Data to be displayed in the table\n */\n @Prop()\n public data: object[] = [];\n\n /**\n * Columns used to display the data\n */\n @Prop()\n public columns: Column[] = [];\n\n /**\n * Set to either `local` or `remote` to change how the table handles the\n * loaded data. When in `local` mode, all sorting and pagination will be\n * done locally with the data given. When in `remote` mode, the consumer\n * is responsible to give the table new data when a `load` event occurs\n */\n @Prop()\n public mode: 'local' | 'remote' = 'local';\n\n /**\n * Defines the layout of the table, based on how width of the columns are calculated.\n *\n * - `default`: makes columns as wide as their contents.\n * - `stretchLastColumn`: makes columns as wide as their contents, stretch the last column to fill up the remaining table width.\n * - `stretchColumns`: stretches all columns to fill the available width when possible.\n * - `lowDensity`: makes columns as wide as their contents, and creates a low density and airy layout.\n */\n @Prop()\n public layout: Layout;\n\n /**\n * Number of rows per page\n */\n @Prop()\n public pageSize: number;\n\n /**\n * The number of total rows available for the data\n */\n @Prop()\n public totalRows: number;\n\n /**\n * The initial sorted columns\n */\n @Prop()\n public sorting: ColumnSorter[] = [];\n\n /**\n * Active row in the table\n */\n @Prop({ mutable: true })\n public activeRow: RowData;\n\n /**\n * Set to `true` to enable reordering of the columns by dragging them\n */\n @Prop()\n public movableColumns: boolean;\n\n /**\n * Set to `true` to trigger loading animation\n */\n @Prop()\n public loading: boolean = false;\n\n /**\n * The page to show\n */\n @Prop()\n public page: number = FIRST_PAGE;\n\n /**\n * Emitted when `mode` is `local` the data is sorted\n */\n @Event()\n public sort: EventEmitter<ColumnSorter[]>;\n\n /**\n * Emitted when a new page has been set\n */\n @Event()\n public changePage: EventEmitter<number>;\n\n /**\n * A message to display when the table has no data\n */\n @Prop()\n public emptyMessage: string;\n\n /**\n * Column aggregates to be displayed in the table\n */\n @Prop()\n public aggregates: ColumnAggregate[];\n\n /**\n * Enables row selection\n */\n @Prop()\n public selectable: boolean;\n\n /**\n * Selected data. Requires `selectable` to be true.\n */\n @Prop()\n public selection: object[];\n\n /**\n * Emitted when `mode` is `remote` and the table is loading new data. The\n * consumer is responsible for giving the table new data\n */\n @Event()\n public load: EventEmitter<TableParams>;\n\n /**\n * Emitted when a row is activated\n */\n @Event()\n public activate: EventEmitter<object>;\n\n /**\n * Emitted when the columns have been changed\n */\n @Event()\n public changeColumns: EventEmitter<Column[]>;\n\n /**\n * Emitted when the row selection has been changed\n */\n @Event()\n public select: EventEmitter<object[]>;\n\n /**\n * Emitted when the select all rows state is toggled\n */\n @Event()\n public selectAll: EventEmitter<boolean>;\n\n @Element()\n private host: HTMLLimelTableElement;\n\n private currentLoad: { page: number; sorters: ColumnSorter[] };\n\n private tabulator: Tabulator;\n\n private pool: ElementPool;\n private columnFactory: ColumnDefinitionFactory;\n private firstRequest: boolean;\n private currentSorting: ColumnSorter[];\n private tableSelection: TableSelection;\n private shouldSort = false;\n\n constructor() {\n this.handleDataSorting = this.handleDataSorting.bind(this);\n this.handlePageLoaded = this.handlePageLoaded.bind(this);\n this.handleRenderComplete = this.handleRenderComplete.bind(this);\n this.handleAjaxRequesting = this.handleAjaxRequesting.bind(this);\n this.requestData = this.requestData.bind(this);\n this.onClickRow = this.onClickRow.bind(this);\n this.formatRow = this.formatRow.bind(this);\n this.formatRows = this.formatRows.bind(this);\n this.updateMaxPage = this.updateMaxPage.bind(this);\n this.initTabulatorComponent = this.initTabulatorComponent.bind(this);\n this.setSelection = this.setSelection.bind(this);\n this.addColumnAggregator = this.addColumnAggregator.bind(this);\n this.pool = new ElementPool(document);\n this.columnFactory = new ColumnDefinitionFactory(this.pool);\n }\n\n public componentWillLoad() {\n this.firstRequest = this.mode === 'remote';\n this.initTableSelection();\n }\n\n public componentDidLoad() {\n this.init();\n }\n\n public disconnectedCallback() {\n this.pool.clear();\n }\n\n @Watch('totalRows')\n protected totalRowsChanged() {\n this.updateMaxPage();\n }\n\n @Watch('pageSize')\n protected pageSizeChanged() {\n this.updateMaxPage();\n }\n\n @Watch('page')\n protected pageChanged() {\n if (!this.tabulator) {\n return;\n }\n\n if (this.tabulator.getPage() === this.page) {\n return;\n }\n\n this.tabulator.setPage(this.page);\n }\n\n @Watch('activeRow')\n protected activeRowChanged() {\n if (!this.tabulator) {\n return;\n }\n\n this.formatRows();\n }\n\n @Watch('data')\n protected updateData(newData: RowData[] = [], oldData: RowData[] = []) {\n const shouldReplace = this.shouldReplaceData(newData, oldData);\n\n setTimeout(() => {\n if (!this.tabulator) {\n return;\n }\n\n if (shouldReplace) {\n this.pool.releaseAll();\n this.tabulator.replaceData(newData);\n this.setSelection();\n\n return;\n }\n\n this.tabulator.updateOrAddData(newData);\n });\n }\n\n @Watch('columns')\n protected updateColumns(newColumns: Column[], oldColumns: Column[]) {\n if (!this.tabulator) {\n return;\n }\n\n if (this.areSameColumns(newColumns, oldColumns)) {\n return;\n }\n\n const columnsInTable = this.tabulator\n .getColumns()\n .filter((c) => c.getField());\n\n const oldColumnsInTable = columnsInTable.map((c) =>\n oldColumns.find((old) => old.field === c.getField()),\n );\n\n if (this.areSameColumns(newColumns, oldColumnsInTable)) {\n return;\n }\n\n this.tabulator.setColumns(this.getColumnDefinitions());\n this.shouldSort = true;\n }\n\n @Watch('aggregates')\n protected updateAggregates(\n newAggregates: ColumnAggregate[],\n oldAggregates: ColumnAggregate[],\n ) {\n if (!this.tabulator) {\n return;\n }\n\n if (isEqual(newAggregates, oldAggregates)) {\n return;\n }\n\n if (!this.haveSameAggregateFields(newAggregates, oldAggregates)) {\n this.init();\n\n return;\n }\n\n this.tabulator.recalc();\n this.tabulator.rowManager.redraw();\n }\n\n @Watch('selection')\n protected updateSelection(newSelection: any[]) {\n if (!this.tableSelection) {\n return;\n }\n\n this.tableSelection.setSelection(newSelection);\n }\n\n @Watch('selectable')\n protected updateSelectable() {\n if (this.tableSelection && !this.selectable) {\n this.tableSelection = null;\n }\n\n this.initTableSelection();\n this.init();\n }\n\n @Watch('sorting')\n protected updateSorting(\n newValue: ColumnSorter[],\n oldValue: ColumnSorter[],\n ) {\n const newSorting = this.getColumnSorter(newValue);\n const oldSorting = this.getColumnSorter(oldValue);\n if (isEqual(newSorting, oldSorting)) {\n return;\n }\n\n this.tabulator.setSort(newSorting);\n }\n\n private shouldReplaceData(newData: RowData[], oldData: RowData[]) {\n const newIds = newData.map((item) => item.id ?? item) as Array<\n string | number\n >;\n const oldIds = oldData.map((item) => item.id ?? item) as Array<\n string | number\n >;\n\n return (\n !this.areEqualIds(newIds, oldIds) ||\n !this.isSameOrder(newIds, oldIds)\n );\n }\n\n private areEqualIds(\n newIds: Array<string | number>,\n oldIds: Array<string | number>,\n ): boolean {\n const newIdSet = new Set(newIds);\n const oldIdSet = new Set(oldIds);\n\n return (\n newIdSet.size === oldIdSet.size &&\n newIds.every((id) => oldIdSet.has(id))\n );\n }\n\n private isSameOrder(\n newIds: Array<string | number>,\n oldIds: Array<string | number>,\n ): boolean {\n return newIds.every((id, index) => id === oldIds[index]);\n }\n\n private areSameColumns(newColumns: Column[], oldColumns: Column[]) {\n return (\n newColumns.length === oldColumns.length &&\n newColumns.every((column) => oldColumns.includes(column))\n );\n }\n\n private haveSameAggregateFields(\n newAggregates: ColumnAggregate[],\n oldAggregates: ColumnAggregate[],\n ) {\n const oldAggregateFields = oldAggregates?.map((a) => a.field) || [];\n\n return (\n newAggregates?.length === oldAggregates?.length &&\n !!newAggregates?.every((a) => oldAggregateFields.includes(a.field))\n );\n }\n\n private init() {\n if (this.tabulator) {\n this.pool.releaseAll();\n this.tabulator.destroy();\n }\n\n const table: HTMLElement =\n this.host.shadowRoot.querySelector('#tabulator-table');\n this.initTabulatorComponent(table);\n }\n\n /*\n * Tabulator requires that the html element it's rendered inside\n * has a size before it's created, otherwise it doesn't consider\n * it self renderedy completely. (the callback \"renderComplete\"\n * is never run).\n *\n * @param table {HTMLElement}\n *\n */\n private initTabulatorComponent(table: HTMLElement) {\n // Some browsers do not implement the ResizeObserver API...\n // If that's the case lets just create the table no\n // matter if its rendered or not.\n if (!('ResizeObserver' in window)) {\n this.tabulator = new TabulatorTable(table, this.getOptions());\n this.setSelection();\n\n return;\n }\n\n const observer = new ResizeObserver(() => {\n requestAnimationFrame(() => {\n this.tabulator = new TabulatorTable(table, this.getOptions());\n this.setSelection();\n observer.unobserve(table);\n observer.disconnect();\n });\n });\n observer.observe(table);\n }\n\n private initTableSelection() {\n if (this.selectable) {\n this.tableSelection = new TableSelection(\n () => this.tabulator,\n this.pool,\n this.select,\n );\n this.tableSelection.setSelection(this.selection);\n }\n }\n\n private setSelection() {\n if (!(this.tabulator && this.tableSelection)) {\n return;\n }\n\n this.tableSelection.setSelection(this.selection);\n }\n\n private updateMaxPage() {\n this.tabulator?.setMaxPage(this.calculatePageCount());\n }\n\n private getOptions(): Tabulator.Options {\n const ajaxOptions = this.getAjaxOptions();\n const paginationOptions = this.getPaginationOptions();\n const columnOptions = this.getColumnOptions();\n\n return {\n data: this.data,\n layout: mapLayout(this.layout),\n columns: this.getColumnDefinitions(),\n dataSorting: this.handleDataSorting,\n pageLoaded: this.handlePageLoaded,\n renderComplete: this.handleRenderComplete,\n ...ajaxOptions,\n ...paginationOptions,\n rowClick: this.onClickRow,\n rowFormatter: this.formatRow,\n initialSort: this.getInitialSorting(),\n nestedFieldSeparator: false,\n ...columnOptions,\n };\n }\n\n private getInitialSorting(): Tabulator.Sorter[] {\n if (this.currentSorting && this.currentSorting.length) {\n return this.getColumnSorter(this.currentSorting);\n }\n\n return this.getColumnSorter(this.sorting);\n }\n\n private getColumnSorter(sorting: ColumnSorter[]): Tabulator.Sorter[] {\n return sorting.map((sorter: ColumnSorter) => {\n return {\n column: String(sorter.column.field),\n dir: sorter.direction.toLocaleLowerCase() as Tabulator.SortDirection,\n };\n });\n }\n\n private getColumnDefinitions(): Tabulator.ColumnDefinition[] {\n const columnDefinitions = this.columns\n .map(this.addColumnAggregator)\n .map(this.columnFactory.create);\n\n if (this.tableSelection) {\n return this.tableSelection.getColumnDefinitions(columnDefinitions);\n }\n\n return columnDefinitions;\n }\n\n private addColumnAggregator(column: Column<any>): Column<any> {\n if (!this.aggregates?.length || column.aggregator) {\n return column;\n }\n\n const aggregate = this.aggregates.find((a) => a.field === column.field);\n if (aggregate) {\n column.aggregator = (\n col?: Column,\n _values?: any[],\n _data?: any[],\n ) => {\n if (!col) {\n return undefined;\n }\n\n const value = this.aggregates.find(\n (a) => a.field === col.field,\n )?.value;\n\n if (col.formatter) {\n return col.formatter(value);\n }\n\n return value;\n };\n }\n\n return column;\n }\n\n private getAjaxOptions(): Tabulator.OptionsData {\n if (!this.isRemoteMode()) {\n return {};\n }\n\n // Tabulator needs a URL to be set, even though this one will never be\n // used since we have our own custom `ajaxRequestFunc`\n const remoteUrl = 'https://localhost';\n\n return {\n ajaxSorting: true,\n ajaxURL: remoteUrl,\n ajaxRequestFunc: this.requestData,\n ajaxRequesting: this.handleAjaxRequesting,\n };\n }\n\n /*\n * The ajaxRequesting callback is triggered when ever an ajax request is made.\n *\n * Tabulator is requesting data with an AJAX request even though it has been\n * given data when it was created.\n *\n * It seems unnecessary for us to emit the `load` event as well when this\n * happens, since we can just initialize the table with the data that has been\n * given to us. Therefore, we abort the request if:\n *\n * * its the first time this method is called and,\n * * data has been sent in to the component as a prop\n *\n */\n private handleAjaxRequesting() {\n const abortRequest = this.firstRequest && !!this.data?.length;\n this.firstRequest = false;\n\n if (abortRequest) {\n setTimeout(() => {\n this.updateMaxPage();\n this.tabulator.replaceData(this.data);\n });\n\n return false;\n }\n\n return true;\n }\n\n private getPaginationOptions(): Tabulator.OptionsPagination {\n if (!this.pageSize) {\n return {};\n }\n\n return {\n pagination: this.isRemoteMode() ? 'remote' : 'local',\n paginationSize: this.pageSize,\n paginationInitialPage: this.page,\n };\n }\n\n private requestData(_, __, params: any): Promise<object> {\n const sorters = params.sorters;\n const currentPage = params.page;\n\n if (this.page !== currentPage) {\n this.changePage.emit(currentPage);\n }\n\n const columnSorters = sorters.map(createColumnSorter(this.columns));\n\n const load = {\n page: currentPage,\n sorters: columnSorters,\n };\n\n // In order to make limel-table behave more like a controlled component,\n // we always return the existing data from this function, therefore\n // relying on the consumer component to handle the loading\n // state via the loading prop, if it actually decides to load new data.\n const resolveExistingData = Promise.resolve({\n last_page: this.calculatePageCount(), // eslint-disable-line camelcase\n data: this.data,\n });\n\n if (!isEqual(this.currentLoad, load)) {\n this.currentSorting = columnSorters;\n this.currentLoad = load;\n this.load.emit(load);\n }\n\n return resolveExistingData;\n }\n\n private isRemoteMode(): boolean {\n return this.mode === 'remote';\n }\n\n private handleDataSorting(sorters: Tabulator.Sorter[]): void {\n if (this.isRemoteMode()) {\n return;\n }\n\n const columnSorters = sorters.map(createColumnSorter(this.columns));\n if (columnSorters.length === 0) {\n return;\n }\n\n this.sort.emit(columnSorters);\n }\n\n private handlePageLoaded(page: number): void {\n if (this.isRemoteMode()) {\n return;\n }\n\n this.changePage.emit(page);\n }\n\n private handleRenderComplete(): void {\n if (this.tabulator && this.shouldSort) {\n this.shouldSort = false;\n this.tabulator.setSort(this.getColumnSorter(this.sorting));\n }\n }\n\n private onClickRow(_ev, row: Tabulator.RowComponent): void {\n if (typeof row.getPosition === 'undefined') {\n // Not a data row, probably a CalcComponent\n return;\n }\n\n if (this.isActiveRow(row)) {\n this.activeRow = null;\n } else {\n this.activeRow = row.getData();\n }\n\n this.activate.emit(this.activeRow);\n }\n\n private getActiveRows: () => Tabulator.RowComponent[] = () => {\n if (!this.tabulator) {\n return [];\n }\n\n return this.tabulator.getRows('active');\n };\n\n private getActiveRowsData: () => object[] = () => {\n // Note: Tabulator.getData() creates copies of each data object\n // and will break this.selection.has checks, hence why this function\n // intentionally retrieves the data using the row components\n return this.getActiveRows().map((row) => row.getData());\n };\n\n private selectAllOnChange = (ev: CustomEvent<boolean>) => {\n const selectAll = ev.detail;\n\n ev.stopPropagation();\n ev.preventDefault();\n\n const newSelection = selectAll ? this.getActiveRowsData() : [];\n this.select.emit(newSelection);\n this.tableSelection.setSelection(newSelection);\n this.selectAll.emit(selectAll);\n };\n\n private formatRows() {\n this.tabulator.getRows().forEach(this.formatRow);\n }\n\n private formatRow(row: Tabulator.RowComponent) {\n if (this.isActiveRow(row)) {\n row.getElement().classList.add('active');\n } else {\n row.getElement().classList.remove('active');\n }\n\n const interactiveFeedbackElement = row\n .getElement()\n .getElementsByClassName('interactive-feedback');\n if (interactiveFeedbackElement.length === 0) {\n const element = row.getElement().ownerDocument.createElement('div');\n element.classList.add('interactive-feedback');\n row.getElement().prepend(element);\n }\n }\n\n private isActiveRow(row: Tabulator.RowComponent) {\n if (!this.activeRow) {\n return false;\n }\n\n const activeRowId = this.activeRow.id ?? null;\n\n if (activeRowId !== null) {\n return activeRowId === row.getData().id;\n }\n\n return this.activeRow === row.getData();\n }\n\n private calculatePageCount(): number {\n let total = this.totalRows;\n if (!total) {\n total = this.data.length;\n }\n\n return Math.ceil(total / this.pageSize);\n }\n\n private hasAggregation(columns: Column[]): boolean {\n return columns.some((column) => has(column, 'aggregator'));\n }\n\n private getColumnOptions = (): Tabulator.OptionsColumns => {\n if (!this.movableColumns) {\n return {};\n }\n\n return {\n movableColumns: true,\n columnMoved: this.handleMoveColumn,\n };\n };\n\n private handleMoveColumn = (_, components: Tabulator.ColumnComponent[]) => {\n const columns = components.map(this.findColumn).filter((c) => c);\n this.changeColumns.emit(columns);\n };\n\n private findColumn = (component: Tabulator.ColumnComponent): Column => {\n return this.columns.find((column) => {\n return (\n column.field === component.getField() &&\n column.title === component.getDefinition().title\n );\n });\n };\n\n render() {\n return (\n <Host\n class={{\n 'has-low-density': this.layout === 'lowDensity',\n }}\n >\n <div\n id=\"tabulator-container\"\n class={{\n 'has-pagination': this.totalRows > this.pageSize,\n 'has-aggregation': this.hasAggregation(this.columns),\n 'has-movable-columns': this.movableColumns,\n 'has-rowselector': this.selectable,\n 'has-selection': this.tableSelection?.hasSelection,\n }}\n >\n {/* Toggle style instead of removing the loader\n because removing the element will cause a rerender, breaking the\n tabulator table */}\n <div\n id=\"tabulator-loader\"\n style={{ display: this.loading ? 'flex' : 'none' }}\n >\n <limel-spinner size=\"large\" />\n </div>\n {this.renderEmptyMessage()}\n {this.renderSelectAll()}\n <div id=\"tabulator-table\" />\n </div>\n </Host>\n );\n }\n\n private renderSelectAll() {\n if (!this.selectable) {\n return;\n }\n\n const showSelectAll = !this.loading && this.tableSelection;\n\n return (\n <div\n class=\"select-all\"\n style={{ display: showSelectAll ? 'inline-block' : 'none' }}\n >\n <limel-checkbox\n onChange={this.selectAllOnChange}\n disabled={!this.data.length}\n checked={this.tableSelection?.hasSelection}\n indeterminate={\n this.tableSelection?.hasSelection &&\n this.selection?.length < this.data.length\n }\n />\n </div>\n );\n }\n\n private renderEmptyMessage() {\n const showEmptyMessage =\n !this.loading && !this.data.length && this.emptyMessage;\n\n return (\n <div\n id=\"tabulator-empty-text\"\n style={{ display: showEmptyMessage ? 'flex' : 'none' }}\n >\n <span>{this.emptyMessage}</span>\n </div>\n );\n }\n}\n"]}
@@ -67,29 +67,42 @@
67
67
 
68
68
  blockquote {
69
69
  position: relative;
70
- font-weight: 100;
71
- font-size: 0.875rem;
72
70
  max-width: 100%;
73
- line-height: 1.4;
74
- margin: 0;
75
- padding: 0.5rem 1.25rem;
76
- border-radius: 0.05rem 0.75rem;
77
- background-color: rgb(var(--contrast-300));
71
+ margin: 0.75rem 0;
72
+ padding: 0.5rem;
73
+ border-left: 0.25rem solid rgb(var(--contrast-500));
74
+ background-color: rgb(var(--contrast-200));
78
75
  }
79
76
  blockquote:before, blockquote:after {
80
77
  position: absolute;
81
- font-size: 2.75rem;
78
+ line-height: 0;
79
+ font-size: 2rem;
82
80
  opacity: 0.4;
83
81
  }
84
82
  blockquote:before {
85
83
  content: "“";
86
- left: 0;
87
- top: -0.75rem;
84
+ left: -0.5rem;
85
+ top: 0.5rem;
88
86
  }
89
87
  blockquote:after {
90
88
  content: "”";
91
- right: 0;
92
- bottom: -2rem;
89
+ right: -0.25rem;
90
+ bottom: -0.25rem;
91
+ }
92
+ blockquote blockquote {
93
+ padding-top: 0;
94
+ padding-right: 0;
95
+ padding-bottom: 0;
96
+ padding-left: 0.25rem;
97
+ border-color: rgb(var(--contrast-700));
98
+ border-left-width: 1px;
99
+ }
100
+ blockquote blockquote:before, blockquote blockquote:after {
101
+ display: none;
102
+ }
103
+ blockquote:has(> blockquote) {
104
+ padding-left: 0.25rem;
105
+ padding-bottom: 0;
93
106
  }
94
107
 
95
108
  :host(limel-markdown.truncate-paragraphs) p {
@@ -32,7 +32,7 @@ class ImageIntersectionObserver {
32
32
  }
33
33
  }
34
34
 
35
- const markdownCss = "@charset \"UTF-8\";code{font-family:ui-monospace, \"Cascadia Code\", \"Source Code Pro\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace;font-size:0.8125rem;letter-spacing:-0.0125rem;color:rgb(var(--contrast-1300));-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;display:inline-block;border-radius:0.25rem;padding:0.03125rem 0.25rem;background-color:rgb(var(--contrast-600))}pre>code{display:block;margin:0.5rem 0;padding:0.5rem 0.75rem;overflow:auto;white-space:pre-wrap}h1{font-size:1.5rem}h2{font-size:1.25rem}h3{font-size:1.125rem}h4{font-size:1rem}h5{font-size:0.875rem}h6{font-size:0.75rem}h1,h2{margin-top:0.5rem;margin-bottom:0.5rem;letter-spacing:-0.03125rem;font-weight:500}h3,h4{margin-top:0.75rem;margin-bottom:0.25rem;font-weight:600}h5,h6{margin-top:0.5rem;margin-bottom:0.125rem;font-weight:600}h1,h2,h3,h4,h5,h6{word-break:break-word;hyphens:auto;-webkit-hyphens:auto}:not([contenteditable=true]) h1,:not([contenteditable=true]) h2,:not([contenteditable=true]) h3,:not([contenteditable=true]) h4,:not([contenteditable=true]) h5,:not([contenteditable=true]) h6{text-wrap:balance}[contenteditable=true] h1,[contenteditable=true] h2,[contenteditable=true] h3,[contenteditable=true] h4,[contenteditable=true] h5,[contenteditable=true] h6{text-wrap:initial}:host(limel-markdown.truncate-paragraphs) p{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}p,li{font-size:0.875rem;word-break:break-word}a{word-break:break-all}p{margin-top:0;margin-bottom:0.5rem}p:only-child{margin-bottom:0}a{transition:color 0.2s ease;color:var(--markdown-hyperlink-color, rgb(var(--color-blue-dark)));text-decoration:none}a:hover{color:var(--markdown-hyperlink-color--hovered, rgb(var(--color-blue-default)))}hr{margin:1.75rem 0 2rem 0;border-width:0;border-top:1px solid rgb(var(--contrast-500))}ul{list-style:none}ul li{position:relative;margin-left:0.75rem}ul li:before{content:\"\";position:absolute;left:-0.5rem;top:0.5rem;width:0.25rem;height:0.25rem;border-radius:50%;background-color:rgb(var(--contrast-700));display:block}ol{margin-top:0.25rem;padding-left:1rem}ul{margin-top:0.25rem;padding-left:0}ul ul,ul ol,ol ol,ol ul{margin-left:0}li{margin-bottom:0.25rem}:host(limel-markdown:not(.no-table-styles)) table{table-layout:auto;min-width:100%;border-collapse:collapse;border-spacing:0;background:transparent;margin:0.75rem 0}:host(limel-markdown:not(.no-table-styles)) tbody{border:1px solid rgb(var(--contrast-400));border-radius:0.25rem}:host(limel-markdown:not(.no-table-styles)) th,:host(limel-markdown:not(.no-table-styles)) td{text-align:left;vertical-align:top;transition:background-color 0.2s ease;font-size:0.875rem}:host(limel-markdown:not(.no-table-styles)) td{padding:0.5rem 0.375rem 0.75rem 0.375rem}:host(limel-markdown:not(.no-table-styles)) tr th{background-color:rgb(var(--contrast-400));padding:0.25rem 0.375rem;font-weight:normal}:host(limel-markdown:not(.no-table-styles)) tr th:only-child{text-align:center}:host(limel-markdown:not(.no-table-styles)) tbody tr:nth-child(odd) td{background-color:rgb(var(--contrast-200))}:host(limel-markdown:not(.no-table-styles)) tbody tr:hover td{background-color:rgb(var(--contrast-300))}table{display:block;box-sizing:border-box;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}blockquote{position:relative;font-weight:100;font-size:0.875rem;max-width:100%;line-height:1.4;margin:0;padding:0.5rem 1.25rem;border-radius:0.05rem 0.75rem;background-color:rgb(var(--contrast-300))}blockquote:before,blockquote:after{position:absolute;font-size:2.75rem;opacity:0.4}blockquote:before{content:\"“\";left:0;top:-0.75rem}blockquote:after{content:\"”\";right:0;bottom:-2rem}dl{display:grid;grid-template-columns:1fr 2fr;grid-template-rows:1fr;margin-bottom:2rem;border:1px solid rgb(var(--contrast-400));border-radius:0.375rem;background-color:rgb(var(--contrast-200))}dl dt,dl dd{padding:0.375rem 0.5rem;font-size:0.875rem;margin:0}dl dt:nth-of-type(even),dl dd:nth-of-type(even){background-color:rgb(var(--contrast-300))}dl dt:first-child{border-top-left-radius:0.375rem}dl dt:last-child{border-bottom-left-radius:0.375rem}dl dd:first-child{border-top-right-radius:0.375rem}dl dd:last-child{border-bottom-right-radius:0.375rem}img{max-width:100%;border-radius:0.25rem}kbd{font-family:ui-monospace, \"Cascadia Code\", \"Source Code Pro\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace;font-weight:600;color:rgb(var(--contrast-1100));background-color:rgb(var(--contrast-200));white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:normal;padding:0.125rem 0.5rem;margin:0 0.25rem;box-shadow:var(--button-shadow-normal), 0 0.03125rem 0.21875rem 0 rgba(var(--contrast-100), 0.5) inset;border-radius:0.125rem;border-style:solid;border-color:rgba(var(--contrast-600), 0.8);border-width:0 1px 0.125rem 1px}:host(limel-markdown.adjust-for-table-cell) img{max-height:1.25rem;vertical-align:middle}:host(limel-markdown.adjust-for-table-cell) p{display:inline}:host(limel-markdown.adjust-for-table-cell) h1,:host(limel-markdown.adjust-for-table-cell) h2,:host(limel-markdown.adjust-for-table-cell) h3,:host(limel-markdown.adjust-for-table-cell) h4,:host(limel-markdown.adjust-for-table-cell) h5,:host(limel-markdown.adjust-for-table-cell) h6{display:inline-block;vertical-align:bottom;font-size:0.875rem;margin:0 0.25rem 0 0;letter-spacing:normal;font-weight:500}:host(limel-markdown.adjust-for-table-cell) h1:before,:host(limel-markdown.adjust-for-table-cell) h2:before,:host(limel-markdown.adjust-for-table-cell) h3:before,:host(limel-markdown.adjust-for-table-cell) h4:before,:host(limel-markdown.adjust-for-table-cell) h5:before,:host(limel-markdown.adjust-for-table-cell) h6:before{opacity:0.6;vertical-align:middle;font-size:0.5rem;border-radius:0.25rem 0 0 0.25rem;padding:0.25rem;padding-right:2rem;margin-right:-1.75rem;background:linear-gradient(to right, rgb(var(--contrast-800), 0.6), rgb(var(--contrast-800), 0))}:host(limel-markdown.adjust-for-table-cell) h1:before{content:\"H1\"}:host(limel-markdown.adjust-for-table-cell) h2:before{content:\"H2\"}:host(limel-markdown.adjust-for-table-cell) h3:before{content:\"H3\"}:host(limel-markdown.adjust-for-table-cell) h4:before{content:\"H4\"}:host(limel-markdown.adjust-for-table-cell) h5:before{content:\"H5\"}:host(limel-markdown.adjust-for-table-cell) h6:before{content:\"H6\"}:host(limel-markdown.adjust-for-table-cell) pre{margin:0}:host(limel-markdown.adjust-for-table-cell) pre>code{padding:0.125rem;margin:0}:host(limel-markdown.adjust-for-table-cell) dl{margin:0}:host(limel-markdown.adjust-for-table-cell) dl dt,:host(limel-markdown.adjust-for-table-cell) dl dd{padding:0.00625rem 0.125rem}hr{border-top:1px solid rgb(var(--contrast-700))}.MsoNormal{margin:0}";
35
+ const markdownCss = "@charset \"UTF-8\";code{font-family:ui-monospace, \"Cascadia Code\", \"Source Code Pro\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace;font-size:0.8125rem;letter-spacing:-0.0125rem;color:rgb(var(--contrast-1300));-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;display:inline-block;border-radius:0.25rem;padding:0.03125rem 0.25rem;background-color:rgb(var(--contrast-600))}pre>code{display:block;margin:0.5rem 0;padding:0.5rem 0.75rem;overflow:auto;white-space:pre-wrap}h1{font-size:1.5rem}h2{font-size:1.25rem}h3{font-size:1.125rem}h4{font-size:1rem}h5{font-size:0.875rem}h6{font-size:0.75rem}h1,h2{margin-top:0.5rem;margin-bottom:0.5rem;letter-spacing:-0.03125rem;font-weight:500}h3,h4{margin-top:0.75rem;margin-bottom:0.25rem;font-weight:600}h5,h6{margin-top:0.5rem;margin-bottom:0.125rem;font-weight:600}h1,h2,h3,h4,h5,h6{word-break:break-word;hyphens:auto;-webkit-hyphens:auto}:not([contenteditable=true]) h1,:not([contenteditable=true]) h2,:not([contenteditable=true]) h3,:not([contenteditable=true]) h4,:not([contenteditable=true]) h5,:not([contenteditable=true]) h6{text-wrap:balance}[contenteditable=true] h1,[contenteditable=true] h2,[contenteditable=true] h3,[contenteditable=true] h4,[contenteditable=true] h5,[contenteditable=true] h6{text-wrap:initial}:host(limel-markdown.truncate-paragraphs) p{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}p,li{font-size:0.875rem;word-break:break-word}a{word-break:break-all}p{margin-top:0;margin-bottom:0.5rem}p:only-child{margin-bottom:0}a{transition:color 0.2s ease;color:var(--markdown-hyperlink-color, rgb(var(--color-blue-dark)));text-decoration:none}a:hover{color:var(--markdown-hyperlink-color--hovered, rgb(var(--color-blue-default)))}hr{margin:1.75rem 0 2rem 0;border-width:0;border-top:1px solid rgb(var(--contrast-500))}ul{list-style:none}ul li{position:relative;margin-left:0.75rem}ul li:before{content:\"\";position:absolute;left:-0.5rem;top:0.5rem;width:0.25rem;height:0.25rem;border-radius:50%;background-color:rgb(var(--contrast-700));display:block}ol{margin-top:0.25rem;padding-left:1rem}ul{margin-top:0.25rem;padding-left:0}ul ul,ul ol,ol ol,ol ul{margin-left:0}li{margin-bottom:0.25rem}:host(limel-markdown:not(.no-table-styles)) table{table-layout:auto;min-width:100%;border-collapse:collapse;border-spacing:0;background:transparent;margin:0.75rem 0}:host(limel-markdown:not(.no-table-styles)) tbody{border:1px solid rgb(var(--contrast-400));border-radius:0.25rem}:host(limel-markdown:not(.no-table-styles)) th,:host(limel-markdown:not(.no-table-styles)) td{text-align:left;vertical-align:top;transition:background-color 0.2s ease;font-size:0.875rem}:host(limel-markdown:not(.no-table-styles)) td{padding:0.5rem 0.375rem 0.75rem 0.375rem}:host(limel-markdown:not(.no-table-styles)) tr th{background-color:rgb(var(--contrast-400));padding:0.25rem 0.375rem;font-weight:normal}:host(limel-markdown:not(.no-table-styles)) tr th:only-child{text-align:center}:host(limel-markdown:not(.no-table-styles)) tbody tr:nth-child(odd) td{background-color:rgb(var(--contrast-200))}:host(limel-markdown:not(.no-table-styles)) tbody tr:hover td{background-color:rgb(var(--contrast-300))}table{display:block;box-sizing:border-box;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}blockquote{position:relative;max-width:100%;margin:0.75rem 0;padding:0.5rem;border-left:0.25rem solid rgb(var(--contrast-500));background-color:rgb(var(--contrast-200))}blockquote:before,blockquote:after{position:absolute;line-height:0;font-size:2rem;opacity:0.4}blockquote:before{content:\"“\";left:-0.5rem;top:0.5rem}blockquote:after{content:\"”\";right:-0.25rem;bottom:-0.25rem}blockquote blockquote{padding-top:0;padding-right:0;padding-bottom:0;padding-left:0.25rem;border-color:rgb(var(--contrast-700));border-left-width:1px}blockquote blockquote:before,blockquote blockquote:after{display:none}blockquote:has(>blockquote){padding-left:0.25rem;padding-bottom:0}dl{display:grid;grid-template-columns:1fr 2fr;grid-template-rows:1fr;margin-bottom:2rem;border:1px solid rgb(var(--contrast-400));border-radius:0.375rem;background-color:rgb(var(--contrast-200))}dl dt,dl dd{padding:0.375rem 0.5rem;font-size:0.875rem;margin:0}dl dt:nth-of-type(even),dl dd:nth-of-type(even){background-color:rgb(var(--contrast-300))}dl dt:first-child{border-top-left-radius:0.375rem}dl dt:last-child{border-bottom-left-radius:0.375rem}dl dd:first-child{border-top-right-radius:0.375rem}dl dd:last-child{border-bottom-right-radius:0.375rem}img{max-width:100%;border-radius:0.25rem}kbd{font-family:ui-monospace, \"Cascadia Code\", \"Source Code Pro\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace;font-weight:600;color:rgb(var(--contrast-1100));background-color:rgb(var(--contrast-200));white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:normal;padding:0.125rem 0.5rem;margin:0 0.25rem;box-shadow:var(--button-shadow-normal), 0 0.03125rem 0.21875rem 0 rgba(var(--contrast-100), 0.5) inset;border-radius:0.125rem;border-style:solid;border-color:rgba(var(--contrast-600), 0.8);border-width:0 1px 0.125rem 1px}:host(limel-markdown.adjust-for-table-cell) img{max-height:1.25rem;vertical-align:middle}:host(limel-markdown.adjust-for-table-cell) p{display:inline}:host(limel-markdown.adjust-for-table-cell) h1,:host(limel-markdown.adjust-for-table-cell) h2,:host(limel-markdown.adjust-for-table-cell) h3,:host(limel-markdown.adjust-for-table-cell) h4,:host(limel-markdown.adjust-for-table-cell) h5,:host(limel-markdown.adjust-for-table-cell) h6{display:inline-block;vertical-align:bottom;font-size:0.875rem;margin:0 0.25rem 0 0;letter-spacing:normal;font-weight:500}:host(limel-markdown.adjust-for-table-cell) h1:before,:host(limel-markdown.adjust-for-table-cell) h2:before,:host(limel-markdown.adjust-for-table-cell) h3:before,:host(limel-markdown.adjust-for-table-cell) h4:before,:host(limel-markdown.adjust-for-table-cell) h5:before,:host(limel-markdown.adjust-for-table-cell) h6:before{opacity:0.6;vertical-align:middle;font-size:0.5rem;border-radius:0.25rem 0 0 0.25rem;padding:0.25rem;padding-right:2rem;margin-right:-1.75rem;background:linear-gradient(to right, rgb(var(--contrast-800), 0.6), rgb(var(--contrast-800), 0))}:host(limel-markdown.adjust-for-table-cell) h1:before{content:\"H1\"}:host(limel-markdown.adjust-for-table-cell) h2:before{content:\"H2\"}:host(limel-markdown.adjust-for-table-cell) h3:before{content:\"H3\"}:host(limel-markdown.adjust-for-table-cell) h4:before{content:\"H4\"}:host(limel-markdown.adjust-for-table-cell) h5:before{content:\"H5\"}:host(limel-markdown.adjust-for-table-cell) h6:before{content:\"H6\"}:host(limel-markdown.adjust-for-table-cell) pre{margin:0}:host(limel-markdown.adjust-for-table-cell) pre>code{padding:0.125rem;margin:0}:host(limel-markdown.adjust-for-table-cell) dl{margin:0}:host(limel-markdown.adjust-for-table-cell) dl dt,:host(limel-markdown.adjust-for-table-cell) dl dd{padding:0.00625rem 0.125rem}*,*::before,*::after{box-sizing:border-box}* :where(:not(img,video,svg,canvas,iframe)),*::before :where(:not(img,video,svg,canvas,iframe)),*::after :where(:not(img,video,svg,canvas,iframe)){min-width:0;min-height:0}hr{border-top:1px solid rgb(var(--contrast-700))}.MsoNormal{margin:0}";
36
36
 
37
37
  const Markdown = class {
38
38
  constructor(hostRef) {
@@ -1 +1 @@
1
- {"file":"limel-markdown.entry.js","mappings":";;;;;MAAa,yBAAyB;;;;EAMlC,YAAmB,gBAA6B;IAa/B,uBAAkB,GAAG,CAClC,OAAoC;MAEpC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK;QAClB,IAAI,KAAK,CAAC,cAAc,EAAE;UACtB,MAAM,GAAG,GAAG,KAAK,CAAC,MAA0B,CAAC;UAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;UAE7C,IAAI,OAAO,EAAE;YACT,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACjC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;WACnC;UAED,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SAChC;OACJ,CAAC,CAAC;KACN,CAAC;IA5BE,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAElE,MAAM,MAAM,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG;MACf,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KAC9B,CAAC,CAAC;GACN;EAEM,UAAU;IACb,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;GAC9B;;;ACjBL,MAAM,WAAW,GAAG,qoNAAqoN;;MC8B5oN,QAAQ;;;IAgDT,8BAAyB,GAAqC,IAAI,CAAC;;qBA7BvE,YAAY,CAAC,iBAAiB;0BAMV,KAAK;;EAGtB,MAAM,WAAW;;IACpB,IAAI;MACA,IAAI,CAAC,gCAAgC,EAAE,CAAC;MAExC,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE;QAC1C,mBAAmB,EAAE,IAAI;QACzB,SAAS,EAAE,MAAA,IAAI,CAAC,SAAS,mCAAI,EAAE;QAC/B,cAAc,EAAE,IAAI,CAAC,cAAc;OACtC,CAAC,CAAC;MAEH,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;MAElC,IAAI,CAAC,8BAA8B,EAAE,CAAC;KACzC;IAAC,OAAO,KAAK,EAAE;;MAEZ,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KACxB;GACJ;EAKM,MAAM,gBAAgB;IACzB,IAAI,CAAC,WAAW,EAAE,CAAC;GACtB;EAEM,oBAAoB;IACvB,IAAI,CAAC,gCAAgC,EAAE,CAAC;GAC3C;EAEM,MAAM;IACT,OAAO;MACH,WACI,EAAE,EAAC,UAAU,EACb,GAAG,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,WAAW,GAAG,EAAoB,CAAC,GACxD;KACL,CAAC;GACL;EAEO,8BAA8B;IAClC,IAAI,IAAI,CAAC,cAAc,EAAE;MACrB,IAAI,CAAC,yBAAyB,GAAG,IAAI,yBAAyB,CAC1D,IAAI,CAAC,WAAW,CACnB,CAAC;KACL;GACJ;EAEO,gCAAgC;IACpC,IAAI,IAAI,CAAC,yBAAyB,EAAE;MAChC,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,CAAC;MAC5C,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;KACzC;GACJ;;;;;;;;;","names":[],"sources":["./src/components/markdown/image-intersection-observer.ts","./src/components/markdown/markdown.scss?tag=limel-markdown&encapsulation=shadow","./src/components/markdown/markdown.tsx"],"sourcesContent":["export class ImageIntersectionObserver {\n private observer: IntersectionObserver;\n\n /**\n * @param containerElement - The element containing images to observe.\n */\n public constructor(containerElement: HTMLElement) {\n this.observer = new IntersectionObserver(this.handleIntersection);\n\n const images = containerElement.querySelectorAll('img');\n images.forEach((img) => {\n this.observer.observe(img);\n });\n }\n\n public disconnect() {\n this.observer.disconnect();\n }\n\n private readonly handleIntersection = (\n entries: IntersectionObserverEntry[],\n ) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const img = entry.target as HTMLImageElement;\n const dataSrc = img.getAttribute('data-src');\n\n if (dataSrc) {\n img.setAttribute('src', dataSrc);\n img.removeAttribute('data-src');\n }\n\n this.observer.unobserve(img);\n }\n });\n };\n}\n","/**\n* @prop --markdown-hyperlink-color: color of text for hyperlinks. Defaults to `--color-blue-dark`;\n* @prop --markdown-hyperlink-color--hovered: color of text for hyperlinks when hovered. Defaults to `--color-blue-default`;\n*/\n\n@forward './partial-styles/pre-code';\n@forward './partial-styles/headings';\n@forward './partial-styles/body-text';\n@forward './partial-styles/lists';\n@forward './partial-styles/tables';\n@forward './partial-styles/blockquotes';\n@forward './partial-styles/definition-lists';\n@forward './partial-styles/img';\n@forward './partial-styles/kbd';\n@forward './partial-styles/_adjust-for-table-cell';\n\n// body-text\nhr {\n border-top: 1px solid rgb(var(--contrast-700));\n}\n\n.MsoNormal {\n margin: 0;\n}\n","import { Component, h, Prop, Watch } from '@stencil/core';\nimport { markdownToHTML } from './markdown-parser';\nimport { globalConfig } from '../../global/config';\nimport { CustomElementDefinition } from '../../global/shared-types/custom-element.types';\nimport { ImageIntersectionObserver } from './image-intersection-observer';\n\n/**\n * The Markdown component receives markdown syntax\n * and renders it as HTML.\n *\n * @exampleComponent limel-example-markdown-headings\n * @exampleComponent limel-example-markdown-emphasis\n * @exampleComponent limel-example-markdown-lists\n * @exampleComponent limel-example-markdown-links\n * @exampleComponent limel-example-markdown-images\n * @exampleComponent limel-example-markdown-code\n * @exampleComponent limel-example-markdown-footnotes\n * @exampleComponent limel-example-markdown-tables\n * @exampleComponent limel-example-markdown-html\n * @exampleComponent limel-example-markdown-keys\n * @exampleComponent limel-example-markdown-blockquotes\n * @exampleComponent limel-example-markdown-horizontal-rule\n * @exampleComponent limel-example-markdown-composite\n * @exampleComponent limel-example-markdown-custom-component\n */\n@Component({\n tag: 'limel-markdown',\n styleUrl: 'markdown.scss',\n shadow: true,\n})\nexport class Markdown {\n /**\n * The input text. Treated as GitHub Flavored Markdown, with the addition\n * that any included HTML will be parsed and rendered as HTML, rather than\n * as text.\n */\n @Prop()\n public value: string;\n\n /**\n * Whitelisted html elements.\n *\n * Any custom element added here will not be sanitized and thus rendered.\n * Can also be set via `limel-config`. Setting this property will override\n * the global config.\n * @alpha\n */\n @Prop()\n public whitelist?: CustomElementDefinition[] =\n globalConfig.markdownWhitelist;\n\n /**\n * Enable lazy loading for images\n */\n @Prop()\n public lazyLoadImages = false;\n\n @Watch('value')\n public async textChanged() {\n try {\n this.cleanupImageIntersectionObserver();\n\n const html = await markdownToHTML(this.value, {\n forceHardLineBreaks: true,\n whitelist: this.whitelist ?? [],\n lazyLoadImages: this.lazyLoadImages,\n });\n\n this.rootElement.innerHTML = html;\n\n this.setupImageIntersectionObserver();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n }\n\n private rootElement: HTMLDivElement;\n private imageIntersectionObserver: ImageIntersectionObserver | null = null;\n\n public async componentDidLoad() {\n this.textChanged();\n }\n\n public disconnectedCallback() {\n this.cleanupImageIntersectionObserver();\n }\n\n public render() {\n return [\n <div\n id=\"markdown\"\n ref={(el) => (this.rootElement = el as HTMLDivElement)}\n />,\n ];\n }\n\n private setupImageIntersectionObserver() {\n if (this.lazyLoadImages) {\n this.imageIntersectionObserver = new ImageIntersectionObserver(\n this.rootElement,\n );\n }\n }\n\n private cleanupImageIntersectionObserver() {\n if (this.imageIntersectionObserver) {\n this.imageIntersectionObserver.disconnect();\n this.imageIntersectionObserver = null;\n }\n }\n}\n"],"version":3}
1
+ {"file":"limel-markdown.entry.js","mappings":";;;;;MAAa,yBAAyB;;;;EAMlC,YAAmB,gBAA6B;IAa/B,uBAAkB,GAAG,CAClC,OAAoC;MAEpC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK;QAClB,IAAI,KAAK,CAAC,cAAc,EAAE;UACtB,MAAM,GAAG,GAAG,KAAK,CAAC,MAA0B,CAAC;UAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;UAE7C,IAAI,OAAO,EAAE;YACT,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACjC,GAAG,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;WACnC;UAED,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SAChC;OACJ,CAAC,CAAC;KACN,CAAC;IA5BE,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAElE,MAAM,MAAM,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG;MACf,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;KAC9B,CAAC,CAAC;GACN;EAEM,UAAU;IACb,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;GAC9B;;;ACjBL,MAAM,WAAW,GAAG,qnOAAqnO;;MC8B5nO,QAAQ;;;IAgDT,8BAAyB,GAAqC,IAAI,CAAC;;qBA7BvE,YAAY,CAAC,iBAAiB;0BAMV,KAAK;;EAGtB,MAAM,WAAW;;IACpB,IAAI;MACA,IAAI,CAAC,gCAAgC,EAAE,CAAC;MAExC,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE;QAC1C,mBAAmB,EAAE,IAAI;QACzB,SAAS,EAAE,MAAA,IAAI,CAAC,SAAS,mCAAI,EAAE;QAC/B,cAAc,EAAE,IAAI,CAAC,cAAc;OACtC,CAAC,CAAC;MAEH,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;MAElC,IAAI,CAAC,8BAA8B,EAAE,CAAC;KACzC;IAAC,OAAO,KAAK,EAAE;;MAEZ,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;KACxB;GACJ;EAKM,MAAM,gBAAgB;IACzB,IAAI,CAAC,WAAW,EAAE,CAAC;GACtB;EAEM,oBAAoB;IACvB,IAAI,CAAC,gCAAgC,EAAE,CAAC;GAC3C;EAEM,MAAM;IACT,OAAO;MACH,WACI,EAAE,EAAC,UAAU,EACb,GAAG,EAAE,CAAC,EAAE,MAAM,IAAI,CAAC,WAAW,GAAG,EAAoB,CAAC,GACxD;KACL,CAAC;GACL;EAEO,8BAA8B;IAClC,IAAI,IAAI,CAAC,cAAc,EAAE;MACrB,IAAI,CAAC,yBAAyB,GAAG,IAAI,yBAAyB,CAC1D,IAAI,CAAC,WAAW,CACnB,CAAC;KACL;GACJ;EAEO,gCAAgC;IACpC,IAAI,IAAI,CAAC,yBAAyB,EAAE;MAChC,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,CAAC;MAC5C,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;KACzC;GACJ;;;;;;;;;","names":[],"sources":["./src/components/markdown/image-intersection-observer.ts","./src/components/markdown/markdown.scss?tag=limel-markdown&encapsulation=shadow","./src/components/markdown/markdown.tsx"],"sourcesContent":["export class ImageIntersectionObserver {\n private observer: IntersectionObserver;\n\n /**\n * @param containerElement - The element containing images to observe.\n */\n public constructor(containerElement: HTMLElement) {\n this.observer = new IntersectionObserver(this.handleIntersection);\n\n const images = containerElement.querySelectorAll('img');\n images.forEach((img) => {\n this.observer.observe(img);\n });\n }\n\n public disconnect() {\n this.observer.disconnect();\n }\n\n private readonly handleIntersection = (\n entries: IntersectionObserverEntry[],\n ) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n const img = entry.target as HTMLImageElement;\n const dataSrc = img.getAttribute('data-src');\n\n if (dataSrc) {\n img.setAttribute('src', dataSrc);\n img.removeAttribute('data-src');\n }\n\n this.observer.unobserve(img);\n }\n });\n };\n}\n","/**\n* @prop --markdown-hyperlink-color: color of text for hyperlinks. Defaults to `--color-blue-dark`;\n* @prop --markdown-hyperlink-color--hovered: color of text for hyperlinks when hovered. Defaults to `--color-blue-default`;\n*/\n\n@forward './partial-styles/pre-code';\n@forward './partial-styles/headings';\n@forward './partial-styles/body-text';\n@forward './partial-styles/lists';\n@forward './partial-styles/tables';\n@forward './partial-styles/blockquotes';\n@forward './partial-styles/definition-lists';\n@forward './partial-styles/img';\n@forward './partial-styles/kbd';\n@forward './partial-styles/_adjust-for-table-cell';\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n\n & :where(:not(img, video, svg, canvas, iframe)) {\n min-width: 0;\n min-height: 0;\n }\n}\n\n// body-text\nhr {\n border-top: 1px solid rgb(var(--contrast-700));\n}\n\n.MsoNormal {\n margin: 0;\n}\n","import { Component, h, Prop, Watch } from '@stencil/core';\nimport { markdownToHTML } from './markdown-parser';\nimport { globalConfig } from '../../global/config';\nimport { CustomElementDefinition } from '../../global/shared-types/custom-element.types';\nimport { ImageIntersectionObserver } from './image-intersection-observer';\n\n/**\n * The Markdown component receives markdown syntax\n * and renders it as HTML.\n *\n * @exampleComponent limel-example-markdown-headings\n * @exampleComponent limel-example-markdown-emphasis\n * @exampleComponent limel-example-markdown-lists\n * @exampleComponent limel-example-markdown-links\n * @exampleComponent limel-example-markdown-images\n * @exampleComponent limel-example-markdown-code\n * @exampleComponent limel-example-markdown-footnotes\n * @exampleComponent limel-example-markdown-tables\n * @exampleComponent limel-example-markdown-html\n * @exampleComponent limel-example-markdown-keys\n * @exampleComponent limel-example-markdown-blockquotes\n * @exampleComponent limel-example-markdown-horizontal-rule\n * @exampleComponent limel-example-markdown-composite\n * @exampleComponent limel-example-markdown-custom-component\n */\n@Component({\n tag: 'limel-markdown',\n styleUrl: 'markdown.scss',\n shadow: true,\n})\nexport class Markdown {\n /**\n * The input text. Treated as GitHub Flavored Markdown, with the addition\n * that any included HTML will be parsed and rendered as HTML, rather than\n * as text.\n */\n @Prop()\n public value: string;\n\n /**\n * Whitelisted html elements.\n *\n * Any custom element added here will not be sanitized and thus rendered.\n * Can also be set via `limel-config`. Setting this property will override\n * the global config.\n * @alpha\n */\n @Prop()\n public whitelist?: CustomElementDefinition[] =\n globalConfig.markdownWhitelist;\n\n /**\n * Enable lazy loading for images\n */\n @Prop()\n public lazyLoadImages = false;\n\n @Watch('value')\n public async textChanged() {\n try {\n this.cleanupImageIntersectionObserver();\n\n const html = await markdownToHTML(this.value, {\n forceHardLineBreaks: true,\n whitelist: this.whitelist ?? [],\n lazyLoadImages: this.lazyLoadImages,\n });\n\n this.rootElement.innerHTML = html;\n\n this.setupImageIntersectionObserver();\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n }\n\n private rootElement: HTMLDivElement;\n private imageIntersectionObserver: ImageIntersectionObserver | null = null;\n\n public async componentDidLoad() {\n this.textChanged();\n }\n\n public disconnectedCallback() {\n this.cleanupImageIntersectionObserver();\n }\n\n public render() {\n return [\n <div\n id=\"markdown\"\n ref={(el) => (this.rootElement = el as HTMLDivElement)}\n />,\n ];\n }\n\n private setupImageIntersectionObserver() {\n if (this.lazyLoadImages) {\n this.imageIntersectionObserver = new ImageIntersectionObserver(\n this.rootElement,\n );\n }\n }\n\n private cleanupImageIntersectionObserver() {\n if (this.imageIntersectionObserver) {\n this.imageIntersectionObserver.disconnect();\n this.imageIntersectionObserver = null;\n }\n }\n}\n"],"version":3}
@@ -28571,7 +28571,7 @@ function areFrequencyMapsEqual(map1, map2) {
28571
28571
  return true;
28572
28572
  }
28573
28573
 
28574
- const prosemirrorAdapterCss = "@charset \"UTF-8\";:host{--mdc-theme-primary:var(\n --lime-primary-color,\n rgb(var(--color-teal-default))\n );--mdc-theme-secondary:var(\n --lime-secondary-color,\n rgb(var(--contrast-1100))\n );--mdc-theme-on-primary:var(\n --lime-on-primary-color,\n rgb(var(--contrast-100))\n );--mdc-theme-on-secondary:var(\n --lime-on-secondary-color,\n rgb(var(--contrast-100))\n );--mdc-theme-text-disabled-on-background:var(\n --lime-text-disabled-on-background-color,\n rgba(var(--contrast-1700), 0.38)\n );--mdc-theme-text-primary-on-background:var(\n --lime-text-primary-on-background-color,\n rgba(var(--contrast-1700), 0.87)\n );--mdc-theme-text-secondary-on-background:var(\n --lime-text-secondary-on-background-color,\n rgba(var(--contrast-1700), 0.54)\n );--mdc-theme-error:var(\n --lime-error-background-color,\n rgb(var(--color-red-dark))\n );--lime-error-text-color:rgb(var(--color-red-darker));--mdc-theme-surface:var(\n --lime-surface-background-color,\n rgb(var(--contrast-100))\n );--mdc-theme-on-surface:var(\n --lime-on-surface-color,\n rgb(var(--contrast-1500))\n )}blockquote{position:relative;font-weight:100;font-size:0.875rem;max-width:100%;line-height:1.4;margin:0;padding:0.5rem 1.25rem;border-radius:0.05rem 0.75rem;background-color:rgb(var(--contrast-300))}blockquote:before,blockquote:after{position:absolute;font-size:2.75rem;opacity:0.4}blockquote:before{content:\"“\";left:0;top:-0.75rem}blockquote:after{content:\"”\";right:0;bottom:-2rem}:host(limel-markdown.truncate-paragraphs) p{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}p,li{font-size:0.875rem;word-break:break-word}a{word-break:break-all}p{margin-top:0;margin-bottom:0.5rem}p:only-child{margin-bottom:0}a{transition:color 0.2s ease;color:var(--markdown-hyperlink-color, rgb(var(--color-blue-dark)));text-decoration:none}a:hover{color:var(--markdown-hyperlink-color--hovered, rgb(var(--color-blue-default)))}hr{margin:1.75rem 0 2rem 0;border-width:0;border-top:1px solid rgb(var(--contrast-500))}dl{display:grid;grid-template-columns:1fr 2fr;grid-template-rows:1fr;margin-bottom:2rem;border:1px solid rgb(var(--contrast-400));border-radius:0.375rem;background-color:rgb(var(--contrast-200))}dl dt,dl dd{padding:0.375rem 0.5rem;font-size:0.875rem;margin:0}dl dt:nth-of-type(even),dl dd:nth-of-type(even){background-color:rgb(var(--contrast-300))}dl dt:first-child{border-top-left-radius:0.375rem}dl dt:last-child{border-bottom-left-radius:0.375rem}dl dd:first-child{border-top-right-radius:0.375rem}dl dd:last-child{border-bottom-right-radius:0.375rem}h1{font-size:1.5rem}h2{font-size:1.25rem}h3{font-size:1.125rem}h4{font-size:1rem}h5{font-size:0.875rem}h6{font-size:0.75rem}h1,h2{margin-top:0.5rem;margin-bottom:0.5rem;letter-spacing:-0.03125rem;font-weight:500}h3,h4{margin-top:0.75rem;margin-bottom:0.25rem;font-weight:600}h5,h6{margin-top:0.5rem;margin-bottom:0.125rem;font-weight:600}h1,h2,h3,h4,h5,h6{word-break:break-word;hyphens:auto;-webkit-hyphens:auto}:not([contenteditable=true]) h1,:not([contenteditable=true]) h2,:not([contenteditable=true]) h3,:not([contenteditable=true]) h4,:not([contenteditable=true]) h5,:not([contenteditable=true]) h6{text-wrap:balance}[contenteditable=true] h1,[contenteditable=true] h2,[contenteditable=true] h3,[contenteditable=true] h4,[contenteditable=true] h5,[contenteditable=true] h6{text-wrap:initial}ul{list-style:none}ul li{position:relative;margin-left:0.75rem}ul li:before{content:\"\";position:absolute;left:-0.5rem;top:0.5rem;width:0.25rem;height:0.25rem;border-radius:50%;background-color:rgb(var(--contrast-700));display:block}ol{margin-top:0.25rem;padding-left:1rem}ul{margin-top:0.25rem;padding-left:0}ul ul,ul ol,ol ol,ol ul{margin-left:0}li{margin-bottom:0.25rem}code{font-family:ui-monospace, \"Cascadia Code\", \"Source Code Pro\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace;font-size:0.8125rem;letter-spacing:-0.0125rem;color:rgb(var(--contrast-1300));-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;display:inline-block;border-radius:0.25rem;padding:0.03125rem 0.25rem;background-color:rgb(var(--contrast-600))}pre>code{display:block;margin:0.5rem 0;padding:0.5rem 0.75rem;overflow:auto;white-space:pre-wrap}:host(limel-markdown:not(.no-table-styles)) table{table-layout:auto;min-width:100%;border-collapse:collapse;border-spacing:0;background:transparent;margin:0.75rem 0}:host(limel-markdown:not(.no-table-styles)) tbody{border:1px solid rgb(var(--contrast-400));border-radius:0.25rem}:host(limel-markdown:not(.no-table-styles)) th,:host(limel-markdown:not(.no-table-styles)) td{text-align:left;vertical-align:top;transition:background-color 0.2s ease;font-size:0.875rem}:host(limel-markdown:not(.no-table-styles)) td{padding:0.5rem 0.375rem 0.75rem 0.375rem}:host(limel-markdown:not(.no-table-styles)) tr th{background-color:rgb(var(--contrast-400));padding:0.25rem 0.375rem;font-weight:normal}:host(limel-markdown:not(.no-table-styles)) tr th:only-child{text-align:center}:host(limel-markdown:not(.no-table-styles)) tbody tr:nth-child(odd) td{background-color:rgb(var(--contrast-200))}:host(limel-markdown:not(.no-table-styles)) tbody tr:hover td{background-color:rgb(var(--contrast-300))}table{display:block;box-sizing:border-box;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}kbd{font-family:ui-monospace, \"Cascadia Code\", \"Source Code Pro\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace;font-weight:600;color:rgb(var(--contrast-1100));background-color:rgb(var(--contrast-200));white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:normal;padding:0.125rem 0.5rem;margin:0 0.25rem;box-shadow:var(--button-shadow-normal), 0 0.03125rem 0.21875rem 0 rgba(var(--contrast-100), 0.5) inset;border-radius:0.125rem;border-style:solid;border-color:rgba(var(--contrast-600), 0.8);border-width:0 1px 0.125rem 1px}img{max-width:100%;border-radius:0.25rem}.image-wrapper{display:inline-flex;position:relative}.image-wrapper limel-linear-progress{position:absolute;inset:0.25rem auto auto 0.25rem;width:calc(100% - 0.5rem)}.image-wrapper img{transition:opacity 0.2s ease, scale 0.6s ease}.image-wrapper.state-failed,.image-wrapper.state-loading{background:url(\"data:image/svg+xml;charset=utf-8, <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8' style='fill-rule:evenodd;'><path fill='rgba(186,186,192,0.16)' d='M0 0h4v4H0zM4 4h4v4H4z'/></svg>\");background-size:0.5rem}.image-wrapper.state-failed img,.image-wrapper.state-loading img{opacity:0.3;scale:0.98}.image-wrapper::before{pointer-events:none;content:\"\";display:block;position:absolute;inset:0;border-radius:0.25rem;transition:border-color 0.4s ease, opacity 0.2s ease, box-shadow 0.6s ease;border:1px dashed transparent;opacity:0.2}.image-wrapper.state-failed img{filter:grayscale(0.8)}.image-wrapper.state-failed:before{opacity:0.8;box-shadow:var(--shadow-error-state)}.image-wrapper:hover::before{opacity:0.8;box-shadow:var(--shadow-depth-8)}.image-wrapper:has(.resize-handle[aria-grabbed=true])::before{border-color:var(--mdc-theme-primary);opacity:0.8;box-shadow:var(--shadow-depth-16), var(--shadow-depth-8)}.resize-handle{transition:color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);cursor:pointer;color:var(--mdc-theme-on-surface);background-color:rgb(var(--contrast-900));box-shadow:var(--button-shadow-normal);cursor:nwse-resize;position:absolute;display:flex;align-items:center;justify-content:center;width:0.5rem;height:0.5rem;border-radius:50%;opacity:0.6}.resize-handle:hover,.resize-handle:focus,.resize-handle:focus-visible{will-change:color, background-color, box-shadow, transform}.resize-handle:hover{transform:translate3d(0, -0.04rem, 0);color:var(--mdc-theme-on-surface);background-color:var(--lime-elevated-surface-background-color);box-shadow:var(--button-shadow-hovered)}.resize-handle:active{--limel-clickable-transform-timing-function:cubic-bezier(\n 0.83,\n -0.15,\n 0.49,\n 1.16\n );transform:translate3d(0, 0.05rem, 0);box-shadow:var(--button-shadow-pressed)}.resize-handle:hover,.resize-handle:active{--limel-clickable-transition-speed:0.2s;--limel-clickable-transform-speed:0.16s}.resize-handle:focus{outline:none}.resize-handle:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}.resize-handle.top-left{left:-0.25rem;top:-0.25rem;translate:-50%, -50%}.resize-handle.bottom-right{right:-0.25rem;bottom:-0.25rem;translate:50%, 50%}.resize-wrapper:has(.resize-handle[aria-grabbed=true]) .resize-handle,.resize-wrapper:hover .resize-handle,.resize-handle:hover,.resize-handle:focus-visible{opacity:1}.resize-handle[aria-grabbed=true],.resize-handle:hover,.resize-handle:focus-visible{opacity:1;background-color:var(--mdc-theme-primary)}.resize-handle:hover,.resize-handle[aria-grabbed=true]{scale:1.4}.resize-handle:hover:before,.resize-handle[aria-grabbed=true]:before{background-color:rgb(var(--color-white))}.resize-handle:before{content:\"\";display:block;position:absolute;inset:0;margin:auto;border-radius:50%;width:0.25rem;height:0.25rem;background-color:rgb(var(--contrast-100))}:host(limel-prosemirror-adapter){display:flex;flex-direction:column}:host(limel-prosemirror-adapter) .toolbar{order:1}:host(limel-prosemirror-adapter) div#editor{order:2;height:100%;flex-grow:1}:host(limel-prosemirror-adapter) div[contenteditable=true]{height:100%}*{box-sizing:border-box}:host(limel-prosemirror-adapter:hover) .toolbar,:host(limel-prosemirror-adapter:focus-within) .toolbar{will-change:grid-template-rows}:host(limel-prosemirror-adapter:hover) limel-action-bar,:host(limel-prosemirror-adapter:focus-within) limel-action-bar{will-change:opacity, padding}.ProseMirror-menubar-wrapper{display:grid;grid-template-rows:auto 1fr}.ProseMirror-textblock-dropdown{min-width:3em}.ProseMirror-tooltip .ProseMirror-menu{width:-webkit-fit-content;width:fit-content;white-space:pre}.toolbar{--action-bar-border-radius:0.25rem;border-radius:var(--action-bar-border-radius);flex-shrink:0;position:sticky;z-index:1;top:0;width:100%;display:grid;grid-template-rows:var(--limel-prosemirror-adapter-toolbar-grid-template-rows);transition-property:grid-template-rows;transition-duration:var(--limel-prosemirror-adapter-toolbar-grid-template-rows-transition-duration);transition-timing-function:var(--limel-prosemirror-adapter-toolbar-transition-timing-function);background-color:rgba(var(--contrast-200), 0.5);backdrop-filter:blur(0.5rem);-webkit-backdrop-filter:blur(0.5rem)}limel-action-bar{min-width:0;transition-property:padding, opacity;transition-duration:var(--limel-prosemirror-adapter-toolbar-grid-template-rows-transition-duration);transition-timing-function:var(--limel-prosemirror-adapter-toolbar-transition-timing-function);opacity:var(--limel-prosemirror-adapter-toolbar-opacity);padding:var(--limel-prosemirror-adapter-action-bar-padding-top-bottom, 0.125rem) 0.25rem;background-color:transparent;overflow:hidden}.ProseMirror{position:relative;word-wrap:break-word;white-space:pre-wrap;white-space:break-spaces;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;font-feature-settings:\"liga\" 0;padding:var(--limel-text-editor-padding)}.ProseMirror [draggable][contenteditable=false]{user-select:text}.ProseMirror:focus-visible{outline:none}.ProseMirror-hideselection{caret-color:transparent}.ProseMirror-hideselection *::selection{background:transparent}.ProseMirror-hideselection *::-moz-selection{background:transparent}.ProseMirror-selectednode{outline:0.125rem solid rgb(var(--color-sky-light))}li.ProseMirror-selectednode{outline:none}li.ProseMirror-selectednode:after{content:\"\";position:absolute;left:-2rem;right:-0.125rem;top:-0.125rem;bottom:-0.125rem;border:0.125rem solid rgb(var(--color-sky-light));pointer-events:none}img.ProseMirror-separator{display:inline !important;border:none !important;margin:0 !important}limel-portal{width:25rem}";
28574
+ const prosemirrorAdapterCss = "@charset \"UTF-8\";:host{--mdc-theme-primary:var(\n --lime-primary-color,\n rgb(var(--color-teal-default))\n );--mdc-theme-secondary:var(\n --lime-secondary-color,\n rgb(var(--contrast-1100))\n );--mdc-theme-on-primary:var(\n --lime-on-primary-color,\n rgb(var(--contrast-100))\n );--mdc-theme-on-secondary:var(\n --lime-on-secondary-color,\n rgb(var(--contrast-100))\n );--mdc-theme-text-disabled-on-background:var(\n --lime-text-disabled-on-background-color,\n rgba(var(--contrast-1700), 0.38)\n );--mdc-theme-text-primary-on-background:var(\n --lime-text-primary-on-background-color,\n rgba(var(--contrast-1700), 0.87)\n );--mdc-theme-text-secondary-on-background:var(\n --lime-text-secondary-on-background-color,\n rgba(var(--contrast-1700), 0.54)\n );--mdc-theme-error:var(\n --lime-error-background-color,\n rgb(var(--color-red-dark))\n );--lime-error-text-color:rgb(var(--color-red-darker));--mdc-theme-surface:var(\n --lime-surface-background-color,\n rgb(var(--contrast-100))\n );--mdc-theme-on-surface:var(\n --lime-on-surface-color,\n rgb(var(--contrast-1500))\n )}blockquote{position:relative;max-width:100%;margin:0.75rem 0;padding:0.5rem;border-left:0.25rem solid rgb(var(--contrast-500));background-color:rgb(var(--contrast-200))}blockquote:before,blockquote:after{position:absolute;line-height:0;font-size:2rem;opacity:0.4}blockquote:before{content:\"“\";left:-0.5rem;top:0.5rem}blockquote:after{content:\"”\";right:-0.25rem;bottom:-0.25rem}blockquote blockquote{padding-top:0;padding-right:0;padding-bottom:0;padding-left:0.25rem;border-color:rgb(var(--contrast-700));border-left-width:1px}blockquote blockquote:before,blockquote blockquote:after{display:none}blockquote:has(>blockquote){padding-left:0.25rem;padding-bottom:0}:host(limel-markdown.truncate-paragraphs) p{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}p,li{font-size:0.875rem;word-break:break-word}a{word-break:break-all}p{margin-top:0;margin-bottom:0.5rem}p:only-child{margin-bottom:0}a{transition:color 0.2s ease;color:var(--markdown-hyperlink-color, rgb(var(--color-blue-dark)));text-decoration:none}a:hover{color:var(--markdown-hyperlink-color--hovered, rgb(var(--color-blue-default)))}hr{margin:1.75rem 0 2rem 0;border-width:0;border-top:1px solid rgb(var(--contrast-500))}dl{display:grid;grid-template-columns:1fr 2fr;grid-template-rows:1fr;margin-bottom:2rem;border:1px solid rgb(var(--contrast-400));border-radius:0.375rem;background-color:rgb(var(--contrast-200))}dl dt,dl dd{padding:0.375rem 0.5rem;font-size:0.875rem;margin:0}dl dt:nth-of-type(even),dl dd:nth-of-type(even){background-color:rgb(var(--contrast-300))}dl dt:first-child{border-top-left-radius:0.375rem}dl dt:last-child{border-bottom-left-radius:0.375rem}dl dd:first-child{border-top-right-radius:0.375rem}dl dd:last-child{border-bottom-right-radius:0.375rem}h1{font-size:1.5rem}h2{font-size:1.25rem}h3{font-size:1.125rem}h4{font-size:1rem}h5{font-size:0.875rem}h6{font-size:0.75rem}h1,h2{margin-top:0.5rem;margin-bottom:0.5rem;letter-spacing:-0.03125rem;font-weight:500}h3,h4{margin-top:0.75rem;margin-bottom:0.25rem;font-weight:600}h5,h6{margin-top:0.5rem;margin-bottom:0.125rem;font-weight:600}h1,h2,h3,h4,h5,h6{word-break:break-word;hyphens:auto;-webkit-hyphens:auto}:not([contenteditable=true]) h1,:not([contenteditable=true]) h2,:not([contenteditable=true]) h3,:not([contenteditable=true]) h4,:not([contenteditable=true]) h5,:not([contenteditable=true]) h6{text-wrap:balance}[contenteditable=true] h1,[contenteditable=true] h2,[contenteditable=true] h3,[contenteditable=true] h4,[contenteditable=true] h5,[contenteditable=true] h6{text-wrap:initial}ul{list-style:none}ul li{position:relative;margin-left:0.75rem}ul li:before{content:\"\";position:absolute;left:-0.5rem;top:0.5rem;width:0.25rem;height:0.25rem;border-radius:50%;background-color:rgb(var(--contrast-700));display:block}ol{margin-top:0.25rem;padding-left:1rem}ul{margin-top:0.25rem;padding-left:0}ul ul,ul ol,ol ol,ol ul{margin-left:0}li{margin-bottom:0.25rem}code{font-family:ui-monospace, \"Cascadia Code\", \"Source Code Pro\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace;font-size:0.8125rem;letter-spacing:-0.0125rem;color:rgb(var(--contrast-1300));-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;display:inline-block;border-radius:0.25rem;padding:0.03125rem 0.25rem;background-color:rgb(var(--contrast-600))}pre>code{display:block;margin:0.5rem 0;padding:0.5rem 0.75rem;overflow:auto;white-space:pre-wrap}:host(limel-markdown:not(.no-table-styles)) table{table-layout:auto;min-width:100%;border-collapse:collapse;border-spacing:0;background:transparent;margin:0.75rem 0}:host(limel-markdown:not(.no-table-styles)) tbody{border:1px solid rgb(var(--contrast-400));border-radius:0.25rem}:host(limel-markdown:not(.no-table-styles)) th,:host(limel-markdown:not(.no-table-styles)) td{text-align:left;vertical-align:top;transition:background-color 0.2s ease;font-size:0.875rem}:host(limel-markdown:not(.no-table-styles)) td{padding:0.5rem 0.375rem 0.75rem 0.375rem}:host(limel-markdown:not(.no-table-styles)) tr th{background-color:rgb(var(--contrast-400));padding:0.25rem 0.375rem;font-weight:normal}:host(limel-markdown:not(.no-table-styles)) tr th:only-child{text-align:center}:host(limel-markdown:not(.no-table-styles)) tbody tr:nth-child(odd) td{background-color:rgb(var(--contrast-200))}:host(limel-markdown:not(.no-table-styles)) tbody tr:hover td{background-color:rgb(var(--contrast-300))}table{display:block;box-sizing:border-box;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}kbd{font-family:ui-monospace, \"Cascadia Code\", \"Source Code Pro\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace;font-weight:600;color:rgb(var(--contrast-1100));background-color:rgb(var(--contrast-200));white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:normal;padding:0.125rem 0.5rem;margin:0 0.25rem;box-shadow:var(--button-shadow-normal), 0 0.03125rem 0.21875rem 0 rgba(var(--contrast-100), 0.5) inset;border-radius:0.125rem;border-style:solid;border-color:rgba(var(--contrast-600), 0.8);border-width:0 1px 0.125rem 1px}img{max-width:100%;border-radius:0.25rem}.image-wrapper{display:inline-flex;position:relative}.image-wrapper limel-linear-progress{position:absolute;inset:0.25rem auto auto 0.25rem;width:calc(100% - 0.5rem)}.image-wrapper img{transition:opacity 0.2s ease, scale 0.6s ease}.image-wrapper.state-failed,.image-wrapper.state-loading{background:url(\"data:image/svg+xml;charset=utf-8, <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8' style='fill-rule:evenodd;'><path fill='rgba(186,186,192,0.16)' d='M0 0h4v4H0zM4 4h4v4H4z'/></svg>\");background-size:0.5rem}.image-wrapper.state-failed img,.image-wrapper.state-loading img{opacity:0.3;scale:0.98}.image-wrapper::before{pointer-events:none;content:\"\";display:block;position:absolute;inset:0;border-radius:0.25rem;transition:border-color 0.4s ease, opacity 0.2s ease, box-shadow 0.6s ease;border:1px dashed transparent;opacity:0.2}.image-wrapper.state-failed img{filter:grayscale(0.8)}.image-wrapper.state-failed:before{opacity:0.8;box-shadow:var(--shadow-error-state)}.image-wrapper:hover::before{opacity:0.8;box-shadow:var(--shadow-depth-8)}.image-wrapper:has(.resize-handle[aria-grabbed=true])::before{border-color:var(--mdc-theme-primary);opacity:0.8;box-shadow:var(--shadow-depth-16), var(--shadow-depth-8)}.resize-handle{transition:color var(--limel-clickable-transition-speed, 0.4s) ease, background-color var(--limel-clickable-transition-speed, 0.4s) ease, box-shadow var(--limel-clickable-transform-speed, 0.4s) ease, transform var(--limel-clickable-transform-speed, 0.4s) var(--limel-clickable-transform-timing-function, ease);cursor:pointer;color:var(--mdc-theme-on-surface);background-color:rgb(var(--contrast-900));box-shadow:var(--button-shadow-normal);cursor:nwse-resize;position:absolute;display:flex;align-items:center;justify-content:center;width:0.5rem;height:0.5rem;border-radius:50%;opacity:0.6}.resize-handle:hover,.resize-handle:focus,.resize-handle:focus-visible{will-change:color, background-color, box-shadow, transform}.resize-handle:hover{transform:translate3d(0, -0.04rem, 0);color:var(--mdc-theme-on-surface);background-color:var(--lime-elevated-surface-background-color);box-shadow:var(--button-shadow-hovered)}.resize-handle:active{--limel-clickable-transform-timing-function:cubic-bezier(\n 0.83,\n -0.15,\n 0.49,\n 1.16\n );transform:translate3d(0, 0.05rem, 0);box-shadow:var(--button-shadow-pressed)}.resize-handle:hover,.resize-handle:active{--limel-clickable-transition-speed:0.2s;--limel-clickable-transform-speed:0.16s}.resize-handle:focus{outline:none}.resize-handle:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}.resize-handle.top-left{left:-0.25rem;top:-0.25rem;translate:-50%, -50%}.resize-handle.bottom-right{right:-0.25rem;bottom:-0.25rem;translate:50%, 50%}.resize-wrapper:has(.resize-handle[aria-grabbed=true]) .resize-handle,.resize-wrapper:hover .resize-handle,.resize-handle:hover,.resize-handle:focus-visible{opacity:1}.resize-handle[aria-grabbed=true],.resize-handle:hover,.resize-handle:focus-visible{opacity:1;background-color:var(--mdc-theme-primary)}.resize-handle:hover,.resize-handle[aria-grabbed=true]{scale:1.4}.resize-handle:hover:before,.resize-handle[aria-grabbed=true]:before{background-color:rgb(var(--color-white))}.resize-handle:before{content:\"\";display:block;position:absolute;inset:0;margin:auto;border-radius:50%;width:0.25rem;height:0.25rem;background-color:rgb(var(--contrast-100))}:host(limel-prosemirror-adapter){display:flex;flex-direction:column}:host(limel-prosemirror-adapter) .toolbar{order:1}:host(limel-prosemirror-adapter) div#editor{order:2;height:100%;flex-grow:1}:host(limel-prosemirror-adapter) div[contenteditable=true]{height:100%}*{box-sizing:border-box}:host(limel-prosemirror-adapter:hover) .toolbar,:host(limel-prosemirror-adapter:focus-within) .toolbar{will-change:grid-template-rows}:host(limel-prosemirror-adapter:hover) limel-action-bar,:host(limel-prosemirror-adapter:focus-within) limel-action-bar{will-change:opacity, padding}.ProseMirror-menubar-wrapper{display:grid;grid-template-rows:auto 1fr}.ProseMirror-textblock-dropdown{min-width:3em}.ProseMirror-tooltip .ProseMirror-menu{width:-webkit-fit-content;width:fit-content;white-space:pre}.toolbar{--action-bar-border-radius:0.25rem;border-radius:var(--action-bar-border-radius);flex-shrink:0;position:sticky;z-index:1;top:0;width:100%;display:grid;grid-template-rows:var(--limel-prosemirror-adapter-toolbar-grid-template-rows);transition-property:grid-template-rows;transition-duration:var(--limel-prosemirror-adapter-toolbar-grid-template-rows-transition-duration);transition-timing-function:var(--limel-prosemirror-adapter-toolbar-transition-timing-function);background-color:rgba(var(--contrast-200), 0.5);backdrop-filter:blur(0.5rem);-webkit-backdrop-filter:blur(0.5rem)}limel-action-bar{min-width:0;transition-property:padding, opacity;transition-duration:var(--limel-prosemirror-adapter-toolbar-grid-template-rows-transition-duration);transition-timing-function:var(--limel-prosemirror-adapter-toolbar-transition-timing-function);opacity:var(--limel-prosemirror-adapter-toolbar-opacity);padding:var(--limel-prosemirror-adapter-action-bar-padding-top-bottom, 0.125rem) 0.25rem;background-color:transparent;overflow:hidden}.ProseMirror{position:relative;word-wrap:break-word;white-space:pre-wrap;white-space:break-spaces;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;font-feature-settings:\"liga\" 0;padding:var(--limel-text-editor-padding)}.ProseMirror [draggable][contenteditable=false]{user-select:text}.ProseMirror:focus-visible{outline:none}.ProseMirror-hideselection{caret-color:transparent}.ProseMirror-hideselection *::selection{background:transparent}.ProseMirror-hideselection *::-moz-selection{background:transparent}.ProseMirror-selectednode{outline:0.125rem solid rgb(var(--color-sky-light))}li.ProseMirror-selectednode{outline:none}li.ProseMirror-selectednode:after{content:\"\";position:absolute;left:-2rem;right:-0.125rem;top:-0.125rem;bottom:-0.125rem;border:0.125rem solid rgb(var(--color-sky-light));pointer-events:none}img.ProseMirror-separator{display:inline !important;border:none !important;margin:0 !important}limel-portal{width:25rem}";
28575
28575
 
28576
28576
  const DEBOUNCE_TIMEOUT = 300;
28577
28577
  const ProsemirrorAdapter = class {