@aquera/nile-elements 1.5.9 → 1.6.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 (111) hide show
  1. package/README.md +6 -0
  2. package/dist/index.cjs.js +1 -1
  3. package/dist/index.esm.js +1 -1
  4. package/dist/index.js +382 -227
  5. package/dist/nile-floating-panel/index.cjs.js +1 -1
  6. package/dist/nile-floating-panel/index.esm.js +1 -1
  7. package/dist/nile-floating-panel/nile-floating-panel.cjs.js +1 -1
  8. package/dist/nile-floating-panel/nile-floating-panel.cjs.js.map +1 -1
  9. package/dist/nile-floating-panel/nile-floating-panel.css.cjs.js +1 -1
  10. package/dist/nile-floating-panel/nile-floating-panel.css.cjs.js.map +1 -1
  11. package/dist/nile-floating-panel/nile-floating-panel.css.esm.js +137 -21
  12. package/dist/nile-floating-panel/nile-floating-panel.esm.js +1 -1
  13. package/dist/nile-lite-tooltip/index.cjs.js +1 -1
  14. package/dist/nile-lite-tooltip/index.esm.js +1 -1
  15. package/dist/nile-lite-tooltip/nile-lite-tooltip.cjs.js +1 -1
  16. package/dist/nile-lite-tooltip/nile-lite-tooltip.cjs.js.map +1 -1
  17. package/dist/nile-lite-tooltip/nile-lite-tooltip.esm.js +1 -1
  18. package/dist/nile-rich-text-editor/nile-rich-text-editor.cjs.js +1 -1
  19. package/dist/nile-rich-text-editor/nile-rich-text-editor.cjs.js.map +1 -1
  20. package/dist/nile-rich-text-editor/nile-rich-text-editor.css.cjs.js +1 -1
  21. package/dist/nile-rich-text-editor/nile-rich-text-editor.css.cjs.js.map +1 -1
  22. package/dist/nile-rich-text-editor/nile-rich-text-editor.css.esm.js +24 -0
  23. package/dist/nile-rich-text-editor/nile-rich-text-editor.esm.js +1 -1
  24. package/dist/nile-rich-text-editor/nile-rte-link.cjs.js +1 -1
  25. package/dist/nile-rich-text-editor/nile-rte-link.cjs.js.map +1 -1
  26. package/dist/nile-rich-text-editor/nile-rte-link.esm.js +59 -44
  27. package/dist/nile-rich-text-editor/utils/inline-utils.cjs.js +1 -1
  28. package/dist/nile-rich-text-editor/utils/inline-utils.cjs.js.map +1 -1
  29. package/dist/nile-rich-text-editor/utils/inline-utils.esm.js +1 -1
  30. package/dist/src/index.d.ts +1 -1
  31. package/dist/src/index.js +1 -1
  32. package/dist/src/index.js.map +1 -1
  33. package/dist/src/nile-floating-panel/index.js.map +1 -1
  34. package/dist/src/nile-floating-panel/nile-floating-panel.css.d.ts +1 -1
  35. package/dist/src/nile-floating-panel/nile-floating-panel.css.js +147 -20
  36. package/dist/src/nile-floating-panel/nile-floating-panel.css.js.map +1 -1
  37. package/dist/src/nile-floating-panel/nile-floating-panel.d.ts +90 -24
  38. package/dist/src/nile-floating-panel/nile-floating-panel.js +478 -159
  39. package/dist/src/nile-floating-panel/nile-floating-panel.js.map +1 -1
  40. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.css.js +24 -0
  41. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.css.js.map +1 -1
  42. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.d.ts +6 -0
  43. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.js +62 -24
  44. package/dist/src/nile-rich-text-editor/nile-rich-text-editor.js.map +1 -1
  45. package/dist/src/nile-rich-text-editor/nile-rte-link.d.ts +12 -0
  46. package/dist/src/nile-rich-text-editor/nile-rte-link.js +239 -130
  47. package/dist/src/nile-rich-text-editor/nile-rte-link.js.map +1 -1
  48. package/dist/src/nile-rich-text-editor/nile-rte-link.test.d.ts +1 -0
  49. package/dist/src/nile-rich-text-editor/nile-rte-link.test.js +469 -0
  50. package/dist/src/nile-rich-text-editor/nile-rte-link.test.js.map +1 -0
  51. package/dist/src/nile-rich-text-editor/utils/inline-utils.js +13 -4
  52. package/dist/src/nile-rich-text-editor/utils/inline-utils.js.map +1 -1
  53. package/dist/src/version.js +1 -1
  54. package/dist/src/version.js.map +1 -1
  55. package/dist/tippy.esm-57628c2b.esm.js +1 -0
  56. package/dist/tippy.esm-78baa8f2.cjs.js +2 -0
  57. package/dist/tippy.esm-78baa8f2.cjs.js.map +1 -0
  58. package/dist/tsconfig.tsbuildinfo +1 -1
  59. package/package.json +4 -3
  60. package/src/index.ts +2 -2
  61. package/src/nile-floating-panel/index.ts +0 -1
  62. package/src/nile-floating-panel/nile-floating-panel.css.ts +149 -21
  63. package/src/nile-floating-panel/nile-floating-panel.ts +489 -190
  64. package/src/nile-rich-text-editor/nile-rich-text-editor.css.ts +24 -0
  65. package/src/nile-rich-text-editor/nile-rich-text-editor.ts +66 -26
  66. package/src/nile-rich-text-editor/nile-rte-link.test.ts +682 -0
  67. package/src/nile-rich-text-editor/nile-rte-link.ts +195 -100
  68. package/src/nile-rich-text-editor/utils/inline-utils.ts +11 -4
  69. package/vscode-html-custom-data.json +229 -25
  70. package/dist/nile-floating-panel/anchor-manager.cjs.js +0 -2
  71. package/dist/nile-floating-panel/anchor-manager.cjs.js.map +0 -1
  72. package/dist/nile-floating-panel/anchor-manager.esm.js +0 -1
  73. package/dist/nile-floating-panel/content-manager.cjs.js +0 -2
  74. package/dist/nile-floating-panel/content-manager.cjs.js.map +0 -1
  75. package/dist/nile-floating-panel/content-manager.esm.js +0 -1
  76. package/dist/nile-floating-panel/event-manager.cjs.js +0 -2
  77. package/dist/nile-floating-panel/event-manager.cjs.js.map +0 -1
  78. package/dist/nile-floating-panel/event-manager.esm.js +0 -1
  79. package/dist/nile-floating-panel/position-manager.cjs.js +0 -2
  80. package/dist/nile-floating-panel/position-manager.cjs.js.map +0 -1
  81. package/dist/nile-floating-panel/position-manager.esm.js +0 -1
  82. package/dist/nile-floating-panel/style-manager.cjs.js +0 -2
  83. package/dist/nile-floating-panel/style-manager.cjs.js.map +0 -1
  84. package/dist/nile-floating-panel/style-manager.esm.js +0 -1
  85. package/dist/nile-floating-panel/types.cjs.js +0 -2
  86. package/dist/nile-floating-panel/types.cjs.js.map +0 -1
  87. package/dist/nile-floating-panel/types.esm.js +0 -1
  88. package/dist/src/nile-floating-panel/anchor-manager.d.ts +0 -6
  89. package/dist/src/nile-floating-panel/anchor-manager.js +0 -27
  90. package/dist/src/nile-floating-panel/anchor-manager.js.map +0 -1
  91. package/dist/src/nile-floating-panel/content-manager.d.ts +0 -5
  92. package/dist/src/nile-floating-panel/content-manager.js +0 -44
  93. package/dist/src/nile-floating-panel/content-manager.js.map +0 -1
  94. package/dist/src/nile-floating-panel/event-manager.d.ts +0 -14
  95. package/dist/src/nile-floating-panel/event-manager.js +0 -52
  96. package/dist/src/nile-floating-panel/event-manager.js.map +0 -1
  97. package/dist/src/nile-floating-panel/position-manager.d.ts +0 -17
  98. package/dist/src/nile-floating-panel/position-manager.js +0 -72
  99. package/dist/src/nile-floating-panel/position-manager.js.map +0 -1
  100. package/dist/src/nile-floating-panel/style-manager.d.ts +0 -9
  101. package/dist/src/nile-floating-panel/style-manager.js +0 -44
  102. package/dist/src/nile-floating-panel/style-manager.js.map +0 -1
  103. package/dist/src/nile-floating-panel/types.d.ts +0 -11
  104. package/dist/src/nile-floating-panel/types.js +0 -2
  105. package/dist/src/nile-floating-panel/types.js.map +0 -1
  106. package/src/nile-floating-panel/anchor-manager.ts +0 -33
  107. package/src/nile-floating-panel/content-manager.ts +0 -54
  108. package/src/nile-floating-panel/event-manager.ts +0 -74
  109. package/src/nile-floating-panel/position-manager.ts +0 -102
  110. package/src/nile-floating-panel/style-manager.ts +0 -54
  111. package/src/nile-floating-panel/types.ts +0 -15
