vue2-bbl-editor 1.3.9 → 1.4.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.
@@ -2546,13 +2546,6 @@ module.exports = require("@tiptap/extension-table-row");
2546
2546
 
2547
2547
  /***/ }),
2548
2548
 
2549
- /***/ "3eca":
2550
- /***/ (function(module, exports, __webpack_require__) {
2551
-
2552
- // extracted by mini-css-extract-plugin
2553
-
2554
- /***/ }),
2555
-
2556
2549
  /***/ "3fc1":
2557
2550
  /***/ (function(module, exports) {
2558
2551
 
@@ -12883,17 +12876,6 @@ var PluginKey = /*#__PURE__*/function () {
12883
12876
  // state/index.ts
12884
12877
 
12885
12878
 
12886
- /***/ }),
12887
-
12888
- /***/ "7fc2":
12889
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
12890
-
12891
- "use strict";
12892
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PremiumBblEditorOptionsAPI_vue_vue_type_style_index_0_id_1c3ede3e_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("3eca");
12893
- /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PremiumBblEditorOptionsAPI_vue_vue_type_style_index_0_id_1c3ede3e_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PremiumBblEditorOptionsAPI_vue_vue_type_style_index_0_id_1c3ede3e_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__);
12894
- /* unused harmony reexport * */
12895
-
12896
-
12897
12879
  /***/ }),
12898
12880
 
12899
12881
  /***/ "7ff7":
