{"id":364238,"date":"2026-09-09T03:09:18","date_gmt":"2026-09-09T03:09:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/jupa-typed-text\/"},"modified":"2026-09-19T15:21:00","modified_gmt":"2026-09-19T15:21:00","slug":"jupa-typed-text","status":"publish","type":"plugin","link":"https:\/\/lt.wordpress.org\/plugins\/jupa-typed-text\/","author":9696073,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.1","stable_tag":"1.0.1","tested":"7.1.1","requires":"6.7","requires_php":"7.4","requires_plugins":null,"header_name":"Jupa - Typed Text","header_author":"Jupa","header_description":"Gutenberg block that animates text with a typewriter effect using Typed.js.","assets_banners_color":"b9babc","last_updated":"2026-09-19 15:21:00","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/www.jupa.co\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":134,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"jupa8","date":"2026-09-13 20:40:25","revision":3694166},"1.0.1":{"tag":"1.0.1","author":"jupa8","date":"2026-09-19 15:21:00","revision":3703402}},"upgrade_notice":{"1.0.1":"<p>Fixes paragraph text color not showing on the frontend, and a cursor placement issue introduced by that fix.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3687518,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3687518,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3687518,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3687518,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3687518,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"jupa\/typed-text":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"jupa\/typed-text","version":"1.0","title":"Typed Text","category":"widgets","icon":"shortcode","description":"Is a block that types.","supports":{"html":false,"color":{"background":true,"text":true,"link":true},"typography":{"fontSize":true,"lineHeight":true}},"attributes":{"clientid":{"type":"string"},"typeSpeed":{"type":"number","default":50},"backSpeed":{"type":"number","default":50},"startDelay":{"type":"number","default":1000},"backDelay":{"type":"number","default":2000},"showCursor":{"type":"boolean","default":true},"loop":{"type":"boolean","default":true},"smartBackspace":{"type":"boolean","default":true},"shuffle":{"type":"boolean","default":false},"onComplete":{"type":"string"}},"textdomain":"jupa-typed-text","editorScript":"file:.\/index.js","editorStyle":"file:.\/index.css","viewScript":"file:.\/view.js","style":"file:.\/style-index.css"}},"tagged_versions":["1.0.0","1.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3694166,"resolution":"1","location":"assets","locale":"","width":1536,"height":810},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3694166,"resolution":"2","location":"assets","locale":"","width":1536,"height":810},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3694166,"resolution":"3","location":"assets","locale":"","width":1536,"height":810},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3694166,"resolution":"4","location":"assets","locale":"","width":1536,"height":810}},"screenshots":{"1":"Inserting the Typed Text block from the block inserter.","2":"Live preview with sample text, alongside the block's settings panel.","3":"Each line inside the block is a regular paragraph, so the standard formatting toolbar is available.","4":"All the plugin's options: typing speed, delays, cursor, loop, smart backspace, shuffle, and the \"On complete\" callback."}},"plugin_section":[],"plugin_tags":[785,1220,148076,62249,30049],"plugin_category":[50],"plugin_contributors":[213770],"plugin_business_model":[],"class_list":["post-364238","plugin","type-plugin","status-publish","hentry","plugin_tags-animation","plugin_tags-block","plugin_tags-gutenberg","plugin_tags-typed-js","plugin_tags-typewriter","plugin_category-media","plugin_contributors-jupa8","plugin_committers-jupa8"],"banners":{"banner":"https:\/\/ps.w.org\/jupa-typed-text\/assets\/banner-772x250.png?rev=3687518","banner_2x":"https:\/\/ps.w.org\/jupa-typed-text\/assets\/banner-1544x500.png?rev=3687518","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/jupa-typed-text\/assets\/icon.svg?rev=3687518","icon":"https:\/\/ps.w.org\/jupa-typed-text\/assets\/icon.svg?rev=3687518","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/jupa-typed-text\/assets\/screenshot-1.png?rev=3694166","caption":"Inserting the Typed Text block from the block inserter."},{"src":"https:\/\/ps.w.org\/jupa-typed-text\/assets\/screenshot-2.png?rev=3694166","caption":"Live preview with sample text, alongside the block's settings panel."},{"src":"https:\/\/ps.w.org\/jupa-typed-text\/assets\/screenshot-3.png?rev=3694166","caption":"Each line inside the block is a regular paragraph, so the standard formatting toolbar is available."},{"src":"https:\/\/ps.w.org\/jupa-typed-text\/assets\/screenshot-4.png?rev=3694166","caption":"All the plugin's options: typing speed, delays, cursor, loop, smart backspace, shuffle, and the \"On complete\" callback."}],"raw_content":"<!--section=description-->\n<p>Jupa Typed Text adds a block that types out one or more lines of text with a realistic typewriter animation, powered by <a href=\"https:\/\/github.com\/mattboldt\/typed.js\/\">Typed.js<\/a>. Each line is a regular paragraph block, so you can format text, add links, or use any inline formatting the editor already supports.<\/p>\n\n<p>Simple and easy to use straight from the block inserter, with no configuration required to get started, yet fully customizable when you need it: typing speed, delays, cursor, looping, colors, typography, and even a callback for when the animation finishes.<\/p>\n\n<h4>Video Tutorial<\/h4>\n\n<p>https:\/\/youtu.be\/cB0IRZBQZpU<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Types through multiple lines in sequence, each one a normal paragraph block inside the editor.<\/li>\n<li>Configurable typing speed, backspacing speed, start delay, and delay before repeating.<\/li>\n<li>Toggle the blinking cursor, looping, smart backspace, and shuffle (random line order).<\/li>\n<li><code>onComplete<\/code> callback: run a custom JavaScript function (<code>window.typed.onComplete.yourFunctionName<\/code>) once the animation finishes.<\/li>\n<li>Full color support (text, background, links) and typography controls (font size, line height) from the block sidebar, no custom CSS required.<\/li>\n<li>Each block instance gets a unique ID automatically, so duplicating or pasting the block never causes ID collisions.<\/li>\n<\/ul>\n\n<h4>Usage<\/h4>\n\n<ol>\n<li>Insert the \"Typed Text\" block from the inserter.<\/li>\n<li>Write one or more lines of text; each paragraph inside the block becomes a line in the animation.<\/li>\n<li>Open the block sidebar to adjust typing speed, delays, cursor, loop, smart backspace, and shuffle.<\/li>\n<li>Optionally, set a function name under \"Callbacks &gt; On complete\" and define <code>window.typed.onComplete.yourFunctionName<\/code> in your theme or plugin JavaScript to run code when the animation finishes.<\/li>\n<\/ol>\n\n<h3>Source Code<\/h3>\n\n<p>This plugin's <code>build\/<\/code> directory contains a minified\/compiled JavaScript bundle generated with <code>@wordpress\/scripts<\/code> (webpack). The human-readable source is included in the <code>src\/<\/code> directory of this plugin, and is also publicly available at:<\/p>\n\n<p>https:\/\/github.com\/jupa8712\/jupa-typed-text<\/p>\n\n<p>To regenerate the <code>build\/<\/code> files from source: <code>npm install &amp;&amp; npm run build<\/code>.<\/p>\n\n<h4>Third-party libraries<\/h4>\n\n<ul>\n<li><a href=\"https:\/\/github.com\/mattboldt\/typed.js\/\">Typed.js<\/a> v3.0.0 \u2014 MIT License, Copyright (c) Matt Boldt. Bundled into <code>build\/view.js<\/code> via the build step; source available at the link above.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/jupa-typed-text<\/code> directory, or install the plugin through the WordPress plugins screen directly.<\/li>\n<li>Activate the plugin through the \"Plugins\" screen in WordPress.<\/li>\n<li>Insert the \"Typed Text\" block from the block inserter.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20each%20line%20have%20different%20formatting%3F\"><h3>Can each line have different formatting?<\/h3><\/dt>\n<dd><p>Yes. Each line is a standard paragraph block, so bold, italic, links, and other inline formatting work normally.<\/p><\/dd>\n<dt id=\"how%20do%20i%20use%20the%20%22on%20complete%22%20callback%3F\"><h3>How do I use the \"On complete\" callback?<\/h3><\/dt>\n<dd><p>In the block sidebar, under \"Callbacks &gt; On complete\", type a function name (for example <code>myCallback<\/code>). Then, in your theme or plugin JavaScript, define that function on <code>window.typed.onComplete<\/code> before the block's script runs:<\/p>\n\n<pre><code>window.typed = window.typed || {};\nwindow.typed.onComplete = window.typed.onComplete || {};\nwindow.typed.onComplete.myCallback = function () {\n    \/\/ Runs once the typing animation finishes.\n};\n<\/code><\/pre>\n\n<p>If loop is enabled, the callback runs every time the animation completes a cycle, not just once.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20don%27t%20set%20an%20%22on%20complete%22%20function%3F\"><h3>What happens if I don't set an \"On complete\" function?<\/h3><\/dt>\n<dd><p>Nothing extra happens; the animation just finishes and, if looping is enabled, starts again.<\/p><\/dd>\n<dt id=\"does%20this%20work%20in%20the%20site%20editor%20%2F%20fse%20templates%3F\"><h3>Does this work in the Site Editor \/ FSE templates?<\/h3><\/dt>\n<dd><p>Yes, it's a standard block with <code>apiVersion: 3<\/code> and works anywhere blocks are supported.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fix: per-paragraph text color (set from the block sidebar) was not being applied on the frontend, because the typing animation only used the inner text and dropped the paragraph's own style\/class.<\/li>\n<li>Fix: the blinking cursor could appear on its own line after the fix above; it now stays inline right after the typed text.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial standalone release, packaged from the Jupa Gutenberg Blocks collection.<\/li>\n<\/ul>","raw_excerpt":"A Gutenberg block that animates text with a typewriter effect, powered by Typed.js.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/364238","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=364238"}],"author":[{"embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jupa8"}],"wp:attachment":[{"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=364238"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=364238"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=364238"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=364238"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=364238"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/lt.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=364238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}