@dialpad/dialtone-vue 3.182.4 → 3.184.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/component-documentation.json +1 -1
- package/dist/lib/emoji-picker/emoji-picker-constants.cjs +1 -1
- package/dist/lib/emoji-picker/emoji-picker-constants.cjs.map +1 -1
- package/dist/lib/emoji-picker/emoji-picker-constants.js +4 -3
- package/dist/lib/emoji-picker/emoji-picker-constants.js.map +1 -1
- package/dist/lib/emoji-picker/emoji-picker.cjs +1 -1
- package/dist/lib/emoji-picker/emoji-picker.cjs.map +1 -1
- package/dist/lib/emoji-picker/emoji-picker.js +518 -415
- package/dist/lib/emoji-picker/emoji-picker.js.map +1 -1
- package/dist/lib/hovercard/hovercard.cjs +1 -1
- package/dist/lib/hovercard/hovercard.cjs.map +1 -1
- package/dist/lib/hovercard/hovercard.js +57 -43
- package/dist/lib/hovercard/hovercard.js.map +1 -1
- package/dist/lib/rich-text-editor/mention-suggestion.cjs +1 -1
- package/dist/lib/rich-text-editor/mention-suggestion.cjs.map +1 -1
- package/dist/lib/rich-text-editor/mention-suggestion.js +34 -15
- package/dist/lib/rich-text-editor/mention-suggestion.js.map +1 -1
- package/dist/lib/rich-text-editor/rich-text-editor.cjs +3 -3
- package/dist/lib/rich-text-editor/rich-text-editor.cjs.map +1 -1
- package/dist/lib/rich-text-editor/rich-text-editor.js +264 -212
- package/dist/lib/rich-text-editor/rich-text-editor.js.map +1 -1
- package/dist/lib/toggle/toggle.cjs +1 -1
- package/dist/lib/toggle/toggle.cjs.map +1 -1
- package/dist/lib/toggle/toggle.js +27 -18
- package/dist/lib/toggle/toggle.js.map +1 -1
- package/dist/node_modules/@tiptap/vue-3.cjs +1 -1
- package/dist/node_modules/@tiptap/vue-3.cjs.map +1 -1
- package/dist/node_modules/@tiptap/vue-3.js +165 -115
- package/dist/node_modules/@tiptap/vue-3.js.map +1 -1
- package/dist/style.css +1 -0
- package/dist/types/components/emoji_picker/emoji_picker.vue.d.ts +1 -1
- package/dist/types/components/emoji_picker/emoji_picker.vue.d.ts.map +1 -1
- package/dist/types/components/emoji_picker/emoji_picker_constants.d.ts +1 -0
- package/dist/types/components/emoji_picker/modules/emoji_selector.vue.d.ts +1 -1
- package/dist/types/components/emoji_picker/modules/emoji_selector.vue.d.ts.map +1 -1
- package/dist/types/components/emoji_picker/modules/emoji_tabset.vue.d.ts.map +1 -1
- package/dist/types/components/hovercard/hovercard.vue.d.ts.map +1 -1
- package/dist/types/components/rich_text_editor/extensions/channels/ChannelComponent.vue.d.ts +26 -2
- package/dist/types/components/rich_text_editor/extensions/emoji/EmojiComponent.vue.d.ts +26 -2
- package/dist/types/components/rich_text_editor/extensions/mentions/MentionComponent.vue.d.ts +26 -2
- package/dist/types/components/rich_text_editor/extensions/mentions/MentionSuggestion.vue.d.ts +5 -0
- package/dist/types/components/rich_text_editor/extensions/mentions/MentionSuggestion.vue.d.ts.map +1 -1
- package/dist/types/components/rich_text_editor/extensions/slash_command/SlashCommandComponent.vue.d.ts +26 -2
- package/dist/types/components/rich_text_editor/mention_suggestion.d.ts +23 -3
- package/dist/types/components/rich_text_editor/mention_suggestion.d.ts.map +1 -1
- package/dist/types/components/rich_text_editor/rich_text_editor.vue.d.ts.map +1 -1
- package/dist/types/components/toggle/toggle.vue.d.ts +9 -0
- package/dist/types/components/toggle/toggle.vue.d.ts.map +1 -1
- package/dist/types/recipes/conversation_view/feed_item_pill/feed_item_pill.vue.d.ts +1 -1
- package/dist/types/recipes/conversation_view/message_input/extensions/meeting_pill/MeetingPill.vue.d.ts +26 -2
- package/dist/types/recipes/leftbar/contact_row/contact_row.vue.d.ts +1 -1
- package/package.json +34 -34
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle.cjs","sources":["../../../components/toggle/toggle.vue"],"sourcesContent":["<template>\n <div\n class=\"d-toggle-wrapper\"\n v-bind=\"addClassStyleAttrs($attrs)\"\n >\n <label\n v-if=\"hasSlotContent($slots.default)\"\n :class=\"labelClass\"\n :for=\"id\"\n v-bind=\"labelChildProps\"\n data-qa=\"toggle-label\"\n >\n <!-- @slot Slot for the main content -->\n <slot />\n </label>\n <button\n :id=\"id\"\n :role=\"toggleRole\"\n type=\"button\"\n :aria-checked=\"internalChecked.toString()\"\n :disabled=\"disabled\"\n :aria-disabled=\"disabled.toString()\"\n :class=\"toggleClasses\"\n v-bind=\"inputListeners\"\n >\n <span\n v-if=\"showIcon\"\n class=\"d-toggle__inner\"\n />\n </button>\n </div>\n</template>\n\n<script>\nimport { warn } from 'vue';\nimport { getUniqueString, hasSlotContent, removeClassStyleAttrs, addClassStyleAttrs } from '@/common/utils';\nimport { TOGGLE_CHECKED_VALUES, TOGGLE_SIZE_MODIFIERS } from '@/components/toggle/toggle_constants';\n\n/**\n * A toggle (or \"switch\") is a button control element that allows the user to make a binary (on/off) selection.\n * @see https://dialtone.dialpad.com/components/toggle.html\n */\nexport default {\n compatConfig: { MODE: 3 },\n\n name: 'DtToggle',\n\n inheritAttrs: false,\n\n props: {\n\n /**\n * The id of the toggle\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * Disables the toggle interactions\n * @values true, false\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Value of the toggle\n * @model modelValue\n * @values true, false, 'mixed'\n */\n modelValue: {\n type: [Boolean, String],\n default: false,\n validator: (v) => TOGGLE_CHECKED_VALUES.includes(v),\n },\n\n /**\n * Whether the component toggles on click. If you set this to false it means you will handle the toggling manually\n * via the checked prop or v-model. Change events will still be triggered.\n * @values true, false\n */\n toggleOnClick: {\n type: Boolean,\n default: true,\n },\n\n /**\n * The size of the toggle.\n * @values sm, md\n */\n size: {\n type: String,\n default: 'md',\n validator: (s) => Object.keys(TOGGLE_SIZE_MODIFIERS).includes(s),\n },\n\n /**\n * Shows the icon\n * @values true, false\n */\n showIcon: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Used to customize the label container\n */\n labelClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * A set of props that are passed into the label container\n */\n labelChildProps: {\n type: Object,\n default: () => ({}),\n },\n },\n\n emits: [\n /**\n * Toggle change event\n *\n * @event change\n * @type {Boolean}\n * @model change\n */\n 'change',\n\n /**\n * v-model event event\n *\n * @event change\n * @type {Boolean}\n * @model change\n */\n 'update:modelValue',\n ],\n\n data () {\n return {\n internalChecked: this.modelValue,\n hasSlotContent,\n };\n },\n\n computed: {\n inputListeners () {\n return {\n ...removeClassStyleAttrs(this.$attrs),\n onClick: _ => this.toggleCheckedValue(),\n };\n },\n\n isIndeterminate () {\n return this.internalChecked === 'mixed';\n },\n\n toggleRole () {\n return this.isIndeterminate ? 'checkbox' : 'switch';\n },\n\n toggleClasses () {\n return [\n 'd-toggle',\n TOGGLE_SIZE_MODIFIERS[this.size],\n {\n 'd-toggle--checked': this.internalChecked === true,\n 'd-toggle--disabled': this.disabled,\n 'd-toggle--indeterminate': this.isIndeterminate,\n },\n ];\n },\n },\n\n watch: {\n modelValue (newChecked) {\n this.internalChecked = newChecked;\n },\n },\n\n mounted () {\n this.runValidations();\n },\n\n methods: {\n addClassStyleAttrs,\n toggleCheckedValue () {\n this.$emit('change', !this.internalChecked);\n this.$emit('update:modelValue', !this.internalChecked);\n\n if (this.toggleOnClick) {\n this.internalChecked = !this.internalChecked;\n }\n },\n\n hasSlotLabel () {\n return !!(this.$slots.default);\n },\n\n runValidations () {\n this.validateInputLabels(this.hasSlotLabel(), this.$attrs['aria-label']);\n },\n\n validateInputLabels (hasLabel, ariaLabel) {\n if (!hasLabel && !ariaLabel) {\n warn(\n 'You must provide an aria-label when there is no label passed',\n this,\n );\n }\n },\n },\n};\n</script>\n"],"names":["_sfc_main","getUniqueString","v","TOGGLE_CHECKED_VALUES","s","TOGGLE_SIZE_MODIFIERS","hasSlotContent","removeClassStyleAttrs","_","newChecked","addClassStyleAttrs","hasLabel","ariaLabel","warn","_hoisted_1","_hoisted_2","_createElementBlock","_mergeProps","$
|
|
1
|
+
{"version":3,"file":"toggle.cjs","sources":["../../../components/toggle/toggle.vue"],"sourcesContent":["<template>\n <div\n :class=\"['d-toggle-wrapper', wrapperClass]\"\n v-bind=\"addClassStyleAttrs($attrs)\"\n >\n <label\n v-if=\"hasSlotContent($slots.default)\"\n :class=\"labelClass\"\n :for=\"id\"\n v-bind=\"labelChildProps\"\n data-qa=\"toggle-label\"\n >\n <!-- @slot Slot for the main content -->\n <slot />\n </label>\n <button\n :id=\"id\"\n :role=\"toggleRole\"\n type=\"button\"\n :aria-checked=\"internalChecked.toString()\"\n :disabled=\"disabled\"\n :aria-disabled=\"disabled.toString()\"\n :class=\"toggleClasses\"\n v-bind=\"inputListeners\"\n >\n <span\n v-if=\"showIcon\"\n class=\"d-toggle__inner\"\n />\n </button>\n </div>\n</template>\n\n<script>\nimport { warn } from 'vue';\nimport { getUniqueString, hasSlotContent, removeClassStyleAttrs, addClassStyleAttrs } from '@/common/utils';\nimport { TOGGLE_CHECKED_VALUES, TOGGLE_SIZE_MODIFIERS } from '@/components/toggle/toggle_constants';\n\n/**\n * A toggle (or \"switch\") is a button control element that allows the user to make a binary (on/off) selection.\n * @see https://dialtone.dialpad.com/components/toggle.html\n */\nexport default {\n compatConfig: { MODE: 3 },\n\n name: 'DtToggle',\n\n inheritAttrs: false,\n\n props: {\n\n /**\n * The id of the toggle\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * Disables the toggle interactions\n * @values true, false\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Value of the toggle\n * @model modelValue\n * @values true, false, 'mixed'\n */\n modelValue: {\n type: [Boolean, String],\n default: false,\n validator: (v) => TOGGLE_CHECKED_VALUES.includes(v),\n },\n\n /**\n * Whether the component toggles on click. If you set this to false it means you will handle the toggling manually\n * via the checked prop or v-model. Change events will still be triggered.\n * @values true, false\n */\n toggleOnClick: {\n type: Boolean,\n default: true,\n },\n\n /**\n * The size of the toggle.\n * @values sm, md\n */\n size: {\n type: String,\n default: 'md',\n validator: (s) => Object.keys(TOGGLE_SIZE_MODIFIERS).includes(s),\n },\n\n /**\n * Shows the icon\n * @values true, false\n */\n showIcon: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Used to customize the label container\n */\n labelClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Additional styling for the wrapper element\n */\n wrapperClass: {\n type: [String, Array, Object],\n default: undefined,\n },\n\n /**\n * A set of props that are passed into the label container\n */\n labelChildProps: {\n type: Object,\n default: () => ({}),\n },\n },\n\n emits: [\n /**\n * Toggle change event\n *\n * @event change\n * @type {Boolean}\n * @model change\n */\n 'change',\n\n /**\n * v-model event event\n *\n * @event change\n * @type {Boolean}\n * @model change\n */\n 'update:modelValue',\n ],\n\n data () {\n return {\n internalChecked: this.modelValue,\n hasSlotContent,\n };\n },\n\n computed: {\n inputListeners () {\n return {\n ...removeClassStyleAttrs(this.$attrs),\n onClick: _ => this.toggleCheckedValue(),\n };\n },\n\n isIndeterminate () {\n return this.internalChecked === 'mixed';\n },\n\n toggleRole () {\n return this.isIndeterminate ? 'checkbox' : 'switch';\n },\n\n toggleClasses () {\n return [\n 'd-toggle',\n TOGGLE_SIZE_MODIFIERS[this.size],\n {\n 'd-toggle--checked': this.internalChecked === true,\n 'd-toggle--disabled': this.disabled,\n 'd-toggle--indeterminate': this.isIndeterminate,\n },\n ];\n },\n },\n\n watch: {\n modelValue (newChecked) {\n this.internalChecked = newChecked;\n },\n },\n\n mounted () {\n this.runValidations();\n },\n\n methods: {\n addClassStyleAttrs,\n toggleCheckedValue () {\n this.$emit('change', !this.internalChecked);\n this.$emit('update:modelValue', !this.internalChecked);\n\n if (this.toggleOnClick) {\n this.internalChecked = !this.internalChecked;\n }\n },\n\n hasSlotLabel () {\n return !!(this.$slots.default);\n },\n\n runValidations () {\n this.validateInputLabels(this.hasSlotLabel(), this.$attrs['aria-label']);\n },\n\n validateInputLabels (hasLabel, ariaLabel) {\n if (!hasLabel && !ariaLabel) {\n warn(\n 'You must provide an aria-label when there is no label passed',\n this,\n );\n }\n },\n },\n};\n</script>\n"],"names":["_sfc_main","getUniqueString","v","TOGGLE_CHECKED_VALUES","s","TOGGLE_SIZE_MODIFIERS","hasSlotContent","removeClassStyleAttrs","_","newChecked","addClassStyleAttrs","hasLabel","ariaLabel","warn","_hoisted_1","_hoisted_2","_openBlock","_createElementBlock","_mergeProps","$props","$options","_ctx","$data","_renderSlot","_createCommentVNode","_createElementVNode","_hoisted_3"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { warn as h, openBlock as
|
|
2
|
-
import { getUniqueString as g, hasSlotContent as m, removeClassStyleAttrs as C, addClassStyleAttrs as
|
|
3
|
-
import { TOGGLE_CHECKED_VALUES as
|
|
1
|
+
import { warn as h, openBlock as l, createElementBlock as s, mergeProps as i, renderSlot as c, createCommentVNode as n, createElementVNode as u } from "vue";
|
|
2
|
+
import { getUniqueString as g, hasSlotContent as m, removeClassStyleAttrs as C, addClassStyleAttrs as f } from "../../common/utils/index.js";
|
|
3
|
+
import { TOGGLE_CHECKED_VALUES as b, TOGGLE_SIZE_MODIFIERS as o } from "./toggle-constants.js";
|
|
4
4
|
import { _ as k } from "../../_plugin-vue_export-helper-CHgC5LLL.js";
|
|
5
5
|
const p = {
|
|
6
6
|
compatConfig: { MODE: 3 },
|
|
@@ -32,7 +32,7 @@ const p = {
|
|
|
32
32
|
modelValue: {
|
|
33
33
|
type: [Boolean, String],
|
|
34
34
|
default: !1,
|
|
35
|
-
validator: (e) =>
|
|
35
|
+
validator: (e) => b.includes(e)
|
|
36
36
|
},
|
|
37
37
|
/**
|
|
38
38
|
* Whether the component toggles on click. If you set this to false it means you will handle the toggling manually
|
|
@@ -67,6 +67,13 @@ const p = {
|
|
|
67
67
|
type: [String, Array, Object],
|
|
68
68
|
default: ""
|
|
69
69
|
},
|
|
70
|
+
/**
|
|
71
|
+
* Additional styling for the wrapper element
|
|
72
|
+
*/
|
|
73
|
+
wrapperClass: {
|
|
74
|
+
type: [String, Array, Object],
|
|
75
|
+
default: void 0
|
|
76
|
+
},
|
|
70
77
|
/**
|
|
71
78
|
* A set of props that are passed into the label container
|
|
72
79
|
*/
|
|
@@ -133,7 +140,7 @@ const p = {
|
|
|
133
140
|
this.runValidations();
|
|
134
141
|
},
|
|
135
142
|
methods: {
|
|
136
|
-
addClassStyleAttrs:
|
|
143
|
+
addClassStyleAttrs: f,
|
|
137
144
|
toggleCheckedValue() {
|
|
138
145
|
this.$emit("change", !this.internalChecked), this.$emit("update:modelValue", !this.internalChecked), this.toggleOnClick && (this.internalChecked = !this.internalChecked);
|
|
139
146
|
},
|
|
@@ -150,34 +157,36 @@ const p = {
|
|
|
150
157
|
);
|
|
151
158
|
}
|
|
152
159
|
}
|
|
153
|
-
},
|
|
160
|
+
}, S = ["for"], _ = ["id", "role", "aria-checked", "disabled", "aria-disabled"], y = {
|
|
154
161
|
key: 0,
|
|
155
162
|
class: "d-toggle__inner"
|
|
156
163
|
};
|
|
157
|
-
function V(e, d, t, E,
|
|
158
|
-
return
|
|
159
|
-
|
|
164
|
+
function V(e, d, t, E, r, a) {
|
|
165
|
+
return l(), s("div", i({
|
|
166
|
+
class: ["d-toggle-wrapper", t.wrapperClass]
|
|
167
|
+
}, a.addClassStyleAttrs(e.$attrs)), [
|
|
168
|
+
r.hasSlotContent(e.$slots.default) ? (l(), s("label", i({
|
|
160
169
|
key: 0,
|
|
161
170
|
class: t.labelClass,
|
|
162
171
|
for: t.id
|
|
163
172
|
}, t.labelChildProps, { "data-qa": "toggle-label" }), [
|
|
164
173
|
c(e.$slots, "default")
|
|
165
|
-
], 16,
|
|
174
|
+
], 16, S)) : n("", !0),
|
|
166
175
|
u("button", i({
|
|
167
176
|
id: t.id,
|
|
168
|
-
role:
|
|
177
|
+
role: a.toggleRole,
|
|
169
178
|
type: "button",
|
|
170
|
-
"aria-checked":
|
|
179
|
+
"aria-checked": r.internalChecked.toString(),
|
|
171
180
|
disabled: t.disabled,
|
|
172
181
|
"aria-disabled": t.disabled.toString(),
|
|
173
|
-
class:
|
|
174
|
-
},
|
|
175
|
-
t.showIcon ? (
|
|
176
|
-
], 16,
|
|
182
|
+
class: a.toggleClasses
|
|
183
|
+
}, a.inputListeners), [
|
|
184
|
+
t.showIcon ? (l(), s("span", y)) : n("", !0)
|
|
185
|
+
], 16, _)
|
|
177
186
|
], 16);
|
|
178
187
|
}
|
|
179
|
-
const
|
|
188
|
+
const v = /* @__PURE__ */ k(p, [["render", V]]);
|
|
180
189
|
export {
|
|
181
|
-
|
|
190
|
+
v as default
|
|
182
191
|
};
|
|
183
192
|
//# sourceMappingURL=toggle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toggle.js","sources":["../../../components/toggle/toggle.vue"],"sourcesContent":["<template>\n <div\n class=\"d-toggle-wrapper\"\n v-bind=\"addClassStyleAttrs($attrs)\"\n >\n <label\n v-if=\"hasSlotContent($slots.default)\"\n :class=\"labelClass\"\n :for=\"id\"\n v-bind=\"labelChildProps\"\n data-qa=\"toggle-label\"\n >\n <!-- @slot Slot for the main content -->\n <slot />\n </label>\n <button\n :id=\"id\"\n :role=\"toggleRole\"\n type=\"button\"\n :aria-checked=\"internalChecked.toString()\"\n :disabled=\"disabled\"\n :aria-disabled=\"disabled.toString()\"\n :class=\"toggleClasses\"\n v-bind=\"inputListeners\"\n >\n <span\n v-if=\"showIcon\"\n class=\"d-toggle__inner\"\n />\n </button>\n </div>\n</template>\n\n<script>\nimport { warn } from 'vue';\nimport { getUniqueString, hasSlotContent, removeClassStyleAttrs, addClassStyleAttrs } from '@/common/utils';\nimport { TOGGLE_CHECKED_VALUES, TOGGLE_SIZE_MODIFIERS } from '@/components/toggle/toggle_constants';\n\n/**\n * A toggle (or \"switch\") is a button control element that allows the user to make a binary (on/off) selection.\n * @see https://dialtone.dialpad.com/components/toggle.html\n */\nexport default {\n compatConfig: { MODE: 3 },\n\n name: 'DtToggle',\n\n inheritAttrs: false,\n\n props: {\n\n /**\n * The id of the toggle\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * Disables the toggle interactions\n * @values true, false\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Value of the toggle\n * @model modelValue\n * @values true, false, 'mixed'\n */\n modelValue: {\n type: [Boolean, String],\n default: false,\n validator: (v) => TOGGLE_CHECKED_VALUES.includes(v),\n },\n\n /**\n * Whether the component toggles on click. If you set this to false it means you will handle the toggling manually\n * via the checked prop or v-model. Change events will still be triggered.\n * @values true, false\n */\n toggleOnClick: {\n type: Boolean,\n default: true,\n },\n\n /**\n * The size of the toggle.\n * @values sm, md\n */\n size: {\n type: String,\n default: 'md',\n validator: (s) => Object.keys(TOGGLE_SIZE_MODIFIERS).includes(s),\n },\n\n /**\n * Shows the icon\n * @values true, false\n */\n showIcon: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Used to customize the label container\n */\n labelClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * A set of props that are passed into the label container\n */\n labelChildProps: {\n type: Object,\n default: () => ({}),\n },\n },\n\n emits: [\n /**\n * Toggle change event\n *\n * @event change\n * @type {Boolean}\n * @model change\n */\n 'change',\n\n /**\n * v-model event event\n *\n * @event change\n * @type {Boolean}\n * @model change\n */\n 'update:modelValue',\n ],\n\n data () {\n return {\n internalChecked: this.modelValue,\n hasSlotContent,\n };\n },\n\n computed: {\n inputListeners () {\n return {\n ...removeClassStyleAttrs(this.$attrs),\n onClick: _ => this.toggleCheckedValue(),\n };\n },\n\n isIndeterminate () {\n return this.internalChecked === 'mixed';\n },\n\n toggleRole () {\n return this.isIndeterminate ? 'checkbox' : 'switch';\n },\n\n toggleClasses () {\n return [\n 'd-toggle',\n TOGGLE_SIZE_MODIFIERS[this.size],\n {\n 'd-toggle--checked': this.internalChecked === true,\n 'd-toggle--disabled': this.disabled,\n 'd-toggle--indeterminate': this.isIndeterminate,\n },\n ];\n },\n },\n\n watch: {\n modelValue (newChecked) {\n this.internalChecked = newChecked;\n },\n },\n\n mounted () {\n this.runValidations();\n },\n\n methods: {\n addClassStyleAttrs,\n toggleCheckedValue () {\n this.$emit('change', !this.internalChecked);\n this.$emit('update:modelValue', !this.internalChecked);\n\n if (this.toggleOnClick) {\n this.internalChecked = !this.internalChecked;\n }\n },\n\n hasSlotLabel () {\n return !!(this.$slots.default);\n },\n\n runValidations () {\n this.validateInputLabels(this.hasSlotLabel(), this.$attrs['aria-label']);\n },\n\n validateInputLabels (hasLabel, ariaLabel) {\n if (!hasLabel && !ariaLabel) {\n warn(\n 'You must provide an aria-label when there is no label passed',\n this,\n );\n }\n },\n },\n};\n</script>\n"],"names":["_sfc_main","getUniqueString","v","TOGGLE_CHECKED_VALUES","s","TOGGLE_SIZE_MODIFIERS","hasSlotContent","removeClassStyleAttrs","_","newChecked","addClassStyleAttrs","hasLabel","ariaLabel","warn","_hoisted_1","_hoisted_2","_createElementBlock","_mergeProps","$
|
|
1
|
+
{"version":3,"file":"toggle.js","sources":["../../../components/toggle/toggle.vue"],"sourcesContent":["<template>\n <div\n :class=\"['d-toggle-wrapper', wrapperClass]\"\n v-bind=\"addClassStyleAttrs($attrs)\"\n >\n <label\n v-if=\"hasSlotContent($slots.default)\"\n :class=\"labelClass\"\n :for=\"id\"\n v-bind=\"labelChildProps\"\n data-qa=\"toggle-label\"\n >\n <!-- @slot Slot for the main content -->\n <slot />\n </label>\n <button\n :id=\"id\"\n :role=\"toggleRole\"\n type=\"button\"\n :aria-checked=\"internalChecked.toString()\"\n :disabled=\"disabled\"\n :aria-disabled=\"disabled.toString()\"\n :class=\"toggleClasses\"\n v-bind=\"inputListeners\"\n >\n <span\n v-if=\"showIcon\"\n class=\"d-toggle__inner\"\n />\n </button>\n </div>\n</template>\n\n<script>\nimport { warn } from 'vue';\nimport { getUniqueString, hasSlotContent, removeClassStyleAttrs, addClassStyleAttrs } from '@/common/utils';\nimport { TOGGLE_CHECKED_VALUES, TOGGLE_SIZE_MODIFIERS } from '@/components/toggle/toggle_constants';\n\n/**\n * A toggle (or \"switch\") is a button control element that allows the user to make a binary (on/off) selection.\n * @see https://dialtone.dialpad.com/components/toggle.html\n */\nexport default {\n compatConfig: { MODE: 3 },\n\n name: 'DtToggle',\n\n inheritAttrs: false,\n\n props: {\n\n /**\n * The id of the toggle\n */\n id: {\n type: String,\n default () { return getUniqueString(); },\n },\n\n /**\n * Disables the toggle interactions\n * @values true, false\n */\n disabled: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Value of the toggle\n * @model modelValue\n * @values true, false, 'mixed'\n */\n modelValue: {\n type: [Boolean, String],\n default: false,\n validator: (v) => TOGGLE_CHECKED_VALUES.includes(v),\n },\n\n /**\n * Whether the component toggles on click. If you set this to false it means you will handle the toggling manually\n * via the checked prop or v-model. Change events will still be triggered.\n * @values true, false\n */\n toggleOnClick: {\n type: Boolean,\n default: true,\n },\n\n /**\n * The size of the toggle.\n * @values sm, md\n */\n size: {\n type: String,\n default: 'md',\n validator: (s) => Object.keys(TOGGLE_SIZE_MODIFIERS).includes(s),\n },\n\n /**\n * Shows the icon\n * @values true, false\n */\n showIcon: {\n type: Boolean,\n default: true,\n },\n\n /**\n * Used to customize the label container\n */\n labelClass: {\n type: [String, Array, Object],\n default: '',\n },\n\n /**\n * Additional styling for the wrapper element\n */\n wrapperClass: {\n type: [String, Array, Object],\n default: undefined,\n },\n\n /**\n * A set of props that are passed into the label container\n */\n labelChildProps: {\n type: Object,\n default: () => ({}),\n },\n },\n\n emits: [\n /**\n * Toggle change event\n *\n * @event change\n * @type {Boolean}\n * @model change\n */\n 'change',\n\n /**\n * v-model event event\n *\n * @event change\n * @type {Boolean}\n * @model change\n */\n 'update:modelValue',\n ],\n\n data () {\n return {\n internalChecked: this.modelValue,\n hasSlotContent,\n };\n },\n\n computed: {\n inputListeners () {\n return {\n ...removeClassStyleAttrs(this.$attrs),\n onClick: _ => this.toggleCheckedValue(),\n };\n },\n\n isIndeterminate () {\n return this.internalChecked === 'mixed';\n },\n\n toggleRole () {\n return this.isIndeterminate ? 'checkbox' : 'switch';\n },\n\n toggleClasses () {\n return [\n 'd-toggle',\n TOGGLE_SIZE_MODIFIERS[this.size],\n {\n 'd-toggle--checked': this.internalChecked === true,\n 'd-toggle--disabled': this.disabled,\n 'd-toggle--indeterminate': this.isIndeterminate,\n },\n ];\n },\n },\n\n watch: {\n modelValue (newChecked) {\n this.internalChecked = newChecked;\n },\n },\n\n mounted () {\n this.runValidations();\n },\n\n methods: {\n addClassStyleAttrs,\n toggleCheckedValue () {\n this.$emit('change', !this.internalChecked);\n this.$emit('update:modelValue', !this.internalChecked);\n\n if (this.toggleOnClick) {\n this.internalChecked = !this.internalChecked;\n }\n },\n\n hasSlotLabel () {\n return !!(this.$slots.default);\n },\n\n runValidations () {\n this.validateInputLabels(this.hasSlotLabel(), this.$attrs['aria-label']);\n },\n\n validateInputLabels (hasLabel, ariaLabel) {\n if (!hasLabel && !ariaLabel) {\n warn(\n 'You must provide an aria-label when there is no label passed',\n this,\n );\n }\n },\n },\n};\n</script>\n"],"names":["_sfc_main","getUniqueString","v","TOGGLE_CHECKED_VALUES","s","TOGGLE_SIZE_MODIFIERS","hasSlotContent","removeClassStyleAttrs","_","newChecked","addClassStyleAttrs","hasLabel","ariaLabel","warn","_hoisted_1","_hoisted_2","_openBlock","_createElementBlock","_mergeProps","$props","$options","_ctx","$data","_renderSlot","_createCommentVNode","_createElementVNode","_hoisted_3"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("@tiptap/extension-bubble-menu"),o=require("vue"),u=require("@tiptap/core"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const h=require("@tiptap/extension-bubble-menu"),o=require("vue"),u=require("@tiptap/core"),f=require("@tiptap/extension-floating-menu"),v=o.defineComponent({name:"BubbleMenu",props:{pluginKey:{type:[String,Object],default:"bubbleMenu"},editor:{type:Object,required:!0},updateDelay:{type:Number,default:void 0},tippyOptions:{type:Object,default:()=>({})},shouldShow:{type:Function,default:null}},setup(r,{slots:t}){const n=o.ref(null);return o.onMounted(()=>{const{updateDelay:e,editor:i,pluginKey:s,shouldShow:d,tippyOptions:l}=r;i.registerPlugin(h.BubbleMenuPlugin({updateDelay:e,editor:i,element:n.value,pluginKey:s,shouldShow:d,tippyOptions:l}))}),o.onBeforeUnmount(()=>{const{pluginKey:e,editor:i}=r;i.unregisterPlugin(e)}),()=>{var e;return o.h("div",{ref:n},(e=t.default)===null||e===void 0?void 0:e.call(t))}}});function a(r){return o.customRef((t,n)=>({get(){return t(),r},set(e){r=e,requestAnimationFrame(()=>{requestAnimationFrame(()=>{n()})})}}))}class p extends u.Editor{constructor(t={}){return super(t),this.contentComponent=null,this.appContext=null,this.reactiveState=a(this.view.state),this.reactiveExtensionStorage=a(this.extensionStorage),this.on("beforeTransaction",({nextState:n})=>{this.reactiveState.value=n,this.reactiveExtensionStorage.value=this.extensionStorage}),o.markRaw(this)}get state(){return this.reactiveState?this.reactiveState.value:this.view.state}get storage(){return this.reactiveExtensionStorage?this.reactiveExtensionStorage.value:super.storage}registerPlugin(t,n){const e=super.registerPlugin(t,n);return this.reactiveState&&(this.reactiveState.value=e),e}unregisterPlugin(t){const n=super.unregisterPlugin(t);return this.reactiveState&&n&&(this.reactiveState.value=n),n}}const m=o.defineComponent({name:"EditorContent",props:{editor:{default:null,type:Object}},setup(r){const t=o.ref(),n=o.getCurrentInstance();return o.watchEffect(()=>{const e=r.editor;e&&e.options.element&&t.value&&o.nextTick(()=>{if(!t.value||!e.options.element.firstChild)return;const i=o.unref(t.value);t.value.append(...e.options.element.childNodes),e.contentComponent=n.ctx._,n&&(e.appContext={...n.appContext,provides:n.provides}),e.setOptions({element:i}),e.createNodeViews()})}),o.onBeforeUnmount(()=>{const e=r.editor;e&&(e.contentComponent=null,e.appContext=null)}),{rootEl:t}},render(){return o.h("div",{ref:r=>{this.rootEl=r}})}}),g=o.defineComponent({name:"FloatingMenu",props:{pluginKey:{type:null,default:"floatingMenu"},editor:{type:Object,required:!0},tippyOptions:{type:Object,default:()=>({})},shouldShow:{type:Function,default:null}},setup(r,{slots:t}){const n=o.ref(null);return o.onMounted(()=>{const{pluginKey:e,editor:i,tippyOptions:s,shouldShow:d}=r;i.registerPlugin(f.FloatingMenuPlugin({pluginKey:e,editor:i,element:n.value,tippyOptions:s,shouldShow:d}))}),o.onBeforeUnmount(()=>{const{pluginKey:e,editor:i}=r;i.unregisterPlugin(e)}),()=>{var e;return o.h("div",{ref:n},(e=t.default)===null||e===void 0?void 0:e.call(t))}}}),y=o.defineComponent({name:"NodeViewContent",props:{as:{type:String,default:"div"}},render(){return o.h(this.as,{style:{whiteSpace:"pre-wrap"},"data-node-view-content":""})}}),b=o.defineComponent({name:"NodeViewWrapper",props:{as:{type:String,default:"div"}},inject:["onDragStart","decorationClasses"],render(){var r,t;return o.h(this.as,{class:this.decorationClasses,style:{whiteSpace:"normal"},"data-node-view-wrapper":"",onDragstart:this.onDragStart},(t=(r=this.$slots).default)===null||t===void 0?void 0:t.call(r))}}),C=(r={})=>{const t=o.shallowRef();return o.onMounted(()=>{t.value=new p(r)}),o.onBeforeUnmount(()=>{var n,e,i;const s=(n=t.value)===null||n===void 0?void 0:n.options.element,d=s==null?void 0:s.cloneNode(!0);(e=s==null?void 0:s.parentNode)===null||e===void 0||e.replaceChild(d,s),(i=t.value)===null||i===void 0||i.destroy()}),t};class c{constructor(t,{props:n={},editor:e}){this.editor=e,this.component=o.markRaw(t),this.el=document.createElement("div"),this.props=o.reactive(n),this.renderedComponent=this.renderComponent()}get element(){return this.renderedComponent.el}get ref(){var t,n,e,i;return!((n=(t=this.renderedComponent.vNode)===null||t===void 0?void 0:t.component)===null||n===void 0)&&n.exposed?this.renderedComponent.vNode.component.exposed:(i=(e=this.renderedComponent.vNode)===null||e===void 0?void 0:e.component)===null||i===void 0?void 0:i.proxy}renderComponent(){let t=o.h(this.component,this.props);return this.editor.appContext&&(t.appContext=this.editor.appContext),typeof document<"u"&&this.el&&o.render(t,this.el),{vNode:t,destroy:()=>{this.el&&o.render(null,this.el),this.el=null,t=null},el:this.el?this.el.firstElementChild:null}}updateProps(t={}){Object.entries(t).forEach(([n,e])=>{this.props[n]=e}),this.renderComponent()}destroy(){this.renderedComponent.destroy()}}const w={editor:{type:Object,required:!0},node:{type:Object,required:!0},decorations:{type:Object,required:!0},selected:{type:Boolean,required:!0},extension:{type:Object,required:!0},getPos:{type:Function,required:!0},updateAttributes:{type:Function,required:!0},deleteNode:{type:Function,required:!0},view:{type:Object,required:!0},innerDecorations:{type:Object,required:!0},HTMLAttributes:{type:Object,required:!0}};class S extends u.NodeView{mount(){const t={editor:this.editor,node:this.node,decorations:this.decorations,innerDecorations:this.innerDecorations,view:this.view,selected:!1,extension:this.extension,HTMLAttributes:this.HTMLAttributes,getPos:()=>this.getPos(),updateAttributes:(i={})=>this.updateAttributes(i),deleteNode:()=>this.deleteNode()},n=this.onDragStart.bind(this);this.decorationClasses=o.ref(this.getDecorationClasses());const e=o.defineComponent({extends:{...this.component},props:Object.keys(t),template:this.component.template,setup:i=>{var s,d;return o.provide("onDragStart",n),o.provide("decorationClasses",this.decorationClasses),(d=(s=this.component).setup)===null||d===void 0?void 0:d.call(s,i,{expose:()=>{}})},__scopeId:this.component.__scopeId,__cssModules:this.component.__cssModules,__name:this.component.__name,__file:this.component.__file});this.handleSelectionUpdate=this.handleSelectionUpdate.bind(this),this.editor.on("selectionUpdate",this.handleSelectionUpdate),this.renderer=new c(e,{editor:this.editor,props:t})}get dom(){if(!this.renderer.element||!this.renderer.element.hasAttribute("data-node-view-wrapper"))throw Error("Please use the NodeViewWrapper component for your node view.");return this.renderer.element}get contentDOM(){return this.node.isLeaf?null:this.dom.querySelector("[data-node-view-content]")}handleSelectionUpdate(){const{from:t,to:n}=this.editor.state.selection,e=this.getPos();if(typeof e=="number")if(t<=e&&n>=e+this.node.nodeSize){if(this.renderer.props.selected)return;this.selectNode()}else{if(!this.renderer.props.selected)return;this.deselectNode()}}update(t,n,e){const i=s=>{this.decorationClasses.value=this.getDecorationClasses(),this.renderer.updateProps(s)};if(typeof this.options.update=="function"){const s=this.node,d=this.decorations,l=this.innerDecorations;return this.node=t,this.decorations=n,this.innerDecorations=e,this.options.update({oldNode:s,oldDecorations:d,newNode:t,newDecorations:n,oldInnerDecorations:l,innerDecorations:e,updateProps:()=>i({node:t,decorations:n,innerDecorations:e})})}return t.type!==this.node.type?!1:(t===this.node&&this.decorations===n&&this.innerDecorations===e||(this.node=t,this.decorations=n,this.innerDecorations=e,i({node:t,decorations:n,innerDecorations:e})),!0)}selectNode(){this.renderer.updateProps({selected:!0}),this.renderer.element&&this.renderer.element.classList.add("ProseMirror-selectednode")}deselectNode(){this.renderer.updateProps({selected:!1}),this.renderer.element&&this.renderer.element.classList.remove("ProseMirror-selectednode")}getDecorationClasses(){return this.decorations.map(t=>t.type.attrs.class).flat().join(" ")}destroy(){this.renderer.destroy(),this.editor.off("selectionUpdate",this.handleSelectionUpdate)}}function _(r,t){return n=>{if(!n.editor.contentComponent)return{};const e=typeof r=="function"&&"__vccOpts"in r?r.__vccOpts:r;return new S(e,n,t)}}exports.BubbleMenu=v;exports.Editor=p;exports.EditorContent=m;exports.FloatingMenu=g;exports.NodeViewContent=y;exports.NodeViewWrapper=b;exports.VueNodeViewRenderer=_;exports.VueRenderer=c;exports.nodeViewProps=w;exports.useEditor=C;Object.keys(u).forEach(r=>{r!=="default"&&!Object.prototype.hasOwnProperty.call(exports,r)&&Object.defineProperty(exports,r,{enumerable:!0,get:()=>u[r]})});
|
|
2
2
|
//# sourceMappingURL=vue-3.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vue-3.cjs","sources":["../../../../../node_modules/.pnpm/@tiptap+vue-3@2.6.6_@tiptap+core@2.6.6_@tiptap+pm@2.6.6__@tiptap+pm@2.6.6_vue@3.4.15_typescript@5.6.3_/node_modules/@tiptap/vue-3/dist/index.js"],"sourcesContent":["import { BubbleMenuPlugin } from '@tiptap/extension-bubble-menu';\nimport { defineComponent, ref, onMounted, onBeforeUnmount, h, markRaw, customRef, getCurrentInstance, watchEffect, nextTick, unref, shallowRef, reactive, render, provide } from 'vue';\nimport { Editor as Editor$1, NodeView } from '@tiptap/core';\nexport * from '@tiptap/core';\nimport { FloatingMenuPlugin } from '@tiptap/extension-floating-menu';\n\nconst BubbleMenu = defineComponent({\n name: 'BubbleMenu',\n props: {\n pluginKey: {\n type: [String, Object],\n default: 'bubbleMenu',\n },\n editor: {\n type: Object,\n required: true,\n },\n updateDelay: {\n type: Number,\n default: undefined,\n },\n tippyOptions: {\n type: Object,\n default: () => ({}),\n },\n shouldShow: {\n type: Function,\n default: null,\n },\n },\n setup(props, { slots }) {\n const root = ref(null);\n onMounted(() => {\n const { updateDelay, editor, pluginKey, shouldShow, tippyOptions, } = props;\n editor.registerPlugin(BubbleMenuPlugin({\n updateDelay,\n editor,\n element: root.value,\n pluginKey,\n shouldShow,\n tippyOptions,\n }));\n });\n onBeforeUnmount(() => {\n const { pluginKey, editor } = props;\n editor.unregisterPlugin(pluginKey);\n });\n return () => { var _a; return h('div', { ref: root }, (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)); };\n },\n});\n\n/* eslint-disable react-hooks/rules-of-hooks */\nfunction useDebouncedRef(value) {\n return customRef((track, trigger) => {\n return {\n get() {\n track();\n return value;\n },\n set(newValue) {\n // update state\n value = newValue;\n // update view as soon as possible\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n trigger();\n });\n });\n },\n };\n });\n}\nclass Editor extends Editor$1 {\n constructor(options = {}) {\n super(options);\n this.contentComponent = null;\n this.appContext = null;\n this.reactiveState = useDebouncedRef(this.view.state);\n this.reactiveExtensionStorage = useDebouncedRef(this.extensionStorage);\n this.on('beforeTransaction', ({ nextState }) => {\n this.reactiveState.value = nextState;\n this.reactiveExtensionStorage.value = this.extensionStorage;\n });\n return markRaw(this); // eslint-disable-line\n }\n get state() {\n return this.reactiveState ? this.reactiveState.value : this.view.state;\n }\n get storage() {\n return this.reactiveExtensionStorage ? this.reactiveExtensionStorage.value : super.storage;\n }\n /**\n * Register a ProseMirror plugin.\n */\n registerPlugin(plugin, handlePlugins) {\n super.registerPlugin(plugin, handlePlugins);\n this.reactiveState.value = this.view.state;\n }\n /**\n * Unregister a ProseMirror plugin.\n */\n unregisterPlugin(nameOrPluginKey) {\n super.unregisterPlugin(nameOrPluginKey);\n this.reactiveState.value = this.view.state;\n }\n}\n\nconst EditorContent = defineComponent({\n name: 'EditorContent',\n props: {\n editor: {\n default: null,\n type: Object,\n },\n },\n setup(props) {\n const rootEl = ref();\n const instance = getCurrentInstance();\n watchEffect(() => {\n const editor = props.editor;\n if (editor && editor.options.element && rootEl.value) {\n nextTick(() => {\n if (!rootEl.value || !editor.options.element.firstChild) {\n return;\n }\n const element = unref(rootEl.value);\n rootEl.value.append(...editor.options.element.childNodes);\n // @ts-ignore\n editor.contentComponent = instance.ctx._;\n if (instance) {\n editor.appContext = {\n ...instance.appContext,\n // Vue internally uses prototype chain to forward/shadow injects across the entire component chain\n // so don't use object spread operator or 'Object.assign' and just set `provides` as is on editor's appContext\n // @ts-expect-error forward instance's 'provides' into appContext\n provides: instance.provides,\n };\n }\n editor.setOptions({\n element,\n });\n editor.createNodeViews();\n });\n }\n });\n onBeforeUnmount(() => {\n const editor = props.editor;\n if (!editor) {\n return;\n }\n // destroy nodeviews before vue removes dom element\n if (!editor.isDestroyed) {\n editor.view.setProps({\n nodeViews: {},\n });\n }\n editor.contentComponent = null;\n editor.appContext = null;\n if (!editor.options.element.firstChild) {\n return;\n }\n const newElement = document.createElement('div');\n newElement.append(...editor.options.element.childNodes);\n editor.setOptions({\n element: newElement,\n });\n });\n return { rootEl };\n },\n render() {\n return h('div', {\n ref: (el) => { this.rootEl = el; },\n });\n },\n});\n\nconst FloatingMenu = defineComponent({\n name: 'FloatingMenu',\n props: {\n pluginKey: {\n // TODO: TypeScript breaks :(\n // type: [String, Object as PropType<Exclude<FloatingMenuPluginProps['pluginKey'], string>>],\n type: null,\n default: 'floatingMenu',\n },\n editor: {\n type: Object,\n required: true,\n },\n tippyOptions: {\n type: Object,\n default: () => ({}),\n },\n shouldShow: {\n type: Function,\n default: null,\n },\n },\n setup(props, { slots }) {\n const root = ref(null);\n onMounted(() => {\n const { pluginKey, editor, tippyOptions, shouldShow, } = props;\n editor.registerPlugin(FloatingMenuPlugin({\n pluginKey,\n editor,\n element: root.value,\n tippyOptions,\n shouldShow,\n }));\n });\n onBeforeUnmount(() => {\n const { pluginKey, editor } = props;\n editor.unregisterPlugin(pluginKey);\n });\n return () => { var _a; return h('div', { ref: root }, (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)); };\n },\n});\n\nconst NodeViewContent = defineComponent({\n name: 'NodeViewContent',\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n render() {\n return h(this.as, {\n style: {\n whiteSpace: 'pre-wrap',\n },\n 'data-node-view-content': '',\n });\n },\n});\n\nconst NodeViewWrapper = defineComponent({\n name: 'NodeViewWrapper',\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n inject: ['onDragStart', 'decorationClasses'],\n render() {\n var _a, _b;\n return h(this.as, {\n // @ts-ignore\n class: this.decorationClasses,\n style: {\n whiteSpace: 'normal',\n },\n 'data-node-view-wrapper': '',\n // @ts-ignore (https://github.com/vuejs/vue-next/issues/3031)\n onDragstart: this.onDragStart,\n }, (_b = (_a = this.$slots).default) === null || _b === void 0 ? void 0 : _b.call(_a));\n },\n});\n\nconst useEditor = (options = {}) => {\n const editor = shallowRef();\n onMounted(() => {\n editor.value = new Editor(options);\n });\n onBeforeUnmount(() => {\n var _a;\n (_a = editor.value) === null || _a === void 0 ? void 0 : _a.destroy();\n });\n return editor;\n};\n\n/**\n * This class is used to render Vue components inside the editor.\n */\nclass VueRenderer {\n constructor(component, { props = {}, editor }) {\n this.editor = editor;\n this.component = markRaw(component);\n this.el = document.createElement('div');\n this.props = reactive(props);\n this.renderedComponent = this.renderComponent();\n }\n get element() {\n return this.renderedComponent.el;\n }\n get ref() {\n var _a, _b, _c, _d;\n // Composition API\n if ((_b = (_a = this.renderedComponent.vNode) === null || _a === void 0 ? void 0 : _a.component) === null || _b === void 0 ? void 0 : _b.exposed) {\n return this.renderedComponent.vNode.component.exposed;\n }\n // Option API\n return (_d = (_c = this.renderedComponent.vNode) === null || _c === void 0 ? void 0 : _c.component) === null || _d === void 0 ? void 0 : _d.proxy;\n }\n renderComponent() {\n let vNode = h(this.component, this.props);\n if (this.editor.appContext) {\n vNode.appContext = this.editor.appContext;\n }\n if (typeof document !== 'undefined' && this.el) {\n render(vNode, this.el);\n }\n const destroy = () => {\n if (this.el) {\n render(null, this.el);\n }\n this.el = null;\n vNode = null;\n };\n return { vNode, destroy, el: this.el ? this.el.firstElementChild : null };\n }\n updateProps(props = {}) {\n Object.entries(props).forEach(([key, value]) => {\n this.props[key] = value;\n });\n this.renderComponent();\n }\n destroy() {\n this.renderedComponent.destroy();\n }\n}\n\nconst nodeViewProps = {\n editor: {\n type: Object,\n required: true,\n },\n node: {\n type: Object,\n required: true,\n },\n decorations: {\n type: Object,\n required: true,\n },\n selected: {\n type: Boolean,\n required: true,\n },\n extension: {\n type: Object,\n required: true,\n },\n getPos: {\n type: Function,\n required: true,\n },\n updateAttributes: {\n type: Function,\n required: true,\n },\n deleteNode: {\n type: Function,\n required: true,\n },\n};\nclass VueNodeView extends NodeView {\n mount() {\n const props = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations,\n selected: false,\n extension: this.extension,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n };\n const onDragStart = this.onDragStart.bind(this);\n this.decorationClasses = ref(this.getDecorationClasses());\n const extendedComponent = defineComponent({\n extends: { ...this.component },\n props: Object.keys(props),\n template: this.component.template,\n setup: reactiveProps => {\n var _a, _b;\n provide('onDragStart', onDragStart);\n provide('decorationClasses', this.decorationClasses);\n return (_b = (_a = this.component).setup) === null || _b === void 0 ? void 0 : _b.call(_a, reactiveProps, {\n expose: () => undefined,\n });\n },\n // add support for scoped styles\n // @ts-ignore\n // eslint-disable-next-line\n __scopeId: this.component.__scopeId,\n // add support for CSS Modules\n // @ts-ignore\n // eslint-disable-next-line\n __cssModules: this.component.__cssModules,\n // add support for vue devtools\n // @ts-ignore\n // eslint-disable-next-line\n __name: this.component.__name,\n // @ts-ignore\n // eslint-disable-next-line\n __file: this.component.__file,\n });\n this.renderer = new VueRenderer(extendedComponent, {\n editor: this.editor,\n props,\n });\n }\n get dom() {\n if (!this.renderer.element || !this.renderer.element.hasAttribute('data-node-view-wrapper')) {\n throw Error('Please use the NodeViewWrapper component for your node view.');\n }\n return this.renderer.element;\n }\n get contentDOM() {\n if (this.node.isLeaf) {\n return null;\n }\n return this.dom.querySelector('[data-node-view-content]');\n }\n update(node, decorations) {\n const updateProps = (props) => {\n this.decorationClasses.value = this.getDecorationClasses();\n this.renderer.updateProps(props);\n };\n if (typeof this.options.update === 'function') {\n const oldNode = this.node;\n const oldDecorations = this.decorations;\n this.node = node;\n this.decorations = decorations;\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n updateProps: () => updateProps({ node, decorations }),\n });\n }\n if (node.type !== this.node.type) {\n return false;\n }\n if (node === this.node && this.decorations === decorations) {\n return true;\n }\n this.node = node;\n this.decorations = decorations;\n updateProps({ node, decorations });\n return true;\n }\n selectNode() {\n this.renderer.updateProps({\n selected: true,\n });\n if (this.renderer.element) {\n this.renderer.element.classList.add('ProseMirror-selectednode');\n }\n }\n deselectNode() {\n this.renderer.updateProps({\n selected: false,\n });\n if (this.renderer.element) {\n this.renderer.element.classList.remove('ProseMirror-selectednode');\n }\n }\n getDecorationClasses() {\n return (this.decorations\n // @ts-ignore\n .map(item => item.type.attrs.class)\n .flat()\n .join(' '));\n }\n destroy() {\n this.renderer.destroy();\n }\n}\nfunction VueNodeViewRenderer(component, options) {\n return (props) => {\n // try to get the parent component\n // this is important for vue devtools to show the component hierarchy correctly\n // maybe it’s `undefined` because <editor-content> isn’t rendered yet\n if (!props.editor.contentComponent) {\n return {};\n }\n // check for class-component and normalize if neccessary\n const normalizedComponent = typeof component === 'function' && '__vccOpts' in component\n // eslint-disable-next-line no-underscore-dangle\n ? component.__vccOpts\n : component;\n return new VueNodeView(normalizedComponent, props, options);\n };\n}\n\nexport { BubbleMenu, Editor, EditorContent, FloatingMenu, NodeViewContent, NodeViewWrapper, VueNodeViewRenderer, VueRenderer, nodeViewProps, useEditor };\n//# sourceMappingURL=index.js.map\n"],"names":["BubbleMenu","defineComponent","props","slots","root","ref","onMounted","updateDelay","editor","pluginKey","shouldShow","tippyOptions","BubbleMenuPlugin","onBeforeUnmount","_a","h","useDebouncedRef","value","customRef","track","trigger","newValue","Editor","Editor$1","options","nextState","markRaw","plugin","handlePlugins","nameOrPluginKey","EditorContent","rootEl","instance","getCurrentInstance","watchEffect","nextTick","element","unref","newElement","el","FloatingMenu","FloatingMenuPlugin","NodeViewContent","NodeViewWrapper","_b","useEditor","shallowRef","VueRenderer","component","reactive","_c","_d","vNode","render","key","nodeViewProps","VueNodeView","NodeView","attributes","onDragStart","extendedComponent","reactiveProps","provide","node","decorations","updateProps","oldNode","oldDecorations","item","VueNodeViewRenderer","normalizedComponent"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"vue-3.cjs","sources":["../../../../../node_modules/.pnpm/@tiptap+vue-3@2.12.0_@tiptap+core@2.12.0_@tiptap+pm@2.12.0__@tiptap+pm@2.12.0_vue@3.4.15_typescript@5.6.3_/node_modules/@tiptap/vue-3/dist/index.js"],"sourcesContent":["import { BubbleMenuPlugin } from '@tiptap/extension-bubble-menu';\nimport { defineComponent, ref, onMounted, onBeforeUnmount, h, markRaw, customRef, getCurrentInstance, watchEffect, nextTick, unref, shallowRef, reactive, render, provide } from 'vue';\nimport { Editor as Editor$1, NodeView } from '@tiptap/core';\nexport * from '@tiptap/core';\nimport { FloatingMenuPlugin } from '@tiptap/extension-floating-menu';\n\nconst BubbleMenu = defineComponent({\n name: 'BubbleMenu',\n props: {\n pluginKey: {\n type: [String, Object],\n default: 'bubbleMenu',\n },\n editor: {\n type: Object,\n required: true,\n },\n updateDelay: {\n type: Number,\n default: undefined,\n },\n tippyOptions: {\n type: Object,\n default: () => ({}),\n },\n shouldShow: {\n type: Function,\n default: null,\n },\n },\n setup(props, { slots }) {\n const root = ref(null);\n onMounted(() => {\n const { updateDelay, editor, pluginKey, shouldShow, tippyOptions, } = props;\n editor.registerPlugin(BubbleMenuPlugin({\n updateDelay,\n editor,\n element: root.value,\n pluginKey,\n shouldShow,\n tippyOptions,\n }));\n });\n onBeforeUnmount(() => {\n const { pluginKey, editor } = props;\n editor.unregisterPlugin(pluginKey);\n });\n return () => { var _a; return h('div', { ref: root }, (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)); };\n },\n});\n\n/* eslint-disable react-hooks/rules-of-hooks */\nfunction useDebouncedRef(value) {\n return customRef((track, trigger) => {\n return {\n get() {\n track();\n return value;\n },\n set(newValue) {\n // update state\n value = newValue;\n // update view as soon as possible\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n trigger();\n });\n });\n },\n };\n });\n}\nclass Editor extends Editor$1 {\n constructor(options = {}) {\n super(options);\n this.contentComponent = null;\n this.appContext = null;\n this.reactiveState = useDebouncedRef(this.view.state);\n this.reactiveExtensionStorage = useDebouncedRef(this.extensionStorage);\n this.on('beforeTransaction', ({ nextState }) => {\n this.reactiveState.value = nextState;\n this.reactiveExtensionStorage.value = this.extensionStorage;\n });\n return markRaw(this); // eslint-disable-line\n }\n get state() {\n return this.reactiveState ? this.reactiveState.value : this.view.state;\n }\n get storage() {\n return this.reactiveExtensionStorage ? this.reactiveExtensionStorage.value : super.storage;\n }\n /**\n * Register a ProseMirror plugin.\n */\n registerPlugin(plugin, handlePlugins) {\n const nextState = super.registerPlugin(plugin, handlePlugins);\n if (this.reactiveState) {\n this.reactiveState.value = nextState;\n }\n return nextState;\n }\n /**\n * Unregister a ProseMirror plugin.\n */\n unregisterPlugin(nameOrPluginKey) {\n const nextState = super.unregisterPlugin(nameOrPluginKey);\n if (this.reactiveState && nextState) {\n this.reactiveState.value = nextState;\n }\n return nextState;\n }\n}\n\nconst EditorContent = defineComponent({\n name: 'EditorContent',\n props: {\n editor: {\n default: null,\n type: Object,\n },\n },\n setup(props) {\n const rootEl = ref();\n const instance = getCurrentInstance();\n watchEffect(() => {\n const editor = props.editor;\n if (editor && editor.options.element && rootEl.value) {\n nextTick(() => {\n if (!rootEl.value || !editor.options.element.firstChild) {\n return;\n }\n const element = unref(rootEl.value);\n rootEl.value.append(...editor.options.element.childNodes);\n // @ts-ignore\n editor.contentComponent = instance.ctx._;\n if (instance) {\n editor.appContext = {\n ...instance.appContext,\n // Vue internally uses prototype chain to forward/shadow injects across the entire component chain\n // so don't use object spread operator or 'Object.assign' and just set `provides` as is on editor's appContext\n // @ts-expect-error forward instance's 'provides' into appContext\n provides: instance.provides,\n };\n }\n editor.setOptions({\n element,\n });\n editor.createNodeViews();\n });\n }\n });\n onBeforeUnmount(() => {\n const editor = props.editor;\n if (!editor) {\n return;\n }\n editor.contentComponent = null;\n editor.appContext = null;\n });\n return { rootEl };\n },\n render() {\n return h('div', {\n ref: (el) => { this.rootEl = el; },\n });\n },\n});\n\nconst FloatingMenu = defineComponent({\n name: 'FloatingMenu',\n props: {\n pluginKey: {\n // TODO: TypeScript breaks :(\n // type: [String, Object as PropType<Exclude<FloatingMenuPluginProps['pluginKey'], string>>],\n type: null,\n default: 'floatingMenu',\n },\n editor: {\n type: Object,\n required: true,\n },\n tippyOptions: {\n type: Object,\n default: () => ({}),\n },\n shouldShow: {\n type: Function,\n default: null,\n },\n },\n setup(props, { slots }) {\n const root = ref(null);\n onMounted(() => {\n const { pluginKey, editor, tippyOptions, shouldShow, } = props;\n editor.registerPlugin(FloatingMenuPlugin({\n pluginKey,\n editor,\n element: root.value,\n tippyOptions,\n shouldShow,\n }));\n });\n onBeforeUnmount(() => {\n const { pluginKey, editor } = props;\n editor.unregisterPlugin(pluginKey);\n });\n return () => { var _a; return h('div', { ref: root }, (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots)); };\n },\n});\n\nconst NodeViewContent = defineComponent({\n name: 'NodeViewContent',\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n render() {\n return h(this.as, {\n style: {\n whiteSpace: 'pre-wrap',\n },\n 'data-node-view-content': '',\n });\n },\n});\n\nconst NodeViewWrapper = defineComponent({\n name: 'NodeViewWrapper',\n props: {\n as: {\n type: String,\n default: 'div',\n },\n },\n inject: ['onDragStart', 'decorationClasses'],\n render() {\n var _a, _b;\n return h(this.as, {\n // @ts-ignore\n class: this.decorationClasses,\n style: {\n whiteSpace: 'normal',\n },\n 'data-node-view-wrapper': '',\n // @ts-ignore (https://github.com/vuejs/vue-next/issues/3031)\n onDragstart: this.onDragStart,\n }, (_b = (_a = this.$slots).default) === null || _b === void 0 ? void 0 : _b.call(_a));\n },\n});\n\nconst useEditor = (options = {}) => {\n const editor = shallowRef();\n onMounted(() => {\n editor.value = new Editor(options);\n });\n onBeforeUnmount(() => {\n var _a, _b, _c;\n // Cloning root node (and its children) to avoid content being lost by destroy\n const nodes = (_a = editor.value) === null || _a === void 0 ? void 0 : _a.options.element;\n const newEl = nodes === null || nodes === void 0 ? void 0 : nodes.cloneNode(true);\n (_b = nodes === null || nodes === void 0 ? void 0 : nodes.parentNode) === null || _b === void 0 ? void 0 : _b.replaceChild(newEl, nodes);\n (_c = editor.value) === null || _c === void 0 ? void 0 : _c.destroy();\n });\n return editor;\n};\n\n/**\n * This class is used to render Vue components inside the editor.\n */\nclass VueRenderer {\n constructor(component, { props = {}, editor }) {\n this.editor = editor;\n this.component = markRaw(component);\n this.el = document.createElement('div');\n this.props = reactive(props);\n this.renderedComponent = this.renderComponent();\n }\n get element() {\n return this.renderedComponent.el;\n }\n get ref() {\n var _a, _b, _c, _d;\n // Composition API\n if ((_b = (_a = this.renderedComponent.vNode) === null || _a === void 0 ? void 0 : _a.component) === null || _b === void 0 ? void 0 : _b.exposed) {\n return this.renderedComponent.vNode.component.exposed;\n }\n // Option API\n return (_d = (_c = this.renderedComponent.vNode) === null || _c === void 0 ? void 0 : _c.component) === null || _d === void 0 ? void 0 : _d.proxy;\n }\n renderComponent() {\n let vNode = h(this.component, this.props);\n if (this.editor.appContext) {\n vNode.appContext = this.editor.appContext;\n }\n if (typeof document !== 'undefined' && this.el) {\n render(vNode, this.el);\n }\n const destroy = () => {\n if (this.el) {\n render(null, this.el);\n }\n this.el = null;\n vNode = null;\n };\n return { vNode, destroy, el: this.el ? this.el.firstElementChild : null };\n }\n updateProps(props = {}) {\n Object.entries(props).forEach(([key, value]) => {\n this.props[key] = value;\n });\n this.renderComponent();\n }\n destroy() {\n this.renderedComponent.destroy();\n }\n}\n\n/* eslint-disable no-underscore-dangle */\nconst nodeViewProps = {\n editor: {\n type: Object,\n required: true,\n },\n node: {\n type: Object,\n required: true,\n },\n decorations: {\n type: Object,\n required: true,\n },\n selected: {\n type: Boolean,\n required: true,\n },\n extension: {\n type: Object,\n required: true,\n },\n getPos: {\n type: Function,\n required: true,\n },\n updateAttributes: {\n type: Function,\n required: true,\n },\n deleteNode: {\n type: Function,\n required: true,\n },\n view: {\n type: Object,\n required: true,\n },\n innerDecorations: {\n type: Object,\n required: true,\n },\n HTMLAttributes: {\n type: Object,\n required: true,\n },\n};\nclass VueNodeView extends NodeView {\n mount() {\n const props = {\n editor: this.editor,\n node: this.node,\n decorations: this.decorations,\n innerDecorations: this.innerDecorations,\n view: this.view,\n selected: false,\n extension: this.extension,\n HTMLAttributes: this.HTMLAttributes,\n getPos: () => this.getPos(),\n updateAttributes: (attributes = {}) => this.updateAttributes(attributes),\n deleteNode: () => this.deleteNode(),\n };\n const onDragStart = this.onDragStart.bind(this);\n this.decorationClasses = ref(this.getDecorationClasses());\n const extendedComponent = defineComponent({\n extends: { ...this.component },\n props: Object.keys(props),\n template: this.component.template,\n setup: reactiveProps => {\n var _a, _b;\n provide('onDragStart', onDragStart);\n provide('decorationClasses', this.decorationClasses);\n return (_b = (_a = this.component).setup) === null || _b === void 0 ? void 0 : _b.call(_a, reactiveProps, {\n expose: () => undefined,\n });\n },\n // add support for scoped styles\n // @ts-ignore\n // eslint-disable-next-line\n __scopeId: this.component.__scopeId,\n // add support for CSS Modules\n // @ts-ignore\n // eslint-disable-next-line\n __cssModules: this.component.__cssModules,\n // add support for vue devtools\n // @ts-ignore\n // eslint-disable-next-line\n __name: this.component.__name,\n // @ts-ignore\n // eslint-disable-next-line\n __file: this.component.__file,\n });\n this.handleSelectionUpdate = this.handleSelectionUpdate.bind(this);\n this.editor.on('selectionUpdate', this.handleSelectionUpdate);\n this.renderer = new VueRenderer(extendedComponent, {\n editor: this.editor,\n props,\n });\n }\n /**\n * Return the DOM element.\n * This is the element that will be used to display the node view.\n */\n get dom() {\n if (!this.renderer.element || !this.renderer.element.hasAttribute('data-node-view-wrapper')) {\n throw Error('Please use the NodeViewWrapper component for your node view.');\n }\n return this.renderer.element;\n }\n /**\n * Return the content DOM element.\n * This is the element that will be used to display the rich-text content of the node.\n */\n get contentDOM() {\n if (this.node.isLeaf) {\n return null;\n }\n return this.dom.querySelector('[data-node-view-content]');\n }\n /**\n * On editor selection update, check if the node is selected.\n * If it is, call `selectNode`, otherwise call `deselectNode`.\n */\n handleSelectionUpdate() {\n const { from, to } = this.editor.state.selection;\n const pos = this.getPos();\n if (typeof pos !== 'number') {\n return;\n }\n if (from <= pos && to >= pos + this.node.nodeSize) {\n if (this.renderer.props.selected) {\n return;\n }\n this.selectNode();\n }\n else {\n if (!this.renderer.props.selected) {\n return;\n }\n this.deselectNode();\n }\n }\n /**\n * On update, update the React component.\n * To prevent unnecessary updates, the `update` option can be used.\n */\n update(node, decorations, innerDecorations) {\n const rerenderComponent = (props) => {\n this.decorationClasses.value = this.getDecorationClasses();\n this.renderer.updateProps(props);\n };\n if (typeof this.options.update === 'function') {\n const oldNode = this.node;\n const oldDecorations = this.decorations;\n const oldInnerDecorations = this.innerDecorations;\n this.node = node;\n this.decorations = decorations;\n this.innerDecorations = innerDecorations;\n return this.options.update({\n oldNode,\n oldDecorations,\n newNode: node,\n newDecorations: decorations,\n oldInnerDecorations,\n innerDecorations,\n updateProps: () => rerenderComponent({ node, decorations, innerDecorations }),\n });\n }\n if (node.type !== this.node.type) {\n return false;\n }\n if (node === this.node && this.decorations === decorations && this.innerDecorations === innerDecorations) {\n return true;\n }\n this.node = node;\n this.decorations = decorations;\n this.innerDecorations = innerDecorations;\n rerenderComponent({ node, decorations, innerDecorations });\n return true;\n }\n /**\n * Select the node.\n * Add the `selected` prop and the `ProseMirror-selectednode` class.\n */\n selectNode() {\n this.renderer.updateProps({\n selected: true,\n });\n if (this.renderer.element) {\n this.renderer.element.classList.add('ProseMirror-selectednode');\n }\n }\n /**\n * Deselect the node.\n * Remove the `selected` prop and the `ProseMirror-selectednode` class.\n */\n deselectNode() {\n this.renderer.updateProps({\n selected: false,\n });\n if (this.renderer.element) {\n this.renderer.element.classList.remove('ProseMirror-selectednode');\n }\n }\n getDecorationClasses() {\n return (this.decorations\n // @ts-ignore\n .map(item => item.type.attrs.class)\n .flat()\n .join(' '));\n }\n destroy() {\n this.renderer.destroy();\n this.editor.off('selectionUpdate', this.handleSelectionUpdate);\n }\n}\nfunction VueNodeViewRenderer(component, options) {\n return props => {\n // try to get the parent component\n // this is important for vue devtools to show the component hierarchy correctly\n // maybe it’s `undefined` because <editor-content> isn’t rendered yet\n if (!props.editor.contentComponent) {\n return {};\n }\n // check for class-component and normalize if neccessary\n const normalizedComponent = typeof component === 'function' && '__vccOpts' in component\n ? component.__vccOpts\n : component;\n return new VueNodeView(normalizedComponent, props, options);\n };\n}\n\nexport { BubbleMenu, Editor, EditorContent, FloatingMenu, NodeViewContent, NodeViewWrapper, VueNodeViewRenderer, VueRenderer, nodeViewProps, useEditor };\n//# sourceMappingURL=index.js.map\n"],"names":["BubbleMenu","defineComponent","props","slots","root","ref","onMounted","updateDelay","editor","pluginKey","shouldShow","tippyOptions","BubbleMenuPlugin","onBeforeUnmount","_a","h","useDebouncedRef","value","customRef","track","trigger","newValue","Editor","Editor$1","options","nextState","markRaw","plugin","handlePlugins","nameOrPluginKey","EditorContent","rootEl","instance","getCurrentInstance","watchEffect","nextTick","element","unref","el","FloatingMenu","FloatingMenuPlugin","NodeViewContent","NodeViewWrapper","_b","useEditor","shallowRef","_c","nodes","newEl","VueRenderer","component","reactive","_d","vNode","render","key","nodeViewProps","VueNodeView","NodeView","attributes","onDragStart","extendedComponent","reactiveProps","provide","from","to","pos","node","decorations","innerDecorations","rerenderComponent","oldNode","oldDecorations","oldInnerDecorations","item","VueNodeViewRenderer","normalizedComponent"],"mappings":"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","x_google_ignoreList":[0]}
|