@@ -15527,6 +15509,9 @@ function _arrayLikeToArray(r, a) {
15527
15509
  // EXTERNAL MODULE: ./src/extensions/CustomParagraph.js
15528
15510
  var CustomParagraph = __webpack_require__("baf3");
15529
15511
 
15512
+ // EXTERNAL MODULE: ./src/extensions/CustomHeading.js
15513
+ var CustomHeading = __webpack_require__("8d48");
15514
+
15530
15515
  // CONCATENATED MODULE: ./src/composables/useEditor.js
15531
15516
  function _typeof(o) {
15532
15517
  "@babel/helpers - typeof";
@@ -15605,6 +15590,7 @@ function _toPrimitive(t, r) {
15605
15590
 
15606
15591
 
15607
15592
 
15593
+
15608
15594
 
15609
15595
 
15610
15596
  // Custom Code extension with inline styles
@@ -16032,9 +16018,13 @@ function useEditor(props, emit) {
16032
16018
  code: false,
16033
16019
  blockquote: false,
16034
16020
  // Disable default blockquote
16035
- paragraph: false // Disable default paragraph to use our custom one
16021
+ paragraph: false,
16022
+ // Disable default paragraph to use our custom one
16023
+ heading: false // Disable default heading to use our custom one
16036
16024
  }), CustomParagraph["a" /* default */],
16037
16025
  // Add our custom paragraph with empty class support
16026
+ CustomHeading["a" /* default */],
16027
+ // Add our custom heading with empty attribute support
16038
16028
  CustomCode, CustomCodeBlock, CustomBlockquote,
16039
16029
  // Add our custom blockquote
16040
16030
  extension_text_style_default.a, extension_placeholder_default.a.configure({
@@ -16732,6 +16722,186 @@ module.exports = require("vue");
16732
16722
 
16733
16723
  /***/ }),
16734
16724
 
16725
+ /***/ "8d48":
16726
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
16727
+
16728
+ "use strict";
16729
+ /* harmony import */ var _tiptap_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("5924");
16730
+ /* harmony import */ var _tiptap_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_tiptap_core__WEBPACK_IMPORTED_MODULE_0__);
16731
+ function _typeof(o) {
16732
+ "@babel/helpers - typeof";
16733
+
16734
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
16735
+ return typeof o;
16736
+ } : function (o) {
16737
+ return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
16738
+ }, _typeof(o);
16739
+ }
16740
+ function ownKeys(e, r) {
16741
+ var t = Object.keys(e);
16742
+ if (Object.getOwnPropertySymbols) {
16743
+ var o = Object.getOwnPropertySymbols(e);
16744
+ r && (o = o.filter(function (r) {
16745
+ return Object.getOwnPropertyDescriptor(e, r).enumerable;
16746
+ })), t.push.apply(t, o);
16747
+ }
16748
+ return t;
16749
+ }
16750
+ function _objectSpread(e) {
16751
+ for (var r = 1; r < arguments.length; r++) {
16752
+ var t = null != arguments[r] ? arguments[r] : {};
16753
+ r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
16754
+ _defineProperty(e, r, t[r]);
16755
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
16756
+ Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
16757
+ });
16758
+ }
16759
+ return e;
16760
+ }
16761
+ function _defineProperty(e, r, t) {
16762
+ return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
16763
+ value: t,
16764
+ enumerable: !0,
16765
+ configurable: !0,
16766
+ writable: !0
16767
+ }) : e[r] = t, e;
16768
+ }
16769
+ function _toPropertyKey(t) {
16770
+ var i = _toPrimitive(t, "string");
16771
+ return "symbol" == _typeof(i) ? i : i + "";
16772
+ }
16773
+ function _toPrimitive(t, r) {
16774
+ if ("object" != _typeof(t) || !t) return t;
16775
+ var e = t[Symbol.toPrimitive];
16776
+ if (void 0 !== e) {
16777
+ var i = e.call(t, r || "default");
16778
+ if ("object" != _typeof(i)) return i;
16779
+ throw new TypeError("@@toPrimitive must return a primitive value.");
16780
+ }
16781
+ return ("string" === r ? String : Number)(t);
16782
+ }
16783
+
16784
+
16785
+ /**
16786
+ * CustomHeading Extension
16787
+ *
16788
+ * Extends the default heading to add custom attributes
16789
+ * - Adds 'data-empty="true"' attribute to empty headings in HTML output
16790
+ * - Maintains all default heading functionality
16791
+ * - Provides better styling control for empty content
16792
+ */
16793
+ /* harmony default export */ __webpack_exports__["a"] = (_tiptap_core__WEBPACK_IMPORTED_MODULE_0__["Node"].create({
16794
+ name: 'heading',
16795
+ priority: 1000,
16796
+ addOptions: function addOptions() {
16797
+ return {
16798
+ levels: [1, 2, 3, 4, 5, 6],
16799
+ HTMLAttributes: {}
16800
+ };
16801
+ },
16802
+ content: 'inline*',
16803
+ group: 'block',
16804
+ defining: true,
16805
+ addAttributes: function addAttributes() {
16806
+ return {
16807
+ level: {
16808
+ default: 1,
16809
+ rendered: false
16810
+ }
16811
+ };
16812
+ },
16813
+ parseHTML: function parseHTML() {
16814
+ return this.options.levels.map(function (level) {
16815
+ return {
16816
+ tag: "h".concat(level),
16817
+ attrs: {
16818
+ level: level
16819
+ }
16820
+ };
16821
+ });
16822
+ },
16823
+ renderHTML: function renderHTML(_ref) {
16824
+ var node = _ref.node,
16825
+ HTMLAttributes = _ref.HTMLAttributes;
16826
+ var hasContent = node.content.size > 0;
16827
+ var isEmpty = !hasContent || node.content.size === 0;
16828
+
16829
+ // Check if heading only contains empty text or whitespace
16830
+ var isReallyEmpty = true;
16831
+ if (hasContent) {
16832
+ node.content.forEach(function (child) {
16833
+ if (child.type.name !== 'text' || child.text && child.text.trim() !== '') {
16834
+ isReallyEmpty = false;
16835
+ }
16836
+ });
16837
+ }
16838
+
16839
+ // Merge custom attributes with existing HTMLAttributes
16840
+ var attrs = Object(_tiptap_core__WEBPACK_IMPORTED_MODULE_0__["mergeAttributes"])(this.options.HTMLAttributes, HTMLAttributes);
16841
+
16842
+ // Add data-empty attribute if heading is empty or only contains whitespace
16843
+ if (isEmpty || isReallyEmpty) {
16844
+ attrs['data-empty'] = 'true';
16845
+ }
16846
+ var hasLevel = this.options.levels.includes(node.attrs.level);
16847
+ var level = hasLevel ? node.attrs.level : this.options.levels[0];
16848
+ return ["h".concat(level), attrs, 0];
16849
+ },
16850
+ addCommands: function addCommands() {
16851
+ var _this = this;
16852
+ return {
16853
+ setHeading: function setHeading(attributes) {
16854
+ return function (_ref2) {
16855
+ var commands = _ref2.commands;
16856
+ if (!_this.options.levels.includes(attributes.level)) {
16857
+ return false;
16858
+ }
16859
+ return commands.setNode(_this.name, attributes);
16860
+ };
16861
+ },
16862
+ toggleHeading: function toggleHeading(attributes) {
16863
+ return function (_ref3) {
16864
+ var commands = _ref3.commands;
16865
+ if (!_this.options.levels.includes(attributes.level)) {
16866
+ return false;
16867
+ }
16868
+ return commands.toggleNode(_this.name, 'paragraph', attributes);
16869
+ };
16870
+ }
16871
+ };
16872
+ },
16873
+ addKeyboardShortcuts: function addKeyboardShortcuts() {
16874
+ var _this2 = this;
16875
+ return this.options.levels.reduce(function (items, level) {
16876
+ return _objectSpread(_objectSpread({}, items), {}, _defineProperty({}, "Mod-Alt-".concat(level), function ModAlt() {
16877
+ return _this2.editor.commands.toggleHeading({
16878
+ level: level
16879
+ });
16880
+ }));
16881
+ }, {});
16882
+ },
16883
+ addInputRules: function addInputRules() {
16884
+ var _this3 = this;
16885
+ return this.options.levels.map(function (level) {
16886
+ var inputRule = {
16887
+ find: new RegExp("^(#{1,".concat(level, "})\\s$")),
16888
+ handler: function handler(_ref4) {
16889
+ var state = _ref4.state,
16890
+ range = _ref4.range;
16891
+ var from = range.from,
16892
+ to = range.to;
16893
+ state.tr.delete(from, to).setBlockType(from, from, _this3.type, {
16894
+ level: level
16895
+ });
16896
+ }
16897
+ };
16898
+ return inputRule;
16899
+ });
16900
+ }
16901
+ }));
16902
+
16903
+ /***/ }),
16904
+
16735
16905
  /***/ "8f91":
