"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/placeholder/index.ts var index_exports = {}; __export(index_exports, { Placeholder: () => Placeholder, preparePlaceholderAttribute: () => preparePlaceholderAttribute }); module.exports = __toCommonJS(index_exports); // src/placeholder/placeholder.ts var import_core = require("@tiptap/core"); var import_state = require("@tiptap/pm/state"); var import_view = require("@tiptap/pm/view"); var DEFAULT_DATA_ATTRIBUTE = "placeholder"; function preparePlaceholderAttribute(attr) { return attr.replace(/\s+/g, "-").replace(/[^a-zA-Z0-9-]/g, "").replace(/^[0-9-]+/, "").replace(/^-+/, "").toLowerCase(); } var Placeholder = import_core.Extension.create({ name: "placeholder", addOptions() { return { emptyEditorClass: "is-editor-empty", emptyNodeClass: "is-empty", dataAttribute: DEFAULT_DATA_ATTRIBUTE, placeholder: "Write something \u2026", showOnlyWhenEditable: true, showOnlyCurrent: true, includeChildren: false }; }, addProseMirrorPlugins() { const dataAttribute = this.options.dataAttribute ? `data-${preparePlaceholderAttribute(this.options.dataAttribute)}` : `data-${DEFAULT_DATA_ATTRIBUTE}`; return [ new import_state.Plugin({ key: new import_state.PluginKey("placeholder"), props: { decorations: ({ doc, selection }) => { const active = this.editor.isEditable || !this.options.showOnlyWhenEditable; const { anchor } = selection; const decorations = []; if (!active) { return null; } const isEmptyDoc = this.editor.isEmpty; doc.descendants((node, pos) => { const hasAnchor = anchor >= pos && anchor <= pos + node.nodeSize; const isEmpty = !node.isLeaf && (0, import_core.isNodeEmpty)(node); if (!node.type.isTextblock) { return this.options.includeChildren; } if ((hasAnchor || !this.options.showOnlyCurrent) && isEmpty) { const classes = [this.options.emptyNodeClass]; if (isEmptyDoc) { classes.push(this.options.emptyEditorClass); } const decoration = import_view.Decoration.node(pos, pos + node.nodeSize, { class: classes.join(" "), [dataAttribute]: typeof this.options.placeholder === "function" ? this.options.placeholder({ editor: this.editor, node, pos, hasAnchor }) : this.options.placeholder }); decorations.push(decoration); } return this.options.includeChildren; }); return import_view.DecorationSet.create(doc, decorations); } } }) ]; } }); // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { Placeholder, preparePlaceholderAttribute }); //# sourceMappingURL=index.cjs.map