@@ -1 +1 @@
1
- {"version":3,"file":"nile-floating-panel.js","sourceRoot":"","sources":["../../../src/nile-floating-panel/nile-floating-panel.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n LitElement,\n html,\n CSSResultArray,\n TemplateResult,\n PropertyValues,\n} from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './nile-floating-panel.css';\nimport NileElement from '../internal/nile-element';\nimport { PositionManager } from './position-manager';\nimport { StyleManager } from './style-manager';\nimport { ContentManager } from './content-manager';\nimport { AnchorManager } from './anchor-manager';\nimport { EventManager } from './event-manager';\nimport { VisibilityManager } from '../utilities/visibility-manager';\nimport type { FloatingPanelPosition, FloatingPanelAnchor } from './types';\n\n/**\n * Nile floating panel component.\n *\n * @tag nile-floating-panel\n * @event nile-show - Emitted when the panel opens.\n * @event nile-hide - Emitted when the panel closes.\n */\n@customElement('nile-floating-panel')\nexport class NileFloatingPanel extends NileElement {\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n @property() anchor: FloatingPanelAnchor = null;\n\n @property() position: FloatingPanelPosition = 'bottom';\n\n @property({ type: Boolean, reflect: true, attribute: true }) open = false;\n\n @property({\n type: Boolean,\n reflect: true,\n attribute: 'close-on-outside-click',\n converter: {\n fromAttribute: (value: string | null) => (!value || value === 'false' ? false : true),\n toAttribute: (value: boolean) => (value ? 'true' : 'false'),\n },\n })\n closeOnOutsideClick = true;\n\n @property({ type: Boolean, reflect: true }) enableVisibilityEffect = true;\n\n @property({ type: Boolean, reflect: true }) enableTabClose = false;\n\n private panelContainer: HTMLElement | null = null;\n private positionManager: PositionManager | null = null;\n private styleManager: StyleManager = new StyleManager();\n private eventManager: EventManager = new EventManager(this);\n private visibilityManager?: VisibilityManager;\n\n connectedCallback() {\n super.connectedCallback();\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.cleanupPanel();\n this.visibilityManager?.cleanup();\n }\n\n updated(changedProperties: Map<string, unknown>) {\n super.updated(changedProperties);\n\n if (changedProperties.has('open')) {\n if (this.open) {\n this.emit('nile-show');\n this.setupPanel();\n this.visibilityManager?.setup();\n } else {\n this.emit('nile-hide');\n this.visibilityManager?.cleanup();\n this.cleanupPanel();\n }\n }\n\n if (\n changedProperties.has('closeOnOutsideClick') &&\n this.open &&\n this.panelContainer\n ) {\n this.eventManager.updateOutsideClickHandler(\n this.panelContainer,\n this.closeOnOutsideClick,\n this.open\n );\n }\n\n if (changedProperties.has('anchor') && this.open) {\n this.cleanupPanel();\n this.setupPanel();\n }\n\n if (\n (changedProperties.has('enableVisibilityEffect') ||\n changedProperties.has('enableTabClose')) &&\n this.open\n ) {\n this.setupVisibilityManager();\n }\n\n if (\n changedProperties.has('position') &&\n this.open &&\n this.positionManager\n ) {\n this.positionManager.updatePosition(this.position);\n }\n\n if (changedProperties.has('open') && this.open && this.panelContainer) {\n this.updatePanelContent();\n }\n }\n\n private setupPanel() {\n if (this.panelContainer) {\n return;\n }\n\n const componentStyles = (this.constructor as typeof NileFloatingPanel)\n .styles;\n if (componentStyles) {\n this.styleManager.injectStyles(componentStyles);\n }\n\n this.panelContainer = document.createElement('div');\n this.panelContainer.setAttribute('part', 'panel');\n this.panelContainer.className = 'nile-floating-panel__container';\n\n this.updatePanelContent();\n\n const anchorElement = AnchorManager.resolveAnchor(this.anchor);\n AnchorManager.appendToAnchor(anchorElement, this.panelContainer);\n\n requestAnimationFrame(() => {\n this.setupPositionManager();\n this.setupEventHandlers();\n this.setupVisibilityManager();\n });\n }\n\n private setupEventHandlers() {\n if (!this.panelContainer) {\n return;\n }\n\n this.eventManager.setupOutsideClickHandler(\n this.panelContainer,\n this.closeOnOutsideClick,\n this.open,\n () => {\n this.open = false;\n }\n );\n }\n\n private setupPositionManager() {\n if (!this.panelContainer) {\n return;\n }\n\n const referenceElement = this.findTriggerElement() || this;\n this.positionManager = new PositionManager(\n referenceElement,\n this.panelContainer,\n this.position\n );\n\n this.positionManager.reposition();\n this.positionManager.setupAutoUpdate();\n }\n\n private findTriggerElement(): HTMLElement | null {\n // Try to find the next sibling element as the trigger\n let nextSibling = this.nextElementSibling;\n while (nextSibling) {\n if (nextSibling instanceof HTMLElement) {\n return nextSibling;\n }\n nextSibling = nextSibling.nextElementSibling;\n }\n\n // Try to find the previous sibling element\n let previousSibling = this.previousElementSibling;\n while (previousSibling) {\n if (previousSibling instanceof HTMLElement) {\n return previousSibling;\n }\n previousSibling = previousSibling.previousElementSibling;\n }\n\n return null;\n }\n\n private setupVisibilityManager(): void {\n if (!this.enableVisibilityEffect) {\n return;\n }\n\n const triggerElement = this.findTriggerElement();\n \n // Cleanup existing visibility manager if it exists\n if (this.visibilityManager) {\n this.visibilityManager.cleanup();\n }\n\n this.visibilityManager = new VisibilityManager({\n host: this,\n target: triggerElement || null,\n enableVisibilityEffect: this.enableVisibilityEffect,\n enableTabClose: this.enableTabClose,\n isOpen: () => this.open,\n onAnchorOutOfView: () => {\n this.open = false;\n this.emit('nile-visibility-change', {\n visible: false,\n reason: 'anchor-out-of-view',\n });\n },\n onDocumentHidden: () => {\n this.open = false;\n this.emit('nile-visibility-change', {\n visible: false,\n reason: 'document-hidden',\n });\n },\n emit: (event, detail) => this.emit(`nile-${event}`, detail),\n });\n\n if (this.open) {\n this.visibilityManager.setup();\n }\n }\n\n private updatePanelContent() {\n if (!this.panelContainer) {\n return;\n }\n\n const slot = this.shadowRoot?.querySelector('slot') || null;\n ContentManager.updatePanelContent(this.panelContainer, slot, '');\n }\n\n private reposition() {\n if (this.positionManager) {\n this.positionManager.reposition();\n }\n }\n\n private cleanupPanel() {\n this.eventManager.destroy();\n\n if (this.positionManager) {\n this.positionManager.destroy();\n this.positionManager = null;\n }\n\n if (this.panelContainer) {\n AnchorManager.removeFromAnchor(this.panelContainer);\n }\n\n this.panelContainer = null;\n\n this.styleManager.cleanupStyles();\n }\n\n public render(): TemplateResult {\n return html` <slot @slotchange=${this.handleSlotChange}></slot> `;\n }\n\n private handleSlotChange = () => {\n if (this.open && this.panelContainer) {\n this.updatePanelContent();\n }\n };\n}\n\nexport default NileFloatingPanel;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-floating-panel': NileFloatingPanel;\n }\n}\n"]}
1
+ {"version":3,"file":"nile-floating-panel.js","sourceRoot":"","sources":["../../../src/nile-floating-panel/nile-floating-panel.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { CSSResultArray, PropertyValues } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { styles } from './nile-floating-panel.css';\nimport NileElement from '../internal/nile-element';\nimport tippy, {\n Instance,\n Props,\n roundArrow,\n followCursor as followCursorPlugin,\n} from 'tippy.js';\nimport {\n parseFollowCursor,\n parseDuration,\n} from '../nile-lite-tooltip/utils';\nimport { VisibilityManager } from '../utilities/visibility-manager.js';\n\n/**\n * Nile floating-panel component.\n *\n * A popover that supports rich content (title, body, actions).\n *\n * **Wrapper mode** (default): first child element is the trigger.\n * **For mode**: set `for=\"elementId\"` to attach to an external element.\n *\n * @tag nile-floating-panel\n *\n * @fires nile-init - Component initialized.\n * @fires nile-destroy - Component destroyed.\n * @fires nile-show - Panel opened.\n * @fires nile-hide - Panel closed.\n * @fires nile-after-show - Panel fully visible after animation.\n * @fires nile-after-hide - Panel fully hidden after animation.\n * @fires nile-toggle - Open/close transition (detail.open).\n * @fires nile-visibility-change - Hidden by scroll/tab change.\n */\n@customElement('nile-floating-panel')\nexport class NileFloatingPanel extends NileElement {\n private static _groups = new Map<string, Set<NileFloatingPanel>>();\n\n private static _reducedMotionQuery: MediaQueryList | null = null;\n\n private static get prefersReducedMotion(): boolean {\n if (!NileFloatingPanel._reducedMotionQuery) {\n NileFloatingPanel._reducedMotionQuery =\n window.matchMedia('(prefers-reduced-motion: reduce)');\n }\n return NileFloatingPanel._reducedMotionQuery.matches;\n }\n\n public static get styles(): CSSResultArray {\n return [styles];\n }\n\n protected createRenderRoot() {\n return this;\n }\n\n // ─── Tippy.js props ───\n\n @property({ type: String })\n placement:\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'left'\n | 'left-start'\n | 'left-end'\n | 'auto'\n | 'auto-start'\n | 'auto-end' = 'bottom';\n\n @property({ type: String }) trigger: string = 'click';\n\n @property({ type: Number }) distance = 12;\n\n @property({ type: Number }) skidding = 0;\n\n @property({ type: String, reflect: true })\n arrow: 'round' | 'default' | 'none' = 'round';\n\n @property({ type: String, reflect: true }) animation: string = 'fade';\n\n @property({ type: String, reflect: true }) duration:\n | string\n | number\n | [number, number] = 200;\n\n @property({ type: String, reflect: true }) delay:\n | number\n | [number, number] = 0;\n\n @property({ type: Boolean, reflect: true }) interactive = true;\n\n @property({ type: Number, reflect: true }) interactiveBorder = 2;\n\n @property({ type: String, reflect: true }) maxWidth: string | number = 'none';\n\n @property({ type: Number, reflect: true }) zIndex = 9999;\n\n @property({ type: String, reflect: true })\n followCursor:\n | boolean\n | 'initial'\n | 'horizontal'\n | 'vertical'\n | 'true'\n | 'false' = false;\n\n @property({ type: Boolean, reflect: true }) hideOnClick:\n | boolean\n | 'toggle' = true;\n\n @property({ type: Boolean, reflect: true }) inertia = false;\n\n @property({ type: Boolean, reflect: true }) allowHTML = false;\n\n @property({ type: Boolean, reflect: true }) flip = true;\n\n // ─── Popover-like props ───\n\n @property({ type: String, attribute: 'for' }) for: string | null = null;\n\n @property({ type: Boolean, reflect: true }) open = false;\n\n @property({ type: Boolean, reflect: true }) preventOverlayClose = false;\n\n @property({ type: String, reflect: true }) title = '';\n\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n @property({ type: String, reflect: true }) width?: string;\n\n @property({ type: String, reflect: true }) height?: string;\n\n /** When set, only one panel in the same group can be open at a time. */\n @property({ type: String, reflect: true }) group: string | null = null;\n\n /** Close the panel when Escape is pressed. */\n @property({ type: Boolean, reflect: true }) closeOnEscape = true;\n\n // ─── Visibility manager props ───\n\n @property({ type: Boolean, reflect: true }) enableVisibilityEffect = false;\n\n @property({ type: Boolean, reflect: true }) enableTabClose = false;\n\n // ─── Internal state ───\n\n private tippyInstance: Instance | null = null;\n private visibilityManager?: VisibilityManager;\n private panelContainer: HTMLElement | null = null;\n private anchorEl: HTMLElement | null = null;\n private _suppressOpenWatch = false;\n private _panelId = `nile-fp-${Math.random().toString(36).slice(2, 9)}`;\n private _boundEscHandler = this._handleEscapeKey.bind(this);\n private _pendingShowListener: (() => void) | null = null;\n private _pendingHideListener: (() => void) | null = null;\n\n // ─── Lifecycle ───\n\n protected firstUpdated(): void {\n this._buildDOM();\n this._attachTippy();\n this._joinGroup();\n\n this.visibilityManager = new VisibilityManager({\n host: this,\n target: this.anchorEl || null,\n enableVisibilityEffect: this.enableVisibilityEffect,\n enableTabClose: this.enableTabClose,\n isOpen: () => this.open,\n onAnchorOutOfView: () => {\n this._setOpen(false);\n this.tippyInstance?.hide();\n this.emit('nile-visibility-change', {\n visible: false,\n reason: 'anchor-out-of-view',\n });\n },\n onDocumentHidden: () => {\n this._setOpen(false);\n this.tippyInstance?.hide();\n this.emit('nile-visibility-change', {\n visible: false,\n reason: 'document-hidden',\n });\n },\n emit: (event, detail) => this.emit(`nile-${event}`, detail),\n });\n\n this.emit('nile-init');\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this._cleanupPendingShowListener();\n this._cleanupPendingHideListener();\n this.visibilityManager?.cleanup();\n this._leaveGroup();\n this._removeEscListener();\n this._destroyTippy();\n this.emit('nile-destroy');\n }\n\n updated(changed: PropertyValues): void {\n super.updated(changed);\n\n if (!this.panelContainer) return;\n\n if (changed.has('open') && !this._suppressOpenWatch) {\n if (this.open) {\n this.visibilityManager?.setup();\n queueMicrotask(() => this.tippyInstance?.show());\n } else {\n this.visibilityManager?.cleanup();\n this.tippyInstance?.hide();\n }\n }\n\n if (changed.has('group')) {\n this._leaveGroup(changed.get('group') as string | null);\n this._joinGroup();\n }\n\n const rebuildProps: string[] = [\n 'placement', 'trigger', 'distance', 'skidding', 'arrow',\n 'animation', 'duration', 'delay', 'interactive', 'interactiveBorder',\n 'maxWidth', 'zIndex', 'followCursor', 'hideOnClick', 'inertia',\n 'allowHTML', 'flip', 'preventOverlayClose', 'disabled', 'width', 'height',\n ];\n\n if (rebuildProps.some(p => changed.has(p))) {\n this._attachTippy();\n }\n }\n\n // ─── Public API ───\n\n /** Programmatically shows the panel. Returns a promise that resolves after the show animation. */\n public show(): Promise<void> {\n this.open = true;\n return new Promise<void>(resolve => {\n this._cleanupPendingShowListener();\n const handler = () => {\n this._pendingShowListener = null;\n resolve();\n };\n this._pendingShowListener = handler;\n this.addEventListener('nile-after-show', handler, { once: true });\n });\n }\n\n /** Programmatically hides the panel. Returns a promise that resolves after the hide animation. */\n public hide(): Promise<void> {\n this.open = false;\n return new Promise<void>(resolve => {\n this._cleanupPendingHideListener();\n const handler = () => {\n this._pendingHideListener = null;\n resolve();\n };\n this._pendingHideListener = handler;\n this.addEventListener('nile-after-hide', handler, { once: true });\n });\n }\n\n private _cleanupPendingShowListener(): void {\n if (this._pendingShowListener) {\n this.removeEventListener('nile-after-show', this._pendingShowListener);\n this._pendingShowListener = null;\n }\n }\n\n private _cleanupPendingHideListener(): void {\n if (this._pendingHideListener) {\n this.removeEventListener('nile-after-hide', this._pendingHideListener);\n this._pendingHideListener = null;\n }\n }\n\n public toggle(): void {\n this.open = !this.open;\n }\n\n public refresh(): void {\n this._attachTippy();\n }\n\n /** Returns the current resolved placement from Tippy/Popper. */\n public getCurrentPlacement(): string {\n const popper = this.tippyInstance?.popper;\n const box = popper?.querySelector('.tippy-box') as HTMLElement | null;\n return box?.dataset.placement ?? this.placement;\n }\n\n /** Returns true if the resolved placement matches the requested placement. */\n public isPositioningOptimal(): boolean {\n return this.getCurrentPlacement() === this.placement;\n }\n\n // ─── Group management ───\n\n private _joinGroup(): void {\n if (!this.group) return;\n let set = NileFloatingPanel._groups.get(this.group);\n if (!set) {\n set = new Set();\n NileFloatingPanel._groups.set(this.group, set);\n }\n set.add(this);\n }\n\n private _leaveGroup(oldGroup?: string | null): void {\n const key = oldGroup ?? this.group;\n if (!key) return;\n const set = NileFloatingPanel._groups.get(key);\n if (set) {\n set.delete(this);\n if (set.size === 0) NileFloatingPanel._groups.delete(key);\n }\n }\n\n private _hideGroupSiblings(): void {\n if (!this.group) return;\n const set = NileFloatingPanel._groups.get(this.group);\n if (!set) return;\n set.forEach(panel => {\n if (panel !== this && panel.open) {\n panel._setOpen(false);\n panel.tippyInstance?.hide();\n }\n });\n }\n\n // ─── Escape key ───\n\n private _addEscListener(): void {\n if (this.closeOnEscape) {\n document.addEventListener('keydown', this._boundEscHandler);\n }\n }\n\n private _removeEscListener(): void {\n document.removeEventListener('keydown', this._boundEscHandler);\n }\n\n private _handleEscapeKey(e: KeyboardEvent): void {\n if (e.key === 'Escape' && this.open) {\n this._setOpen(false);\n this.tippyInstance?.hide();\n }\n }\n\n // ─── ARIA ───\n\n private _applyAria(): void {\n if (!this.anchorEl || !this.panelContainer) return;\n this.panelContainer.setAttribute('role', 'dialog');\n this.panelContainer.id = this._panelId;\n this.anchorEl.setAttribute('aria-haspopup', 'dialog');\n this._syncAriaExpanded();\n }\n\n private _syncAriaExpanded(): void {\n this.anchorEl?.setAttribute('aria-expanded', String(this.open));\n if (this.open) {\n this.anchorEl?.setAttribute('aria-describedby', this._panelId);\n } else {\n this.anchorEl?.removeAttribute('aria-describedby');\n }\n }\n\n // ─── DOM construction ───\n\n private _buildDOM(): void {\n const children = Array.from(this.childNodes);\n\n this.anchorEl = null;\n const titleNodes: Node[] = [];\n const actionNodes: Node[] = [];\n const bodyNodes: Node[] = [];\n let firstElementSeen = false;\n\n for (const child of children) {\n if (child instanceof HTMLElement) {\n const slot = child.getAttribute('slot');\n if (slot === 'title') {\n child.removeAttribute('slot');\n titleNodes.push(child);\n continue;\n }\n if (slot === 'action') {\n child.removeAttribute('slot');\n actionNodes.push(child);\n continue;\n }\n if (!firstElementSeen && !this.for) {\n this.anchorEl = child;\n firstElementSeen = true;\n continue;\n }\n }\n bodyNodes.push(child);\n }\n\n if (this.for) {\n const anchor = document.getElementById(this.for);\n if (anchor) {\n this.anchorEl = anchor;\n }\n }\n\n while (this.firstChild) {\n this.removeChild(this.firstChild);\n }\n\n if (this.anchorEl && !this.for) {\n this.appendChild(this.anchorEl);\n }\n\n this.panelContainer = document.createElement('div');\n this.panelContainer.className = 'nile-floating-panel__content';\n this.panelContainer.style.display = 'none';\n\n const body = document.createElement('div');\n body.className = 'nile-floating-panel__body';\n\n if (titleNodes.length > 0 || this.title) {\n const titleDiv = document.createElement('div');\n titleDiv.className = 'nile-floating-panel__title';\n if (this.title) {\n titleDiv.textContent = this.title;\n } else {\n titleNodes.forEach(n => titleDiv.appendChild(n));\n }\n body.appendChild(titleDiv);\n }\n\n if (bodyNodes.length > 0) {\n const mainDiv = document.createElement('div');\n mainDiv.className = 'nile-floating-panel__main';\n bodyNodes.forEach(n => mainDiv.appendChild(n));\n body.appendChild(mainDiv);\n }\n\n if (actionNodes.length > 0) {\n const actionDiv = document.createElement('div');\n actionDiv.className = 'nile-floating-panel__action';\n actionNodes.forEach(n => actionDiv.appendChild(n));\n body.appendChild(actionDiv);\n }\n\n this.panelContainer.appendChild(body);\n this.appendChild(this.panelContainer);\n\n this._applyAria();\n }\n\n // ─── Tippy management ───\n\n private _resolveArrow() {\n switch (this.arrow) {\n case 'round': return roundArrow;\n case 'none': return false as const;\n default: return true as const;\n }\n }\n\n private _setOpen(value: boolean): void {\n this._suppressOpenWatch = true;\n this.open = value;\n this._syncAriaExpanded();\n this._suppressOpenWatch = false;\n }\n\n private _getEffectiveDuration(): number | [number, number] {\n if (NileFloatingPanel.prefersReducedMotion) return 0;\n return parseDuration(this.duration);\n }\n\n private _getEffectiveAnimation(): string | false {\n if (NileFloatingPanel.prefersReducedMotion) return false;\n return this.animation;\n }\n\n private _attachTippy(): void {\n this._destroyTippy();\n\n if (this.disabled || !this.anchorEl || !this.panelContainer) return;\n\n const resolvedFollowCursor = parseFollowCursor(this.followCursor);\n const effectiveHideOnClick = this.preventOverlayClose ? false : this.hideOnClick;\n\n const options: Partial<Props> = {\n content: this.panelContainer,\n placement: this.placement,\n trigger: this.trigger,\n offset: [this.skidding, this.distance],\n theme: 'floating-panel',\n animation: this._getEffectiveAnimation(),\n interactive: this.interactive,\n arrow: this._resolveArrow(),\n duration: this._getEffectiveDuration(),\n allowHTML: this.allowHTML,\n delay: this.delay as any,\n maxWidth: this.maxWidth,\n zIndex: this.zIndex,\n hideOnClick: effectiveHideOnClick,\n inertia: NileFloatingPanel.prefersReducedMotion ? false : this.inertia,\n interactiveBorder: this.interactiveBorder,\n appendTo: document.body,\n followCursor: resolvedFollowCursor,\n plugins: resolvedFollowCursor ? [followCursorPlugin] : [],\n popperOptions: {\n modifiers: [{ name: 'flip', enabled: this.flip }],\n },\n onMount: () => {\n if (this.panelContainer) this.panelContainer.style.display = '';\n },\n onShow: (instance) => {\n if (this.panelContainer) this.panelContainer.style.display = '';\n const tc = instance.popper.querySelector('.tippy-content') as HTMLElement | null;\n if (tc) {\n if (this.width) tc.style.width = this.width;\n if (this.height) { tc.style.height = this.height; tc.style.overflow = 'auto'; }\n }\n this._hideGroupSiblings();\n this._setOpen(true);\n this._addEscListener();\n this.dispatchEvent(new CustomEvent('nile-show', { detail: { instance, target: instance.reference } }));\n this.dispatchEvent(new CustomEvent('nile-toggle', { detail: { open: true, instance, target: instance.reference } }));\n return undefined;\n },\n onShown: (instance) => {\n this.dispatchEvent(new CustomEvent('nile-after-show', { detail: { instance, target: instance.reference } }));\n },\n onHide: (instance) => {\n this._setOpen(false);\n this._removeEscListener();\n this.dispatchEvent(new CustomEvent('nile-hide', { detail: { instance, target: instance.reference } }));\n this.dispatchEvent(new CustomEvent('nile-toggle', { detail: { open: false, instance, target: instance.reference } }));\n return undefined;\n },\n onHidden: (instance) => {\n if (this.panelContainer) this.panelContainer.style.display = 'none';\n this.dispatchEvent(new CustomEvent('nile-after-hide', { detail: { instance, target: instance.reference } }));\n },\n };\n\n this.tippyInstance = tippy(this.anchorEl, options);\n\n if (this.open) {\n queueMicrotask(() => this.tippyInstance?.show());\n }\n }\n\n private _destroyTippy(): void {\n if (this.tippyInstance) {\n this.tippyInstance.destroy();\n this.tippyInstance = null;\n }\n if (this.panelContainer) {\n this.panelContainer.style.display = 'none';\n if (this.panelContainer.parentElement !== this) {\n this.appendChild(this.panelContainer);\n }\n }\n }\n}\n\nexport default NileFloatingPanel;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-floating-panel': NileFloatingPanel;\n }\n}\n"]}
@@ -170,6 +170,30 @@ nile-rte-toolbar-item nile-button[data-active]::part(base):hover {
170
170
  background-color: var(--nile-colors-primary-500, var(--ng-componentcolors-utility-blue-500));
171
171
  }