16736
16906
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
16737
16907
 
@@ -16757,6 +16927,13 @@ module.exports = require("@tiptap/vue-2");
16757
16927
 
16758
16928
  /***/ }),
16759
16929
 
16930
+ /***/ "98d1":
16931
+ /***/ (function(module, exports, __webpack_require__) {
16932
+
16933
+ // extracted by mini-css-extract-plugin
16934
+
16935
+ /***/ }),
16936
+
16760
16937
  /***/ "9bba":
16761
16938
  /***/ (function(module, exports) {
16762
16939
 
@@ -19391,6 +19568,17 @@ var component = Object(componentNormalizer["a" /* default */])(
19391
19568
 
19392
19569
  // extracted by mini-css-extract-plugin
19393
19570
 
19571
+ /***/ }),
19572
+
19573
+ /***/ "b764":
19574
+ /***/ (function(module, __webpack_exports__, __webpack_require__) {
19575
+
19576
+ "use strict";
19577
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PremiumBblEditorOptionsAPI_vue_vue_type_style_index_0_id_410a85e4_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("98d1");
19578
+ /* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PremiumBblEditorOptionsAPI_vue_vue_type_style_index_0_id_410a85e4_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_7_oneOf_1_2_node_modules_cache_loader_dist_cjs_js_ref_1_0_node_modules_vue_loader_lib_index_js_vue_loader_options_PremiumBblEditorOptionsAPI_vue_vue_type_style_index_0_id_410a85e4_prod_scoped_true_lang_css__WEBPACK_IMPORTED_MODULE_0__);
19579
+ /* unused harmony reexport * */
19580
+
19581
+
19394
19582
  /***/ }),
19395
19583
 
19396
19584
  /***/ "baf3":
@@ -23488,6 +23676,7 @@ __webpack_require__.d(__webpack_exports__, "ResizableVideo", function() { return
23488
23676
  __webpack_require__.d(__webpack_exports__, "CustomTableCell", function() { return /* reexport */ CustomTableCell["a" /* default */]; });
23489
23677
  __webpack_require__.d(__webpack_exports__, "CustomTableHeader", function() { return /* reexport */ CustomTableHeader["a" /* default */]; });
23490
23678
  __webpack_require__.d(__webpack_exports__, "CustomParagraph", function() { return /* reexport */ CustomParagraph["a" /* default */]; });
23679
+ __webpack_require__.d(__webpack_exports__, "CustomHeading", function() { return /* reexport */ CustomHeading["a" /* default */]; });
23491
23680
  __webpack_require__.d(__webpack_exports__, "useEditor", function() { return /* reexport */ useEditor["a" /* useEditor */]; });
23492
23681
 
23493
23682
  // CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
@@ -23509,7 +23698,7 @@ if (typeof window !== 'undefined') {
23509
23698
  // EXTERNAL MODULE: ./src/components/PremiumBblEditor.vue + 4 modules
23510
23699
  var PremiumBblEditor = __webpack_require__("2cce");
23511
23700
 
23512
- // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"1a638e0e-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/PremiumBblEditorOptionsAPI.vue?vue&type=template&id=1c3ede3e&scoped=true
23701
+ // CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"1a638e0e-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/PremiumBblEditorOptionsAPI.vue?vue&type=template&id=410a85e4&scoped=true
23513
23702
  var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"premium-editor-container",class:[
23514
23703
  ("theme-" + _vm.theme),
23515
23704
  _vm.editorClass
@@ -23517,7 +23706,7 @@ var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._sel
23517
23706
  var staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('strong',[_vm._v("Missing Dependencies:")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"install-command"},[_c('p',[_c('strong',[_vm._v("Quick Fix:")])]),_c('code',[_vm._v("npm install @vue/composition-api @tiptap/core @tiptap/vue-2 @tiptap/starter-kit @tiptap/extension-text-style @tiptap/extension-color @tiptap/extension-highlight @tiptap/extension-underline @tiptap/extension-text-align @tiptap/extension-link @tiptap/extension-font-family @tiptap/extension-code @tiptap/extension-code-block @tiptap/extension-table @tiptap/extension-table-row @tiptap/extension-table-cell @tiptap/extension-table-header @tiptap/extension-task-list @tiptap/extension-task-item @tiptap/extension-placeholder")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"help-links"},[_c('a',{attrs:{"href":"https://github.com/kazi-shahin/vue2-bbl-editor#quick-setup","target":"_blank"}},[_vm._v("📖 Setup Guide")]),_c('a',{attrs:{"href":"https://github.com/kazi-shahin/vue2-bbl-editor/blob/main/TROUBLESHOOTING.md","target":"_blank"}},[_vm._v("🔧 Troubleshooting")])])}]
23518
23707
 
23519
23708
 
23520
- // CONCATENATED MODULE: ./src/components/PremiumBblEditorOptionsAPI.vue?vue&type=template&id=1c3ede3e&scoped=true
23709
+ // CONCATENATED MODULE: ./src/components/PremiumBblEditorOptionsAPI.vue?vue&type=template&id=410a85e4&scoped=true
23521
23710
 
23522
23711
  // EXTERNAL MODULE: external "@tiptap/vue-2"
23523
23712
  var vue_2_ = __webpack_require__("9637");
@@ -23598,6 +23787,9 @@ var ResizableVideo = __webpack_require__("1788");
23598
23787
  // EXTERNAL MODULE: ./src/extensions/CustomParagraph.js
23599
23788
  var CustomParagraph = __webpack_require__("baf3");
23600
23789
 
23790
+ // EXTERNAL MODULE: ./src/extensions/CustomHeading.js
23791
+ var CustomHeading = __webpack_require__("8d48");
23792
+
23601
23793
  // EXTERNAL MODULE: ./src/components/Toolbar/ToolbarMain.vue + 49 modules
23602
23794
  var ToolbarMain = __webpack_require__("cb27");
23603
23795
 
@@ -23867,6 +24059,7 @@ function _toPrimitive(t, r) {
23867
24059
 
23868
24060
 
23869
24061
 
24062
+
23870
24063
 
23871
24064
 
23872
24065
  // Import styles
@@ -24592,9 +24785,13 @@ var LineHeight = core_["Extension"].create({
24592
24785
  table: false,
24593
24786
  codeBlock: false,
24594
24787
  code: false,
24595
- paragraph: false // Disable default paragraph to use our custom one
24788
+ paragraph: false,
24789
+ // Disable default paragraph to use our custom one
24790
+ heading: false // Disable default heading to use our custom one
24596
24791
  }), CustomParagraph["a" /* default */],
24597
24792
  // Add our custom paragraph with data-empty support
24793
+ CustomHeading["a" /* default */],
24794
+ // Add our custom heading with data-empty support
24598
24795
  CustomCode, CustomCodeBlock, extension_text_style_default.a, extension_placeholder_default.a.configure({
24599
24796
  placeholder: this.placeholder || 'Start writing...'
24600
24797
  })];
@@ -25238,8 +25435,8 @@ var LineHeight = core_["Extension"].create({
25238
25435
  });
25239
25436
  // CONCATENATED MODULE: ./src/components/PremiumBblEditorOptionsAPI.vue?vue&type=script&lang=js
25240
25437
  /* harmony default export */ var components_PremiumBblEditorOptionsAPIvue_type_script_lang_js = (PremiumBblEditorOptionsAPIvue_type_script_lang_js);
25241
- // EXTERNAL MODULE: ./src/components/PremiumBblEditorOptionsAPI.vue?vue&type=style&index=0&id=1c3ede3e&prod&scoped=true&lang=css
25242
- var PremiumBblEditorOptionsAPIvue_type_style_index_0_id_1c3ede3e_prod_scoped_true_lang_css = __webpack_require__("7fc2");
25438
+ // EXTERNAL MODULE: ./src/components/PremiumBblEditorOptionsAPI.vue?vue&type=style&index=0&id=410a85e4&prod&scoped=true&lang=css
25439
+ var PremiumBblEditorOptionsAPIvue_type_style_index_0_id_410a85e4_prod_scoped_true_lang_css = __webpack_require__("b764");
25243
25440
 
25244
25441
  // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
25245
25442
  var componentNormalizer = __webpack_require__("2877");
@@ -25259,7 +25456,7 @@ var component = Object(componentNormalizer["a" /* default */])(
25259
25456
  staticRenderFns,
25260
25457
  false,
25261
25458
  null,
25262
- "1c3ede3e",
25459
+ "410a85e4",
25263
25460
  null
25264
25461
 
25265
25462
  )
@@ -25383,6 +25580,7 @@ var ToolbarButton = __webpack_require__("6112");
25383
25580
 
25384
25581
 
25385
25582
 
25583
+
25386
25584
  // Import styles
25387
25585
 
25388
25586