{"_id":"@aish-global/strapi-plugin-rich-text-blocks-extended","_rev":"3-82df55538b7f41600fa2f4ba6feaed9d","name":"@aish-global/strapi-plugin-rich-text-blocks-extended","dist-tags":{"latest":"1.3.8"},"versions":{"1.3.6":{"name":"@aish-global/strapi-plugin-rich-text-blocks-extended","version":"1.3.6","keywords":[],"author":{"name":"Jorge Pizzati","email":"jorge.pizzati@uvltd.tech"},"license":"MIT","_id":"@aish-global/strapi-plugin-rich-text-blocks-extended@1.3.6","maintainers":[{"name":"germs5","email":"gkagan@aish.edu"}],"contributors":[{"name":"Gershon Kagan","email":"gkagan@aish.edu"}],"dist":{"shasum":"89253fce52fb6edb56e7b0959bac18642ab5998c","tarball":"https://registry.npmjs.org/@aish-global/strapi-plugin-rich-text-blocks-extended/-/strapi-plugin-rich-text-blocks-extended-1.3.6.tgz","fileCount":2,"integrity":"sha512-6Df1WgDRp9Ij/khpjdBXbXJuGwZXVi8gnzpq8wAto66F6FqZH+NFtZ/A2FOKRsrBePtzoIoRR0zHZI3F0Cl6vQ==","signatures":[{"sig":"MEUCIQCCIjwlL4TJd+o7JLc3a1Kf7tFijYCkxUMx1AIvR0FoLQIgH/9pahyKKhfdki0qbXR1FyLsh3eDM7+IB5U1IQdALR4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9588},"type":"commonjs","strapi":{"kind":"plugin","name":"rich-text-blocks-extended","description":"An extended version of the JSON based native strapi field \"Rich Text (Blocks)\"","displayName":"Rich Text Blocks (Extended Version)"},"exports":{"./package.json":"./package.json","./strapi-admin":{"types":"./dist/admin/src/index.d.ts","import":"./dist/admin/index.mjs","source":"./admin/src/index.ts","default":"./dist/admin/index.js","require":"./dist/admin/index.js"},"./strapi-server":{"types":"./dist/server/src/index.d.ts","import":"./dist/server/index.mjs","source":"./server/src/index.ts","default":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"b6cf3192196188aed9b6cf4a97ddfa111f6065c8","scripts":{"build":"strapi-plugin build","watch":"strapi-plugin watch","verify":"strapi-plugin verify","watch:link":"strapi-plugin watch:link","strapi:build":"strapi-plugin build","test:ts:back":"run -T tsc -p server/tsconfig.json","test:ts:front":"run -T tsc -p admin/tsconfig.json"},"_npmUser":{"name":"germs5","email":"gkagan@aish.edu"},"_npmVersion":"10.8.2","description":"An extended version of the JSON based native strapi field \"Rich Text (Blocks)\"","directories":{},"_nodeVersion":"20.19.6","dependencies":{"highlight.js":"^11.11.1","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","strapi-plugin-media-extended":"^1.0.1"},"publishConfig":{"access":"public","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.13","react":"^18.3.1","esbuild":"^0.27.1","prettier":"^3.7.4","react-dom":"^18.3.1","typescript":"^5.9.3","@types/react":"^19.2.7","@strapi/strapi":"^5.31.3","@types/react-dom":"^19.2.3","react-router-dom":"^6.30.2","styled-components":"^6.1.19","@strapi/sdk-plugin":"^5.3.2","@types/highlight.js":"^9.12.4","@strapi/typescript-utils":"^5.31.3"},"peerDependencies":{"react":"^18.3.1","slate":"0.94.1","react-dom":"^18.3.1","slate-react":"0.98.3","slate-history":"0.93.0","@strapi/strapi":"^5.31.2","styled-components":"^6.1.17"},"_npmOperationalInternal":{"tmp":"tmp/strapi-plugin-rich-text-blocks-extended_1.3.6_1765367134788_0.06028357134808293","host":"s3://npm-registry-packages-npm-production"}},"1.3.7":{"name":"@aish-global/strapi-plugin-rich-text-blocks-extended","version":"1.3.7","keywords":[],"author":{"name":"Jorge Pizzati","email":"jorge.pizzati@uvltd.tech"},"license":"MIT","_id":"@aish-global/strapi-plugin-rich-text-blocks-extended@1.3.7","maintainers":[{"name":"germs5","email":"gkagan@aish.edu"}],"contributors":[{"name":"Gershon Kagan","email":"gkagan@aish.edu"}],"dist":{"shasum":"59fd31ac77e35de886cb7699ccb784d681aef4cd","tarball":"https://registry.npmjs.org/@aish-global/strapi-plugin-rich-text-blocks-extended/-/strapi-plugin-rich-text-blocks-extended-1.3.7.tgz","fileCount":67,"integrity":"sha512-/bBDF+QzCI1nwGuDbyvl6Lt56Z+akrilIqX5MlDtvzBFXcsdKnslzjqqxtz2NicNyjRb0DewBBJ0WZitA6vE0w==","signatures":[{"sig":"MEQCIAKECg0PuAwheKy3ud93d4cQscamITpazwcKuIVTX4/GAiBCRrdJtpriga9b95excoHl9B4bi80Zx88qPTFR6owuIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6286590},"type":"commonjs","strapi":{"kind":"plugin","name":"rich-text-blocks-extended","description":"An extended version of the JSON based native strapi field \"Rich Text (Blocks)\"","displayName":"Rich Text Blocks (Extended Version)"},"exports":{"./package.json":"./package.json","./strapi-admin":{"types":"./dist/admin/src/index.d.ts","import":"./dist/admin/index.mjs","source":"./admin/src/index.ts","default":"./dist/admin/index.js","require":"./dist/admin/index.js"},"./strapi-server":{"types":"./dist/server/src/index.d.ts","import":"./dist/server/index.mjs","source":"./server/src/index.ts","default":"./dist/server/index.js","require":"./dist/server/index.js"}},"gitHead":"83c79f0bc1288bbe3ca1b26021553fefd3144d2e","scripts":{"build":"strapi-plugin build","watch":"strapi-plugin watch","verify":"strapi-plugin verify","watch:link":"strapi-plugin watch:link","strapi:build":"strapi-plugin build","test:ts:back":"run -T tsc -p server/tsconfig.json","test:ts:front":"run -T tsc -p admin/tsconfig.json"},"_npmUser":{"name":"germs5","email":"gkagan@aish.edu"},"overrides":{"@types/react":"^18.3.12","@types/react-dom":"^18.3.1"},"_npmVersion":"10.8.2","description":"An extended version of the JSON based native strapi field \"Rich Text (Blocks)\"","directories":{},"_nodeVersion":"20.19.6","dependencies":{"highlight.js":"^11.11.1","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","strapi-plugin-media-extended":"^1.0.1"},"publishConfig":{"access":"public","provenance":false},"_hasShrinkwrap":false,"devDependencies":{"zod":"^4.1.13","react":"^18.3.1","esbuild":"^0.27.1","prettier":"^3.7.4","react-dom":"^18.3.1","typescript":"^5.9.3","@types/react":"^18.3.12","@strapi/strapi":"^5.31.3","@types/react-dom":"^18.3.1","react-router-dom":"^6.30.2","styled-components":"^6.1.19","@strapi/sdk-plugin":"^5.3.2","@types/highlight.js":"^9.12.4","@strapi/typescript-utils":"^5.31.3"},"peerDependencies":{"react":"^18.3.1","slate":"0.94.1","react-dom":"^18.3.1","slate-react":"0.98.3","slate-history":"0.93.0","@strapi/strapi":"^5.31.2","styled-components":"^6.1.17"},"_npmOperationalInternal":{"tmp":"tmp/strapi-plugin-rich-text-blocks-extended_1.3.7_1765371270126_0.4603077860936686","host":"s3://npm-registry-packages-npm-production"}},"1.3.8":{"version":"1.3.8","keywords":[],"type":"commonjs","exports":{"./package.json":"./package.json","./strapi-admin":{"types":"./dist/admin/src/index.d.ts","source":"./admin/src/index.ts","import":"./dist/admin/index.mjs","require":"./dist/admin/index.js","default":"./dist/admin/index.js"},"./strapi-server":{"types":"./dist/server/src/index.d.ts","source":"./server/src/index.ts","import":"./dist/server/index.mjs","require":"./dist/server/index.js","default":"./dist/server/index.js"}},"scripts":{"build":"strapi-plugin build","strapi:build":"strapi-plugin build","watch":"strapi-plugin watch","watch:link":"strapi-plugin watch:link","verify":"strapi-plugin verify","test:ts:front":"run -T tsc -p admin/tsconfig.json","test:ts:back":"run -T tsc -p server/tsconfig.json"},"dependencies":{"@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","highlight.js":"^11.11.1","strapi-plugin-media-extended":"^1.0.1"},"devDependencies":{"@strapi/sdk-plugin":"^5.3.2","@strapi/strapi":"^5.31.3","@strapi/typescript-utils":"^5.31.3","@types/highlight.js":"^9.12.4","@types/react":"^18.3.12","@types/react-dom":"^18.3.1","esbuild":"^0.27.1","prettier":"^3.7.4","react":"^18.3.1","react-dom":"^18.3.1","react-router-dom":"^6.30.2","styled-components":"^6.1.19","typescript":"^5.9.3","zod":"^4.1.13"},"peerDependencies":{"@strapi/strapi":"^5.31.2","react":"^18.3.1","react-dom":"^18.3.1","slate":"0.94.1","slate-history":"0.93.0","slate-react":"0.98.3","styled-components":"^6.1.17"},"strapi":{"kind":"plugin","name":"rich-text-blocks-extended","displayName":"Rich Text Blocks (Extended Version)","description":"An extended version of the JSON based native strapi field \"Rich Text (Blocks)\""},"name":"@aish-global/strapi-plugin-rich-text-blocks-extended","description":"An extended version of the JSON based native strapi field \"Rich Text (Blocks)\"","license":"MIT","publishConfig":{"provenance":false,"access":"public"},"author":{"name":"Jorge Pizzati","email":"jorge.pizzati@uvltd.tech"},"contributors":[{"name":"Gershon Kagan","email":"gkagan@aish.edu"}],"overrides":{"@types/react":"^18.3.12","@types/react-dom":"^18.3.1"},"_id":"@aish-global/strapi-plugin-rich-text-blocks-extended@1.3.8","gitHead":"60588a632caa2c8f5e4740801e2eb9c759306c3a","_nodeVersion":"20.19.6","_npmVersion":"10.8.2","dist":{"integrity":"sha512-YOkks351l2FguHrLYXVsr515ta/Cq07fj4F3tX+bi/lHkvEIl6Apmf5tGoAdQLrXW6sdtBsqHnrnNrbfqeKMvw==","shasum":"73359962a22de0ff9c6278fdffb9530f979f5b36","tarball":"https://registry.npmjs.org/@aish-global/strapi-plugin-rich-text-blocks-extended/-/strapi-plugin-rich-text-blocks-extended-1.3.8.tgz","fileCount":67,"unpackedSize":6286590,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDrllpMYSNeZlErZiLSl/rhdIj0d/IooVr2FdmTC1D6zgIhALYvL5ZTsGvTxW+7LZfGNXsmX5yKJaKi936NjgHOrIfI"}]},"_npmUser":{"name":"germs5","email":"gkagan@aish.edu"},"directories":{},"maintainers":[{"name":"germs5","email":"gkagan@aish.edu"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/strapi-plugin-rich-text-blocks-extended_1.3.8_1765375615474_0.08153985985145762"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-10T11:45:34.708Z","modified":"2025-12-10T14:06:55.873Z","1.3.6":"2025-12-10T11:45:34.926Z","1.3.7":"2025-12-10T12:54:30.357Z","1.3.8":"2025-12-10T14:06:55.678Z"},"author":{"name":"Jorge Pizzati","email":"jorge.pizzati@uvltd.tech"},"license":"MIT","keywords":[],"description":"An extended version of the JSON based native strapi field \"Rich Text (Blocks)\"","contributors":[{"name":"Gershon Kagan","email":"gkagan@aish.edu"}],"maintainers":[{"name":"germs5","email":"gkagan@aish.edu"}],"readme":"# Strapi Plugin - Rich Text (Blocks - Extended)\n\nAn extended version of the JSON based native Strapi field \"Rich Text (Blocks)\" that provides enhanced customization options and features.\n\n## Preview\n\n![Documentation Image](https://iili.io/3MYVIqJ.gif)\n\n## 🚀 Features\n\n- 📝 All native Rich Text Blocks features\n- 🎨 Customizable font families with presets\n- 🌈 Custom color palettes\n- 📱 Configurable viewport options\n- 📏 Custom font sizes\n- ↕️ Adjustable line heights\n- ↔️ Letter spacing control\n- ⬅️ Text alignment options\n- 🔠 Text formatting options including uppercase transform\n- ✨ On-the-fly custom values for font size, line height, and letter spacing\n- 🔄 Expandable editor interface\n- ➖ Separator blocks with customizable styling\n- 📐 Viewport-specific image dimensions with aspect ratio locking\n\n## 🖼️ Image Block Support\n\nThe image block is now fully functional! Thanks to the integration with `strapi-plugin-media-extended`, you can:\n\n- Select single or multiple images from the media library\n- Upload new images directly from the editor\n- Organize images in folders\n- Full media library functionality within the rich text editor\n- **Viewport-specific image dimensions**: Set custom width and height for each breakpoint\n- **Aspect ratio locking**: Maintain proportional dimensions when resizing images\n\n### Image Settings\n\nThe image block includes advanced viewport-specific settings:\n\n**Viewport-specific settings (configurable per device breakpoint):**\n\n- **Image Width**: Set custom width for images at different viewports\n- **Image Height**: Set custom height for images at different viewports\n- **Aspect Ratio Lock**: Toggle to maintain proportional dimensions when adjusting width or height\n  - When locked, changing width automatically adjusts height proportionally (and vice versa)\n  - Uses the image's intrinsic dimensions to calculate the aspect ratio\n  - Default state is locked to preserve image proportions\n\n**Default behavior:**\n- Mobile viewport automatically uses the image's intrinsic dimensions as defaults\n- Other viewports start with no explicit dimensions (allowing responsive behavior)\n- Aspect ratio is locked by default to prevent image distortion\n\n**Note**: The `strapi-plugin-media-extended` plugin is required for image block functionality.\n\n## ⚙️ Installation\n\n```bash\n# Using npm\nnpm install strapi-plugin-rich-text-blocks-extended strapi-plugin-media-extended\n\n# Using yarn\nyarn add strapi-plugin-rich-text-blocks-extended strapi-plugin-media-extended\n```\n\n**Note**: The `strapi-plugin-media-extended` package is required for image block functionality.\n\n## 🔧 Configuration\n\n### Basic Settings\n\n| Option                 | Type    | Default | Description                                  |\n| ---------------------- | ------- | ------- | -------------------------------------------- |\n| `disableDefaultFonts`  | boolean | false   | Enable to use custom font presets            |\n| `customFontsPresets`   | string  | -       | Custom font families (format: \"Label:value\") |\n| `disableDefaultColors` | boolean | false   | Enable to use custom color presets           |\n| `customColorsPresets`  | string  | -       | Custom colors (format: \"Label:#HEX\")         |\n\nExample font presets:\n\n```\nArial:arial\nOpen Sans:open-sans\nTimes New Roman:times-new-roman\nGeorgia:georgia\n```\n\nExample color presets:\n\n```\nBlack:#000000\nWhite:#FFFFFF\nGray:#808080\nLight Gray:#D3D3D3\nDark Gray:#A9A9A9\n```\n\n### Advanced Settings\n\n| Option                      | Type    | Default | Description                                 |\n| --------------------------- | ------- | ------- | ------------------------------------------- |\n| `disableDefaultViewports`   | boolean | false   | Enable to use custom viewport presets       |\n| `customViewportsPresets`    | string  | -       | Custom viewports (format: \"Label:value\")    |\n| `disableDefaultSizes`       | boolean | false   | Enable to use custom font sizes             |\n| `customSizesPresets`        | string  | -       | Custom font sizes (one per line)            |\n| `disableDefaultLineHeights` | boolean | false   | Enable to use custom line heights           |\n| `customLineHeightsPresets`  | string  | -       | Custom line heights (one per line)          |\n| `disableDefaultTracking`    | boolean | false   | Enable to use custom letter spacing         |\n| `customTrackingPresets`     | string  | -       | Custom letter spacing values (one per line) |\n| `disableDefaultAlignments`  | boolean | false   | Enable to use custom alignments             |\n| `customAlignmentsPresets`   | string  | -       | Custom alignments (format: \"Label:value\")   |\n\nExample viewport presets:\n\n```\nMobile:mobile\nTablet:tablet\nDesktop:desktop\n```\n\nExample size presets:\n\n```\n6\n8\n9\n10\n11\n12\n14\n16\n18\n24\n30\n48\n```\n\nExample alignment presets:\n\n```\nLeft:left\nCenter:center\nRight:right\nJustify:justify\n```\n\n## 🎯 Usage\n\n1. After installation, the plugin will be available as a custom field type in your Content-Types Builder.\n2. Add a new field and select \"Rich Text Blocks (Extended)\" as the field type.\n3. Configure the field options according to your needs using the settings above.\n\n## 🔡 Text Formatting\n\nThe editor supports various text formatting options:\n\n- **Uppercase**: Transform selected text to uppercase using the AA button in the toolbar\n- **Superscript**: Apply using the sup button in the toolbar\n- **Subscript**: Apply using the sub button in the toolbar\n- **Bold**: Apply using the B button in the toolbar or Ctrl/Cmd+B\n- **Italic**: Apply using the I button in the toolbar or Ctrl/Cmd+I\n- **Underline**: Apply using the U button in the toolbar or Ctrl/Cmd+U\n- **Strikethrough**: Apply using the S button in the toolbar or Ctrl/Cmd+Shift+S\n- **Inline code**: Apply using the Code button in the toolbar or Ctrl/Cmd+E\n\nThese formatting options can be applied to any text within paragraphs, headings, lists, and quotes.\n\n## 📝 Block Types\n\nThe plugin supports various block types including:\n\n- Paragraphs\n- Headings (H1-H6)\n- Lists\n- Links\n- Images (with full media library support)\n- Quotes\n- Code blocks\n- Separators\n\n### 🎯 Separator Block\n\nThe separator block allows you to add visual dividers between content sections with the following customizable options:\n\n**Non-viewport specific settings:**\n\n- **Style**: Choose from solid, dashed, dotted, or double line styles\n- **Color**: Select from the available color palette\n\n**Viewport-specific settings (configurable per device breakpoint):**\n\n- **Size**: Control the thickness of the separator (0-100)\n- **Length**: Set the width percentage of the separator (0-100%)\n- **Orientation**: Choose between horizontal or vertical orientation\n\nThese viewport-specific settings allow you to create responsive separators that adapt to different screen sizes.\n\n## 🤝 Contributing\n\nFeel free to contribute to this plugin by:\n\n1. Creating issues for bugs or feature requests\n2. Submitting pull requests for improvements\n3. Providing feedback and suggestions\n\n## 📄 License\n\nMIT License - Copyright (c) Jorge Pizzati\n","readmeFilename":"README.md"}