172
172
 
173
+ nile-rte-link nile-button[data-active]::part(base) {
174
+ background-color: var(--nile-colors-primary-400, var(--ng-componentcolors-utility-blue-400));
175
+ }
176
+
177
+ nile-rte-link nile-button[data-active]::part(base):hover {
178
+ background-color: var(--nile-colors-primary-500, var(--ng-componentcolors-utility-blue-500));
179
+ }
180
+
181
+ .editor a {
182
+ color: var(--nile-colors-primary-600, var(--ng-colors-text-brand-tertiary-600));
183
+ cursor: pointer;
184
+ text-decoration: none;
185
+ }
186
+
187
+ .editor a:hover {
188
+ text-decoration: none;
189
+ }
190
+
191
+ nile-rich-text-editor[disabled] .editor a {
192
+ color: var(--nile-colors-dark-500, var(--ng-colors-text-disabled));
193
+ cursor: not-allowed;
194
+ pointer-events: none;
195
+ }
196
+
173
197
  .editor.empty::before {
174
198
  content: attr(data-placeholder);
175
199
  color: var(--nile-colors-neutral-500, var(--ng-colors-text-secondary));
@@ -1 +1 @@
1
- {"version":3,"file":"nile-rich-text-editor.css.js","sourceRoot":"","sources":["../../../src/nile-rich-text-editor/nile-rich-text-editor.css.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4LxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":[" \nimport { css } from 'lit';\n\nexport const styles = css`\n .editor { all: revert; }\n\n nile-rich-text-editor {\n position: relative;\n display: block;\n font-family: inherit;\n }\n\n\n .rte-container {\n width: 100%;\n border: 1px solid var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));\n border-radius: var(--nile-radius-radius-xl, var(--ng-radius-md));\n background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n box-sizing: border-box;\n }\n\n \n .rte-container nile-rte-toolbar {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px;\n border-bottom: 1px solid var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));\n background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n border-radius: 8px 8px 0 0;\n width: 100%; \n box-sizing: border-box; \n}\n\n .rte-container .editor {\n min-height: 160px;\n width: 100%;\n padding: 12px;\n background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n border-radius: 0 0 8px 8px;\n outline: none;\n tab-size: 4;\n -moz-tab-size: 4;\n word-break: break-word;\n box-sizing: border-box;\n border-radius: var(--nile-radius-radius-xl, var(--ng-radius-md));\n }\n\n nile-rich-text-editor[disabled] .rte-container {\n border-color: var(--nile-colors-neutral-500, var(--ng-colors-border-disabled));\n cursor: not-allowed !important;\n background: var(--nile-colors-dark-200, var(--ng-colors-bg-disabled-subtle));\n }\n\n nile-rich-text-editor[disabled] .rte-container nile-rte-toolbar {\n border-color: var(--nile-colors-neutral-500, var(--ng-colors-border-disabled));\n cursor: not-allowed !important;\n } \n\n nile-rich-text-editor[disabled] .rte-container .editor {\n background: var(--nile-colors-dark-200, var(--ng-colors-bg-disabled-subtle));\n pointer-events: none ;\n user-select: none;\n -webkit-user-select: none;\n border-color: var(--nile-colors-neutral-500, var(--ng-colors-border-disabled));\n color: var(--nile-colors-dark-500, var(--ng-colors-text-disabled));\n }\n\nnile-rte-preview {\n display: block;\n width: 100%;\n margin-top: 16px; \n padding: 12px;\n border: 1px dashed var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));\n border-radius: var(--nile-radius-radius-xl, var(--ng-radius-md));\n background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n box-sizing: border-box;\n word-wrap: break-word;\n}\n\n nile-rich-text-editor[disabled] nile-rte-preview {\n background: var(--nile-colors-dark-200, var(--ng-colors-bg-disabled-subtle));\n cursor: not-allowed ;\n border-color: var(--nile-colors-neutral-500, var(--ng-colors-border-disabled));\n user-select: none;\n -webkit-user-select: none;\n color: var(--nile-colors-dark-500, var(--ng-colors-text-disabled));\n}\n\n nile-rte-toolbar-item nile-button::part(base) {\n width: 32px;\n height: 32px;\n padding: 0px 6px;\n border: none;\n }\n\n nile-rte-toolbar-item > button,\n nile-rte-toolbar button {\n border: 1px solid var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));\n background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n border-radius: var(--nile-radius-radius-lg, var(--ng-radius-md));\n cursor: pointer;\n }\n\n nile-rte-toolbar-item > button nile-icon { pointer-events: none; }\n\n nile-rte-toolbar-item > button.active {\n border-color: #2563eb;\n background: var(--nile-colors-white-base);\n }\n\n .editor p { margin: 1em 0; }\n .editor h1, .preview h1 {\n font-size: 2em;\n margin: 0.67em 0;\n font-weight: bold;\n }\n .editor h2, .preview h2 {\n font-size: 1.5em;\n margin: 0.83em 0;\n font-weight: bold;\n }\n .editor h3 { font-size: 1.17em; }\n .editor h4 { font-size: 1em; }\n .editor h5 { font-size: 0.83em; }\n .editor h6 { font-size: 0.67em; }\n\n\n .editor.single-line {\n min-height: 50px;\n max-height: 50px;\n line-height: 1.2;\n overflow-x: auto;\n white-space: nowrap;\n padding: 0px 12px 0px 12px;\n scrollbar-width: none;\n -ms-overflow-style: none;\n }\n nile-rte-preview.single-line {\n min-height: 50px;\n max-height: 50px;\n line-height: 1.2;\n padding: 0px 12px 0px 12px;\n overflow-x: auto;\n white-space: nowrap;\n scrollbar-width: none;\n -ms-overflow-style: none;\n }\n nile-rte-divider { \n margin: 0 4px;\n display: inline-block;\n height: 24px;\n width: 1px;\n background: var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));\n }\n \n .editor ul,\n.editor ol {\n list-style-position: inside; \n padding: 0px;\n}\n\n\n \n \n\n nile-rte-toolbar-item nile-button[data-active]::part(base) {\n background-color: var(--nile-colors-primary-400, var(--ng-componentcolors-utility-blue-400));\n}\n\nnile-rte-toolbar-item nile-button[data-active]::part(base):hover {\n background-color: var(--nile-colors-primary-500, var(--ng-componentcolors-utility-blue-500)); \n}\n\n.editor.empty::before {\n content: attr(data-placeholder);\n color: var(--nile-colors-neutral-500, var(--ng-colors-text-secondary));\n position: absolute;\n font-family: var(var(--nile-font-family-sans-serif), var(--ng-font-family-body));\n pointer-events: none;\n user-select: none;\n padding-top: 16px;\n opacity: 0.7;\n}\n\n\n\n \n\n\n\n`;\n\nexport default [styles];\n"]}
1
+ {"version":3,"file":"nile-rich-text-editor.css.js","sourceRoot":"","sources":["../../../src/nile-rich-text-editor/nile-rich-text-editor.css.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoNxB,CAAC;AAEF,eAAe,CAAC,MAAM,CAAC,CAAC","sourcesContent":[" \nimport { css } from 'lit';\n\nexport const styles = css`\n .editor { all: revert; }\n\n nile-rich-text-editor {\n position: relative;\n display: block;\n font-family: inherit;\n }\n\n\n .rte-container {\n width: 100%;\n border: 1px solid var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));\n border-radius: var(--nile-radius-radius-xl, var(--ng-radius-md));\n background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n box-sizing: border-box;\n }\n\n \n .rte-container nile-rte-toolbar {\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px;\n border-bottom: 1px solid var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));\n background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n border-radius: 8px 8px 0 0;\n width: 100%; \n box-sizing: border-box; \n}\n\n .rte-container .editor {\n min-height: 160px;\n width: 100%;\n padding: 12px;\n background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n border-radius: 0 0 8px 8px;\n outline: none;\n tab-size: 4;\n -moz-tab-size: 4;\n word-break: break-word;\n box-sizing: border-box;\n border-radius: var(--nile-radius-radius-xl, var(--ng-radius-md));\n }\n\n nile-rich-text-editor[disabled] .rte-container {\n border-color: var(--nile-colors-neutral-500, var(--ng-colors-border-disabled));\n cursor: not-allowed !important;\n background: var(--nile-colors-dark-200, var(--ng-colors-bg-disabled-subtle));\n }\n\n nile-rich-text-editor[disabled] .rte-container nile-rte-toolbar {\n border-color: var(--nile-colors-neutral-500, var(--ng-colors-border-disabled));\n cursor: not-allowed !important;\n } \n\n nile-rich-text-editor[disabled] .rte-container .editor {\n background: var(--nile-colors-dark-200, var(--ng-colors-bg-disabled-subtle));\n pointer-events: none ;\n user-select: none;\n -webkit-user-select: none;\n border-color: var(--nile-colors-neutral-500, var(--ng-colors-border-disabled));\n color: var(--nile-colors-dark-500, var(--ng-colors-text-disabled));\n }\n\nnile-rte-preview {\n display: block;\n width: 100%;\n margin-top: 16px; \n padding: 12px;\n border: 1px dashed var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));\n border-radius: var(--nile-radius-radius-xl, var(--ng-radius-md));\n background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n box-sizing: border-box;\n word-wrap: break-word;\n}\n\n nile-rich-text-editor[disabled] nile-rte-preview {\n background: var(--nile-colors-dark-200, var(--ng-colors-bg-disabled-subtle));\n cursor: not-allowed ;\n border-color: var(--nile-colors-neutral-500, var(--ng-colors-border-disabled));\n user-select: none;\n -webkit-user-select: none;\n color: var(--nile-colors-dark-500, var(--ng-colors-text-disabled));\n}\n\n nile-rte-toolbar-item nile-button::part(base) {\n width: 32px;\n height: 32px;\n padding: 0px 6px;\n border: none;\n }\n\n nile-rte-toolbar-item > button,\n nile-rte-toolbar button {\n border: 1px solid var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));\n background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));\n border-radius: var(--nile-radius-radius-lg, var(--ng-radius-md));\n cursor: pointer;\n }\n\n nile-rte-toolbar-item > button nile-icon { pointer-events: none; }\n\n nile-rte-toolbar-item > button.active {\n border-color: #2563eb;\n background: var(--nile-colors-white-base);\n }\n\n .editor p { margin: 1em 0; }\n .editor h1, .preview h1 {\n font-size: 2em;\n margin: 0.67em 0;\n font-weight: bold;\n }\n .editor h2, .preview h2 {\n font-size: 1.5em;\n margin: 0.83em 0;\n font-weight: bold;\n }\n .editor h3 { font-size: 1.17em; }\n .editor h4 { font-size: 1em; }\n .editor h5 { font-size: 0.83em; }\n .editor h6 { font-size: 0.67em; }\n\n\n .editor.single-line {\n min-height: 50px;\n max-height: 50px;\n line-height: 1.2;\n overflow-x: auto;\n white-space: nowrap;\n padding: 0px 12px 0px 12px;\n scrollbar-width: none;\n -ms-overflow-style: none;\n }\n nile-rte-preview.single-line {\n min-height: 50px;\n max-height: 50px;\n line-height: 1.2;\n padding: 0px 12px 0px 12px;\n overflow-x: auto;\n white-space: nowrap;\n scrollbar-width: none;\n -ms-overflow-style: none;\n }\n nile-rte-divider { \n margin: 0 4px;\n display: inline-block;\n height: 24px;\n width: 1px;\n background: var(--nile-colors-neutral-400, var(--ng-colors-border-neutral));\n }\n \n .editor ul,\n.editor ol {\n list-style-position: inside; \n padding: 0px;\n}\n\n\n \n \n\n nile-rte-toolbar-item nile-button[data-active]::part(base) {\n background-color: var(--nile-colors-primary-400, var(--ng-componentcolors-utility-blue-400));\n}\n\nnile-rte-toolbar-item nile-button[data-active]::part(base):hover {\n background-color: var(--nile-colors-primary-500, var(--ng-componentcolors-utility-blue-500)); \n}\n\nnile-rte-link nile-button[data-active]::part(base) {\n background-color: var(--nile-colors-primary-400, var(--ng-componentcolors-utility-blue-400));\n}\n\nnile-rte-link nile-button[data-active]::part(base):hover {\n background-color: var(--nile-colors-primary-500, var(--ng-componentcolors-utility-blue-500));\n}\n\n.editor a {\n color: var(--nile-colors-primary-600, var(--ng-colors-text-brand-tertiary-600));\n cursor: pointer;\n text-decoration: none;\n}\n\n.editor a:hover {\n text-decoration: none;\n}\n\nnile-rich-text-editor[disabled] .editor a {\n color: var(--nile-colors-dark-500, var(--ng-colors-text-disabled));\n cursor: not-allowed;\n pointer-events: none;\n}\n\n.editor.empty::before {\n content: attr(data-placeholder);\n color: var(--nile-colors-neutral-500, var(--ng-colors-text-secondary));\n position: absolute;\n font-family: var(var(--nile-font-family-sans-serif), var(--ng-font-family-body));\n pointer-events: none;\n user-select: none;\n padding-top: 16px;\n opacity: 0.7;\n}\n\n\n\n \n\n\n\n`;\n\nexport default [styles];\n"]}
@@ -33,6 +33,7 @@ export declare class NileRichTextEditor extends LitElement {
33
33
  private colorSwatchEl;
34
34
  private bgSwatchEl;
35
35
  private containerEl;
36
+ private linkEl;
36
37
  private mentionsEl;
37
38
  private injectCss;
38
39
  connectedCallback(): void;
@@ -43,7 +44,12 @@ export declare class NileRichTextEditor extends LitElement {
43
44
  private ensureEditor;
44
45
  private unwrapMention;
45
46
  private scrubBrokenMentions;
47
+ private onEditorClick;
48
+ private onEditorInput;
49
+ private onEditorMouseup;
50
+ private onEditorKeyup;
46
51
  private wireEditor;
52
+ private unwireEditor;
47
53
  private onEditorKeydown;
48
54
  private wireAuthoredToolbar;
49
55
  private onSelectionChange;
@@ -62,7 +62,36 @@ let NileRichTextEditor = class NileRichTextEditor extends LitElement {
62
62
  this.colorSwatchEl = null;
63
63
  this.bgSwatchEl = null;
64
64
  this.containerEl = null;
65
+ this.linkEl = null;
65
66
  this.mentionsEl = null;
67
+ this.onEditorClick = (e) => {
68
+ const anchor = e.target.closest?.('a');
69
+ if (anchor)
70
+ e.preventDefault();
71
+ };
72
+ this.onEditorInput = () => {
73
+ this.ensureAtLeastOneParagraph();
74
+ this.scrubBrokenMentions();
75
+ this.updateContent();
76
+ this.updateToolbarState();
77
+ };
78
+ this.onEditorMouseup = () => {
79
+ this.saveSelection();
80
+ this.updateToolbarState();
81
+ };
82
+ this.onEditorKeyup = (e) => {
83
+ this.saveSelection();
84
+ if ([
85
+ 'ArrowLeft',
86
+ 'ArrowRight',
87
+ 'ArrowUp',
88
+ 'ArrowDown',
89
+ 'Home',
90
+ 'End',
91
+ ].includes(e.key)) {
92
+ this.updateToolbarState();
93
+ }
94
+ };
66
95
  this.onEditorKeydown = (e) => {
67
96
  if (this.singleLineEditor && e.key === 'Enter' && e.shiftKey) {
68
97
  e.preventDefault();
@@ -205,6 +234,7 @@ let NileRichTextEditor = class NileRichTextEditor extends LitElement {
205
234
  }));
206
235
  }
207
236
  disconnectedCallback() {
237
+ this.unwireEditor();
208
238
  document.removeEventListener('selectionchange', this.onSelectionChange);
209
239
  if (this.mentionsEl && this.mentionsEl.detach) {
210
240
  this.mentionsEl.detach();
@@ -230,6 +260,17 @@ let NileRichTextEditor = class NileRichTextEditor extends LitElement {
230
260
  if (changed.has('disabled') && this.editorEl) {
231
261
  this.editorEl.setAttribute('contenteditable', this.disabled ? 'false' : 'true');
232
262
  this.editorEl.tabIndex = this.disabled ? -1 : 0;
263
+ if (this.linkEl) {
264
+ this.linkEl.disabled = this.disabled;
265
+ }
266
+ }
267
+ if (changed.has('placeholder') && this.editorEl) {
268
+ if (this.placeholder) {
269
+ this.editorEl.dataset.placeholder = this.placeholder;
270
+ }
271
+ else {
272
+ delete this.editorEl.dataset.placeholder;
273
+ }
233
274
  }
234
275
  }
235
276
  ensureEditor() {
@@ -287,31 +328,21 @@ let NileRichTextEditor = class NileRichTextEditor extends LitElement {
287
328
  });
288
329
  }
289
330
  wireEditor() {
290
- this.editorEl.addEventListener('input', () => {
291
- this.ensureAtLeastOneParagraph();
292
- this.scrubBrokenMentions();
293
- this.updateContent();
294
- this.updateToolbarState();
295
- });
296
- this.editorEl.addEventListener('mouseup', () => {
297
- this.saveSelection();
298
- this.updateToolbarState();
299
- });
300
- this.editorEl.addEventListener('keyup', e => {
301
- this.saveSelection();
302
- if ([
303
- 'ArrowLeft',
304
- 'ArrowRight',
305
- 'ArrowUp',
306
- 'ArrowDown',
307
- 'Home',
308
- 'End',
309
- ].includes(e.key)) {
310
- this.updateToolbarState();
311
- }
312
- });
331
+ this.editorEl.addEventListener('click', this.onEditorClick);
332
+ this.editorEl.addEventListener('input', this.onEditorInput);
333
+ this.editorEl.addEventListener('mouseup', this.onEditorMouseup);
334
+ this.editorEl.addEventListener('keyup', this.onEditorKeyup);
313
335
  this.editorEl.addEventListener('keydown', this.onEditorKeydown);
314
336
  }
337
+ unwireEditor() {
338
+ if (!this.editorEl)
339
+ return;
340
+ this.editorEl.removeEventListener('click', this.onEditorClick);
341
+ this.editorEl.removeEventListener('input', this.onEditorInput);
342
+ this.editorEl.removeEventListener('mouseup', this.onEditorMouseup);
343
+ this.editorEl.removeEventListener('keyup', this.onEditorKeyup);
344
+ this.editorEl.removeEventListener('keydown', this.onEditorKeydown);
345
+ }
315
346
  wireAuthoredToolbar(tb) {
316
347
  this.buttonMap.clear();
317
348
  this.headingSelect = null;
@@ -332,7 +363,9 @@ let NileRichTextEditor = class NileRichTextEditor extends LitElement {
332
363
  }
333
364
  if (tag === 'nile-rte-link') {
334
365
  child.editorEl = this.editorEl;
335
- child.addEventListener('link-changed', () => {
366
+ child.disabled = this.disabled;
367
+ this.linkEl = child;
368
+ child.addEventListener('nile-link-changed', () => {
336
369
  this.updateContent();
337
370
  this.updateToolbarState();
338
371
  });
@@ -638,6 +671,11 @@ let NileRichTextEditor = class NileRichTextEditor extends LitElement {
638
671
  this.setBtnActive('italic', isItalic);
639
672
  this.setBtnActive('underline', isUnderline);
640
673
  this.setBtnActive('link', inLink);
674
+ if (this.linkEl) {
675
+ const linkBtn = this.linkEl.querySelector('nile-button');
676
+ if (linkBtn)
677
+ linkBtn.toggleAttribute('data-active', inLink);
678
+ }
641
679
  this.setBtnActive('left', alignNorm === 'left' &&
642
680
  !['center', 'right', 'justify'].includes(alignNorm));
643
681
  this.setBtnActive('center', alignNorm === 'center');