From a83b42e549f1bccf007bcd3d14285f8d4bbc2e0c Mon Sep 17 00:00:00 2001 From: JR Tashjian Date: Tue, 15 Jul 2025 20:10:30 -0400 Subject: [PATCH 01/22] Bump tested up to 6.8 --- readme.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.txt b/readme.txt index f8d7bb9..d69c322 100644 --- a/readme.txt +++ b/readme.txt @@ -2,7 +2,7 @@ Contributors: jrtashjian Tags: contact form, block editor, form builder, forms, email Requires at least: 6.3 -Tested up to: 6.7 +Tested up to: 6.8 Requires PHP: 7.4 Stable tag: 1.3.3 License: GPLv2 or later From 8318a94a46a292a3edf8b3c6b9a86652e1e7f437 Mon Sep 17 00:00:00 2001 From: Brian Henry Date: Tue, 30 Sep 2025 18:35:43 -0700 Subject: [PATCH 02/22] Add WP CLI installation section to README (#51) Added WP CLI installation instructions for OmniForm plugin. --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index cd16482..dac19ed 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,12 @@ To do an automatic install of OmniForm, log in to your WordPress dashboard, navi In the search field type “OmniForm,” then click “Search Plugins.” Once you’ve found us, you can click “Install Now” and WordPress will take it from there. +**WP CLI Installation** + +```bash +wp plugin install omniform --activate +``` + **Manual installation** Manual installation method requires [downloading the OmniForm plugin](https://wordpress.org/plugins/omniform) and uploading it to your web server via your favorite FTP application. The WordPress codex contains [instructions on how to do this here](https://wordpress.org/support/article/managing-plugins/#manual-plugin-installation). @@ -58,4 +64,4 @@ npm run start *Get Insights on Form Performance: Responses, Impressions, and Conversion Rate.* [![OmniForm Keeps You Informed: Track Submissions and Get Email Notifications within WordPress.](.wordpress-org/screenshot-5.png)](https://wordpress.org/plugins/omniform/) -*OmniForm Keeps You Informed: Track Submissions and Get Email Notifications within WordPress.* \ No newline at end of file +*OmniForm Keeps You Informed: Track Submissions and Get Email Notifications within WordPress.* From 2f7fb26f93bbc6b3fccca9f718242869b99a2754 Mon Sep 17 00:00:00 2001 From: JR Tashjian Date: Mon, 6 Oct 2025 16:10:59 -0400 Subject: [PATCH 03/22] Update WordPress dependencies to latest versions --- package-lock.json | 280 +++++++++++++++++++++++++++++----------------- package.json | 14 +-- 2 files changed, 183 insertions(+), 111 deletions(-) diff --git a/package-lock.json b/package-lock.json index cb09d46..7810d6f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,18 +10,18 @@ "license": "GPL-2.0-or-later", "dependencies": { "@wordpress/base-styles": "^5.19.1", - "@wordpress/block-editor": "^14.14.5", - "@wordpress/blocks": "^14.8.1", - "@wordpress/components": "^29.5.3", - "@wordpress/data": "^10.19.1", + "@wordpress/block-editor": "^14.14.6", + "@wordpress/blocks": "^14.8.2", + "@wordpress/components": "^29.5.4", + "@wordpress/data": "^10.19.2", "@wordpress/dom-ready": "^4.19.1", "@wordpress/element": "^6.19.1", "@wordpress/html-entities": "^4.19.1", "@wordpress/i18n": "^5.19.1", "@wordpress/icons": "^10.19.1", - "@wordpress/interface": "^9.4.3", - "@wordpress/plugins": "^7.19.3", - "@wordpress/url": "^4.19.1", + "@wordpress/interface": "^9.4.4", + "@wordpress/plugins": "^7.19.4", + "@wordpress/url": "^4.19.2", "change-case": "^4.1.2", "classnames": "^2.3.2", "colord": "^2.9.3", @@ -4264,9 +4264,10 @@ } }, "node_modules/@remote-ui/rpc": { - "version": "1.4.6", - "resolved": "https://registry.npmjs.org/@remote-ui/rpc/-/rpc-1.4.6.tgz", - "integrity": "sha512-5SQ0o/vNjj3XJdhcUmP2aNhcvxSFo0ypeMLXo/Lb7adzm2kbxTZIguoqiiMQGue7cpGCAUwkfmDUhR6x25qDFQ==" + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@remote-ui/rpc/-/rpc-1.4.7.tgz", + "integrity": "sha512-ORiaKsbVBSEi3Z4YWOj5Ucrp70NrkNktI1hdqqfBW7Z3o0YoxTX9MIqtLmsc6721IbjmExvLrLip5I5Y7uAbng==", + "license": "MIT" }, "node_modules/@rtsao/scc": { "version": "1.1.0", @@ -4358,6 +4359,7 @@ "resolved": "https://registry.npmjs.org/@shopify/web-worker/-/web-worker-6.4.0.tgz", "integrity": "sha512-RvY1mgRyAqawFiYBvsBkek2pVK4GVpV9mmhWFCZXwx01usxXd2HMhKNTFeRYhSp29uoUcfBlKZAwCwQzt826tg==", "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "license": "MIT", "dependencies": { "@remote-ui/rpc": "^1.2.5" }, @@ -4844,6 +4846,12 @@ "resolved": "https://registry.npmjs.org/@tannin/postfix/-/postfix-1.1.0.tgz", "integrity": "sha512-oocsqY7g0cR+Gur5jRQLSrX2OtpMLMse1I10JQBm8CdGMrDkh1Mg2gjsiquMHRtBs4Qwu5wgEp5GgIYHk4SNPw==" }, + "node_modules/@tannin/sprintf": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@tannin/sprintf/-/sprintf-1.3.3.tgz", + "integrity": "sha512-RwARl+hFwhzy0tg9atWcchLFvoQiOh4rrP7uG2N5E4W80BPCUX0ElcUR9St43fxB9EfjsW2df9Qp+UsTbvQDjA==", + "license": "MIT" + }, "node_modules/@tootallnate/once": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", @@ -5889,13 +5897,14 @@ } }, "node_modules/@wordpress/api-fetch": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-7.24.0.tgz", - "integrity": "sha512-2JGfSH4HW2j3avjH4ERTcvTRKFwuxlI57rw4JuSVPg2OOgHBqUHAXeJW6wzzM3IDjlgUWSd42QcWiyPuCtYy0A==", + "version": "7.31.0", + "resolved": "https://registry.npmjs.org/@wordpress/api-fetch/-/api-fetch-7.31.0.tgz", + "integrity": "sha512-mEnNA2QvLeopNfXhRYaaCyF6Db1zZUaQI/+3UIJCn66OasoNQnvPHyHxWCRegsDfdtL7tCyvSuAbB++9wzcDyQ==", + "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/i18n": "^5.24.0", - "@wordpress/url": "^4.24.0" + "@wordpress/i18n": "^6.4.0", + "@wordpress/url": "^4.31.0" }, "engines": { "node": ">=18.12.0", @@ -5903,15 +5912,16 @@ } }, "node_modules/@wordpress/api-fetch/node_modules/@wordpress/i18n": { - "version": "5.24.0", - "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-5.24.0.tgz", - "integrity": "sha512-o1MDZJPxZq/SPNlOY7EzKVCw32f6buZZ/VvxLXRNcC+O/bcOfvY+RQtknGRfKIKdkfLd1OS9xvjL1QikpljxwA==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-6.4.0.tgz", + "integrity": "sha512-tLTjdLw8H778K4fmEo5NDLYJOAgvHxgfLU5N7lPuBy2TKi8tQl24xgmJOlDLiMzbmbSEwvUBZ/4xWJsGq9ITDQ==", + "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/hooks": "^4.24.0", + "@tannin/sprintf": "^1.3.2", + "@wordpress/hooks": "^4.31.0", "gettext-parser": "^1.3.1", "memize": "^2.1.0", - "sprintf-js": "^1.1.1", "tannin": "^1.2.0" }, "bin": { @@ -5923,9 +5933,10 @@ } }, "node_modules/@wordpress/api-fetch/node_modules/@wordpress/url": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-4.24.0.tgz", - "integrity": "sha512-gxnswtTVYVa3RSTQw2qs/Z0yuS0t9IDXnWbVYC9RAhELz3WN0YqGqxGNBtL3yUQEhisyxGupnqjuXCovpCU9lg==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-4.31.0.tgz", + "integrity": "sha512-fI0TK7WsGB3hgal/3PuoSN8zrato1hJz0r2xZQTe7+DWgrO3R8zlsoKhtOGzLL/zTNM5Auw22EPvRxGcwGT5zA==", + "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "7.25.7", "remove-accents": "^0.5.0" @@ -5936,9 +5947,10 @@ } }, "node_modules/@wordpress/autop": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-4.24.0.tgz", - "integrity": "sha512-hqJ8aLo5drl2n/sFYrkpUNh+Vt0Lbu1LC6TpOIcsauiVIFr6xPELePdKwUswrAPT0EQ/Hf7gmkysu7e05jZ21A==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/@wordpress/autop/-/autop-4.31.0.tgz", + "integrity": "sha512-PzmFe0gePKxdld01Nk/9quklzEZCshyCncs2uVaAzCXQ8jvubQo7Z9QYXHjY8ukHXCG+RyaYuj+PJrimV6iX2A==", + "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "7.25.7" }, @@ -6004,15 +6016,17 @@ "version": "5.19.1", "resolved": "https://registry.npmjs.org/@wordpress/base-styles/-/base-styles-5.19.1.tgz", "integrity": "sha512-GDQvOtVVE3yk2sx+vYC3/k4QBXf1VckUT1KSNyfYt7swQk/Fxs7Tozb3EVF1zhzxEyMOiW8r9DUpKNVOn29tfQ==", + "license": "GPL-2.0-or-later", "engines": { "node": ">=18.12.0", "npm": ">=8.19.2" } }, "node_modules/@wordpress/blob": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-4.24.0.tgz", - "integrity": "sha512-Hw1DfbGzkd6wb8tP2fqAp9KUCaN9My0CjhUGvq03fsYlGCcNlDwl/pJoBQuVWRrDc+9ZzU7Dbo8LZBADDQMC/Q==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/@wordpress/blob/-/blob-4.31.0.tgz", + "integrity": "sha512-14QzAp4tTFowxMgNjz2refH6ziGTX4TBfpDyTs+/grNzOhRlOlUOSx7u2S7zZekWzp/A6nsGklGr3ACrpkrDXA==", + "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "7.25.7" }, @@ -6022,26 +6036,27 @@ } }, "node_modules/@wordpress/block-editor": { - "version": "14.14.5", - "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-14.14.5.tgz", - "integrity": "sha512-P8v2qzc6gd4XQ0X1AvMNC920x+QsS00erS2aH3Cg+ub6qRlVWZXxJSdr5kXTXXImFLIdWO7wkaoIfTjfOXEHvQ==", + "version": "14.14.6", + "resolved": "https://registry.npmjs.org/@wordpress/block-editor/-/block-editor-14.14.6.tgz", + "integrity": "sha512-diqmWXhj87ProKiCixjtAm/iGhiAQGLM3Hym7hxpB6GJfDA3Eg90GBT3guqjxeBc/mBR6tbGEiDMj2FNeQSRag==", + "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "7.25.7", "@emotion/react": "^11.7.1", "@emotion/styled": "^11.6.0", "@react-spring/web": "^9.4.5", "@wordpress/a11y": "^4.19.1", - "@wordpress/api-fetch": "^7.19.1", + "@wordpress/api-fetch": "^7.19.2", "@wordpress/blob": "^4.19.1", "@wordpress/block-serialization-default-parser": "^5.19.1", - "@wordpress/blocks": "^14.8.1", - "@wordpress/commands": "^1.19.3", - "@wordpress/components": "^29.5.3", - "@wordpress/compose": "^7.19.1", - "@wordpress/data": "^10.19.1", + "@wordpress/blocks": "^14.8.2", + "@wordpress/commands": "^1.19.4", + "@wordpress/components": "^29.5.4", + "@wordpress/compose": "^7.19.2", + "@wordpress/data": "^10.19.2", "@wordpress/date": "^5.19.1", "@wordpress/deprecated": "^4.19.1", - "@wordpress/dom": "^4.19.1", + "@wordpress/dom": "^4.19.2", "@wordpress/element": "^6.19.1", "@wordpress/escape-html": "^3.19.1", "@wordpress/hooks": "^4.19.1", @@ -6049,17 +6064,17 @@ "@wordpress/i18n": "^5.19.1", "@wordpress/icons": "^10.19.1", "@wordpress/is-shallow-equal": "^5.19.1", - "@wordpress/keyboard-shortcuts": "^5.19.1", + "@wordpress/keyboard-shortcuts": "^5.19.2", "@wordpress/keycodes": "^4.19.1", - "@wordpress/notices": "^5.19.1", - "@wordpress/preferences": "^4.19.3", + "@wordpress/notices": "^5.19.2", + "@wordpress/preferences": "^4.19.4", "@wordpress/priority-queue": "^3.19.1", "@wordpress/private-apis": "^1.19.1", - "@wordpress/rich-text": "^7.19.1", + "@wordpress/rich-text": "^7.19.2", "@wordpress/style-engine": "^2.19.1", "@wordpress/token-list": "^3.19.1", - "@wordpress/upload-media": "^0.4.3", - "@wordpress/url": "^4.19.1", + "@wordpress/upload-media": "^0.4.4", + "@wordpress/url": "^4.19.2", "@wordpress/warning": "^3.19.1", "@wordpress/wordcount": "^4.19.1", "change-case": "^4.1.2", @@ -6087,9 +6102,10 @@ } }, "node_modules/@wordpress/block-serialization-default-parser": { - "version": "5.24.0", - "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-5.24.0.tgz", - "integrity": "sha512-7lJVcG8N6Gcepyf0hPA/hDNUDp3cEca9ARtI+cb3l1ymAgEOJqTEqXv7B/BusT098LgWdM2QpPFBjfFSXNmxcw==", + "version": "5.31.0", + "resolved": "https://registry.npmjs.org/@wordpress/block-serialization-default-parser/-/block-serialization-default-parser-5.31.0.tgz", + "integrity": "sha512-38pHFz1ugJtYuuSxK7AxFzkmuZbUpSrylNrhjmWv12e0z5aYDNs8jtiii4CPeWD3RPvXEuYpwsOHR/4hTyuFMQ==", + "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "7.25.7" }, @@ -6099,24 +6115,25 @@ } }, "node_modules/@wordpress/blocks": { - "version": "14.8.1", - "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-14.8.1.tgz", - "integrity": "sha512-aLkWETcLfv4UdJYsqJBaVGCLzYAF4QL+eYeGIeuk3YrlSlhGd7iZOZlYKIhMw0VjAq54f/UaH16AcI3Z66rqdg==", + "version": "14.8.2", + "resolved": "https://registry.npmjs.org/@wordpress/blocks/-/blocks-14.8.2.tgz", + "integrity": "sha512-SZZODi7o6yTES0uZ35soRb2ZVdkd0QrmZrvyV0WHbE8exGL72/3UQRga0U05uY4j3puR6hkmeol/Ef6IaLlB7A==", + "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "7.25.7", "@wordpress/autop": "^4.19.1", "@wordpress/blob": "^4.19.1", "@wordpress/block-serialization-default-parser": "^5.19.1", - "@wordpress/data": "^10.19.1", + "@wordpress/data": "^10.19.2", "@wordpress/deprecated": "^4.19.1", - "@wordpress/dom": "^4.19.1", + "@wordpress/dom": "^4.19.2", "@wordpress/element": "^6.19.1", "@wordpress/hooks": "^4.19.1", "@wordpress/html-entities": "^4.19.1", "@wordpress/i18n": "^5.19.1", "@wordpress/is-shallow-equal": "^5.19.1", "@wordpress/private-apis": "^1.19.1", - "@wordpress/rich-text": "^7.19.1", + "@wordpress/rich-text": "^7.19.2", "@wordpress/shortcode": "^4.19.1", "@wordpress/warning": "^3.19.1", "change-case": "^4.1.2", @@ -6337,9 +6354,10 @@ } }, "node_modules/@wordpress/components": { - "version": "29.5.3", - "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-29.5.3.tgz", - "integrity": "sha512-oIcFmwtJ2fUwwtqcEKG155QoK8jkxWCVmsW8zSxdd3lNDIH5pgCWWciXmOgoSi1aWS5vuxB0Va50hv01VL2RkA==", + "version": "29.5.4", + "resolved": "https://registry.npmjs.org/@wordpress/components/-/components-29.5.4.tgz", + "integrity": "sha512-sT04yW0PThalQLOL7aCFcvyLr+A9/poJFwmotoNYtrDwQajucvLObT3yHww67d5eRpGJwShLzNuqd4mMmRXJ3w==", + "license": "GPL-2.0-or-later", "dependencies": { "@ariakit/react": "^0.4.15", "@babel/runtime": "7.25.7", @@ -6349,15 +6367,15 @@ "@emotion/serialize": "^1.0.2", "@emotion/styled": "^11.6.0", "@emotion/utils": "^1.0.0", - "@floating-ui/react-dom": "^2.0.8", + "@floating-ui/react-dom": "2.0.8", "@types/gradient-parser": "0.1.3", "@types/highlight-words-core": "1.2.1", "@use-gesture/react": "^10.3.1", "@wordpress/a11y": "^4.19.1", - "@wordpress/compose": "^7.19.1", + "@wordpress/compose": "^7.19.2", "@wordpress/date": "^5.19.1", "@wordpress/deprecated": "^4.19.1", - "@wordpress/dom": "^4.19.1", + "@wordpress/dom": "^4.19.2", "@wordpress/element": "^6.19.1", "@wordpress/escape-html": "^3.19.1", "@wordpress/hooks": "^4.19.1", @@ -6368,7 +6386,7 @@ "@wordpress/keycodes": "^4.19.1", "@wordpress/primitives": "^4.19.1", "@wordpress/private-apis": "^1.19.1", - "@wordpress/rich-text": "^7.19.1", + "@wordpress/rich-text": "^7.19.2", "@wordpress/warning": "^3.19.1", "change-case": "^4.1.2", "clsx": "^2.1.1", @@ -6396,6 +6414,19 @@ "react-dom": "^18.0.0" } }, + "node_modules/@wordpress/components/node_modules/@floating-ui/react-dom": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", + "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.6.1" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, "node_modules/@wordpress/compose": { "version": "7.24.0", "resolved": "https://registry.npmjs.org/@wordpress/compose/-/compose-7.24.0.tgz", @@ -6443,12 +6474,13 @@ } }, "node_modules/@wordpress/data": { - "version": "10.19.1", - "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-10.19.1.tgz", - "integrity": "sha512-bI7/oV1Vja9HVtBt0LyJECGuBBYtlupH5v6TEWrs4OgQRs/++Y4B20QcU07cyMKtnFnY9aqKFivJvVPocNZbQQ==", + "version": "10.19.2", + "resolved": "https://registry.npmjs.org/@wordpress/data/-/data-10.19.2.tgz", + "integrity": "sha512-oYtKzYYLBlJvxZKY5PIlwZczu2XaERcHg3SgKYayC1ky815KYsg7Dr2Zsbs0VrNzr4+txV7q7SEO+lDVvWDk7A==", + "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/compose": "^7.19.1", + "@wordpress/compose": "^7.19.2", "@wordpress/deprecated": "^4.19.1", "@wordpress/element": "^6.19.1", "@wordpress/is-shallow-equal": "^5.19.1", @@ -6538,6 +6570,7 @@ "version": "4.19.1", "resolved": "https://registry.npmjs.org/@wordpress/dom-ready/-/dom-ready-4.19.1.tgz", "integrity": "sha512-7mfF63retvUVoCTBjHSy4uLu8Tq5aJ4fOu+43XM2SRTS4xVOlcEJQ+jtBirADyfBsG3Y/0IDc5P+7JRzfnErag==", + "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "7.25.7" }, @@ -6571,6 +6604,7 @@ "version": "6.19.1", "resolved": "https://registry.npmjs.org/@wordpress/element/-/element-6.19.1.tgz", "integrity": "sha512-DsubjDmWZtrRBq5RSM6rSI17ISLTxmrdr5vsHD2z6OqmrchhJvclGxPUUR/wFZJ1h19siUIqlW6WMfZMySlEIA==", + "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "7.25.7", "@types/react": "^18.2.79", @@ -6591,6 +6625,7 @@ "resolved": "https://registry.npmjs.org/@wordpress/env/-/env-10.19.1.tgz", "integrity": "sha512-1V+yKi6eJx1AEloaxW1uNv8OEzGdorws1NbJDQ9r2ywM2V6+NXQehzn+M4TCJdudN70YRKEDbMY345D1Ntlr2Q==", "dev": true, + "license": "GPL-2.0-or-later", "dependencies": { "@inquirer/prompts": "^7.2.0", "chalk": "^4.0.0", @@ -6680,6 +6715,7 @@ "resolved": "https://registry.npmjs.org/@wordpress/eslint-plugin/-/eslint-plugin-22.5.1.tgz", "integrity": "sha512-B8VqGpyl/JDyq8Oq659TzHrM29bEU9zRPNl2l767SgHMKS/kakhbDizOxpQF528VGxRIGtK5MLFz31zh1G+H5Q==", "dev": true, + "license": "GPL-2.0-or-later", "dependencies": { "@babel/eslint-parser": "7.25.7", "@typescript-eslint/eslint-plugin": "^6.4.1", @@ -6746,9 +6782,10 @@ } }, "node_modules/@wordpress/hooks": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-4.24.0.tgz", - "integrity": "sha512-QSnGLgs7MnDcFXgC2kctEuQXpq4lFyGHPvQa848FLPiM4HUnlUfV75rsdsOvlTGQojHD+z+LHhWl9c4SIupKiw==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/@wordpress/hooks/-/hooks-4.31.0.tgz", + "integrity": "sha512-8YOftWP54V4hvO46/FgXnpiB/fAC72CWD/F1JYtcfZcrWgbR96MGZxKXNvn5BgLx6juO36QQuFhJ5y2ZUEulkw==", + "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "7.25.7" }, @@ -6761,6 +6798,7 @@ "version": "4.19.1", "resolved": "https://registry.npmjs.org/@wordpress/html-entities/-/html-entities-4.19.1.tgz", "integrity": "sha512-VSrvQ+RA772+QB76PAWpiVZgpPqES0BSy60E2lYLGwIuiazMlKWLAQDzWfsQuAfiXTgQFGI7n+0LDf1DUwOWhw==", + "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "7.25.7" }, @@ -6773,6 +6811,7 @@ "version": "5.19.1", "resolved": "https://registry.npmjs.org/@wordpress/i18n/-/i18n-5.19.1.tgz", "integrity": "sha512-rUt7WjY+nqDkhA9iSXAlE+/ijpS7cZwz1xazn7fDXXgwPXUdvyDoE/4gJFC9pWmWejrjrrcU7M5+xTSxeh+dVQ==", + "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "7.25.7", "@wordpress/hooks": "^4.19.1", @@ -6793,6 +6832,7 @@ "version": "10.19.1", "resolved": "https://registry.npmjs.org/@wordpress/icons/-/icons-10.19.1.tgz", "integrity": "sha512-v6C0521Hh5SrDPG1VnRK1jxqF3DfqVPi5+a51CIR9VmjLbwASFhAPv+xFwOoaG3O0PupU4S5nnF2AqQY+vqqNw==", + "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "7.25.7", "@wordpress/element": "^6.19.1", @@ -6804,22 +6844,23 @@ } }, "node_modules/@wordpress/interface": { - "version": "9.4.3", - "resolved": "https://registry.npmjs.org/@wordpress/interface/-/interface-9.4.3.tgz", - "integrity": "sha512-w/QM0shZK1BI7r7fcU6qGW6aewrOwfo8Ok5gr9h+cy1REaIa8P9WgU/U98LhsR4cIj8X9lji34gChxvYqsBhIQ==", + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/@wordpress/interface/-/interface-9.4.4.tgz", + "integrity": "sha512-3ciZXQD6ldTt+tqau+UFGYvE/oZmr30JA9u8edK5eBnwVr5VE6J/uswWWCbfVRilhGBKxVM2BbWP3AxBdxRVZg==", + "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "7.25.7", "@wordpress/a11y": "^4.19.1", - "@wordpress/components": "^29.5.3", - "@wordpress/compose": "^7.19.1", - "@wordpress/data": "^10.19.1", + "@wordpress/components": "^29.5.4", + "@wordpress/compose": "^7.19.2", + "@wordpress/data": "^10.19.2", "@wordpress/deprecated": "^4.19.1", "@wordpress/element": "^6.19.1", "@wordpress/i18n": "^5.19.1", "@wordpress/icons": "^10.19.1", - "@wordpress/plugins": "^7.19.3", - "@wordpress/preferences": "^4.19.3", - "@wordpress/viewport": "^6.19.1", + "@wordpress/plugins": "^7.19.4", + "@wordpress/preferences": "^4.19.4", + "@wordpress/viewport": "^6.19.2", "clsx": "^2.1.1" }, "engines": { @@ -7056,13 +7097,14 @@ } }, "node_modules/@wordpress/plugins": { - "version": "7.19.3", - "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-7.19.3.tgz", - "integrity": "sha512-D8LNJ6Ughlo1DuH26UVyl7ugZFj/ecSEpDMuRIAs80/sSeJ2kh9eR2nVe0QgE+/RQX6uSeY/eSEaekWIO86Ttg==", + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@wordpress/plugins/-/plugins-7.19.4.tgz", + "integrity": "sha512-TRPmm8+VfzuZaQFZwAAxGcAl/exZEQho9Z+yGlWTY+lNi5bhE5ZBR5ftxDbBVe0DJpkV+AXRUEDKenhf/yK03A==", + "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "7.25.7", - "@wordpress/components": "^29.5.3", - "@wordpress/compose": "^7.19.1", + "@wordpress/components": "^29.5.4", + "@wordpress/compose": "^7.19.2", "@wordpress/deprecated": "^4.19.1", "@wordpress/element": "^6.19.1", "@wordpress/hooks": "^4.19.1", @@ -7483,6 +7525,7 @@ "resolved": "https://registry.npmjs.org/@wordpress/scripts/-/scripts-30.12.1.tgz", "integrity": "sha512-uHCm7+MxRP0lFDAeURXGCfYAKsByVS55JuY4uaSWE2siHOD8XouqRfyAdIGejyW698riXEuGmNuAJG61U/RQgg==", "dev": true, + "license": "GPL-2.0-or-later", "dependencies": { "@babel/core": "7.25.7", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", @@ -7605,9 +7648,10 @@ } }, "node_modules/@wordpress/shortcode": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@wordpress/shortcode/-/shortcode-4.24.0.tgz", - "integrity": "sha512-81K4AvTpXV2+j+a7HEVFVyETI+BIBd1lHYrnT/auCqWMIdqIzlOr4nrhs8FnYRohW6jgTdQheuq51dCsA7tTLQ==", + "version": "4.31.0", + "resolved": "https://registry.npmjs.org/@wordpress/shortcode/-/shortcode-4.31.0.tgz", + "integrity": "sha512-ITusd7CSFL41NMRgAygCmopj+Du0OyHM/5uH6IbBBYHsXwkUiV5B3wt3023td8GcdhzVQPHVHEHqC2gyrttxEg==", + "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "7.25.7", "memize": "^2.0.1" @@ -7635,6 +7679,7 @@ "resolved": "https://registry.npmjs.org/@wordpress/stylelint-config/-/stylelint-config-23.11.1.tgz", "integrity": "sha512-0CX6OeuOwjaAfofrlDHTkPjEHnWq5Mj8wdM5vx3ajXbnsvzNVdskNIKvKva+Z2c54sFwGXO20QRp0kUqFtflUQ==", "dev": true, + "license": "MIT", "dependencies": { "@stylistic/stylelint-plugin": "^3.0.1", "stylelint-config-recommended": "^14.0.1", @@ -7674,21 +7719,22 @@ } }, "node_modules/@wordpress/upload-media": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@wordpress/upload-media/-/upload-media-0.4.3.tgz", - "integrity": "sha512-42LlVlMOesoJkUDVLu2/70mSmbfrJhz/FqFMxfonZKm+7emmrF/PUP55mG83evXE4raRIjTqD8vrgfcz+dyEpw==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@wordpress/upload-media/-/upload-media-0.4.4.tgz", + "integrity": "sha512-WXJKNLV1yDbvkwxnw367voBmKiwLuONuW8r1Pk+/IkZ0zRVowQ/C77Q1JHw0Lla8EnYTrmW2ncyBDxuJmt/Zog==", + "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "7.25.7", "@shopify/web-worker": "^6.4.0", - "@wordpress/api-fetch": "^7.19.1", + "@wordpress/api-fetch": "^7.19.2", "@wordpress/blob": "^4.19.1", - "@wordpress/compose": "^7.19.1", - "@wordpress/data": "^10.19.1", + "@wordpress/compose": "^7.19.2", + "@wordpress/data": "^10.19.2", "@wordpress/element": "^6.19.1", "@wordpress/i18n": "^5.19.1", - "@wordpress/preferences": "^4.19.3", + "@wordpress/preferences": "^4.19.4", "@wordpress/private-apis": "^1.19.1", - "@wordpress/url": "^4.19.1", + "@wordpress/url": "^4.19.2", "uuid": "^9.0.1" }, "engines": { @@ -7701,9 +7747,10 @@ } }, "node_modules/@wordpress/url": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-4.19.1.tgz", - "integrity": "sha512-EXG2Q6HjpLOB7RXPHQRX0Ub4OZnndX/xJSoS5x7emlg94vNvIC7G3rxG1kZTgH5PhUpDQFx6rN1kXC/NQpCk7g==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/@wordpress/url/-/url-4.19.2.tgz", + "integrity": "sha512-mMg622x6eMTsd9AameLaq77/Mmx7gHTJoGOtMiRVVxQwxmurFXGwZubNjQ31OJyDfE2mpnChRfuj70PzhpM3gw==", + "license": "GPL-2.0-or-later", "dependencies": { "@babel/runtime": "7.25.7", "remove-accents": "^0.5.0" @@ -13320,7 +13367,8 @@ "node_modules/hpq": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/hpq/-/hpq-1.4.0.tgz", - "integrity": "sha512-ycJQMRaRPBcfnoT1gS5I1XCvbbw9KO94Y0vkwksuOjcJMqNZtb03MF2tCItLI2mQbkZWSSeFinoRDPmjzv4tKg==" + "integrity": "sha512-ycJQMRaRPBcfnoT1gS5I1XCvbbw9KO94Y0vkwksuOjcJMqNZtb03MF2tCItLI2mQbkZWSSeFinoRDPmjzv4tKg==", + "license": "MIT" }, "node_modules/html-encoding-sniffer": { "version": "3.0.0", @@ -19226,7 +19274,8 @@ "node_modules/require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "license": "ISC" }, "node_modules/requireindex": { "version": "1.2.0", @@ -19871,7 +19920,8 @@ "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC" }, "node_modules/set-function-length": { "version": "1.2.2", @@ -19984,6 +20034,7 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/showdown/-/showdown-1.9.1.tgz", "integrity": "sha512-9cGuS382HcvExtf5AHk7Cb4pAeQQ+h0eTr33V1mu+crYWV4KvWAw6el92bDrqGEk5d46Ai/fhbEUwqJ/mTCNEA==", + "license": "BSD-3-Clause", "dependencies": { "yargs": "^14.2" }, @@ -19995,6 +20046,7 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "license": "MIT", "engines": { "node": ">=6" } @@ -20003,6 +20055,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -20014,6 +20067,7 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "license": "MIT", "engines": { "node": ">=6" } @@ -20022,6 +20076,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "license": "ISC", "dependencies": { "string-width": "^3.1.0", "strip-ansi": "^5.2.0", @@ -20032,6 +20087,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", "dependencies": { "color-name": "1.1.3" } @@ -20039,17 +20095,20 @@ "node_modules/showdown/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" }, "node_modules/showdown/node_modules/emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "license": "MIT" }, "node_modules/showdown/node_modules/find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "license": "MIT", "dependencies": { "locate-path": "^3.0.0" }, @@ -20061,6 +20120,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "license": "MIT", "engines": { "node": ">=4" } @@ -20069,6 +20129,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "license": "MIT", "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -20081,6 +20142,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -20095,6 +20157,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "license": "MIT", "dependencies": { "p-limit": "^2.0.0" }, @@ -20106,6 +20169,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "license": "MIT", "engines": { "node": ">=4" } @@ -20114,6 +20178,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "license": "MIT", "dependencies": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", @@ -20127,6 +20192,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "license": "MIT", "dependencies": { "ansi-regex": "^4.1.0" }, @@ -20138,6 +20204,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "license": "MIT", "dependencies": { "ansi-styles": "^3.2.0", "string-width": "^3.0.0", @@ -20150,12 +20217,14 @@ "node_modules/showdown/node_modules/y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "license": "ISC" }, "node_modules/showdown/node_modules/yargs": { "version": "14.2.3", "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", + "license": "MIT", "dependencies": { "cliui": "^5.0.0", "decamelize": "^1.2.0", @@ -20174,6 +20243,7 @@ "version": "15.0.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz", "integrity": "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==", + "license": "ISC", "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -20221,7 +20291,8 @@ "node_modules/simple-html-tokenizer": { "version": "0.5.11", "resolved": "https://registry.npmjs.org/simple-html-tokenizer/-/simple-html-tokenizer-0.5.11.tgz", - "integrity": "sha512-C2WEK/Z3HoSFbYq8tI7ni3eOo/NneSPRoPpcM7WdLjFOArFuyXEjAoCdOC3DgMfRyziZQ1hCNR4mrNdWEvD0og==" + "integrity": "sha512-C2WEK/Z3HoSFbYq8tI7ni3eOo/NneSPRoPpcM7WdLjFOArFuyXEjAoCdOC3DgMfRyziZQ1hCNR4mrNdWEvD0og==", + "license": "MIT" }, "node_modules/sirv": { "version": "2.0.4", @@ -22943,7 +23014,8 @@ "node_modules/which-module": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "license": "ISC" }, "node_modules/which-typed-array": { "version": "1.1.16", diff --git a/package.json b/package.json index e37f95d..f05727c 100644 --- a/package.json +++ b/package.json @@ -29,18 +29,18 @@ }, "dependencies": { "@wordpress/base-styles": "^5.19.1", - "@wordpress/block-editor": "^14.14.5", - "@wordpress/blocks": "^14.8.1", - "@wordpress/components": "^29.5.3", - "@wordpress/data": "^10.19.1", + "@wordpress/block-editor": "^14.14.6", + "@wordpress/blocks": "^14.8.2", + "@wordpress/components": "^29.5.4", + "@wordpress/data": "^10.19.2", "@wordpress/dom-ready": "^4.19.1", "@wordpress/element": "^6.19.1", "@wordpress/html-entities": "^4.19.1", "@wordpress/i18n": "^5.19.1", "@wordpress/icons": "^10.19.1", - "@wordpress/interface": "^9.4.3", - "@wordpress/plugins": "^7.19.3", - "@wordpress/url": "^4.19.1", + "@wordpress/interface": "^9.4.4", + "@wordpress/plugins": "^7.19.4", + "@wordpress/url": "^4.19.2", "change-case": "^4.1.2", "classnames": "^2.3.2", "colord": "^2.9.3", From 5265e2908bb568005f227f1247967da1b0d2312c Mon Sep 17 00:00:00 2001 From: JR Tashjian Date: Mon, 6 Oct 2025 20:28:05 -0400 Subject: [PATCH 04/22] Bug: Fix condition label display to handle undefined block title --- packages/block-library/conditional-group/edit.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/block-library/conditional-group/edit.js b/packages/block-library/conditional-group/edit.js index d1b4ee2..a272b55 100644 --- a/packages/block-library/conditional-group/edit.js +++ b/packages/block-library/conditional-group/edit.js @@ -95,7 +95,7 @@ const Edit = ( {
- { conditionLabel + ' ' + blockTitle.toLowerCase() } + { conditionLabel + ' ' + ( blockTitle || 'condition' ).toLowerCase() }
From d91d1c1c0bf43dac3673423ccba9660898af8b87 Mon Sep 17 00:00:00 2001 From: JR Tashjian Date: Mon, 6 Oct 2025 22:58:16 -0400 Subject: [PATCH 05/22] Add comprehensive API documentation for service providers (#53) --- README.md | 4 + docs/README.md | 18 ++++ docs/api/analytics-service-provider.md | 78 ++++++++++++++ docs/api/block-library-service-provider.md | 58 ++++++++++ docs/api/form-types-service-provider.md | 101 ++++++++++++++++++ docs/api/omniform-function.md | 74 +++++++++++++ docs/api/plugin-service-provider.md | 93 ++++++++++++++++ docs/blocks/README.md | 36 +++++++ docs/blocks/button-block.md | 19 ++++ docs/blocks/captcha-block.md | 15 +++ docs/blocks/conditional-group-block.md | 15 +++ docs/blocks/field-block.md | 20 ++++ docs/blocks/fieldset-block.md | 18 ++++ docs/blocks/form-block.md | 20 ++++ docs/blocks/hidden-block.md | 13 +++ docs/blocks/input-block.md | 21 ++++ docs/blocks/label-block.md | 18 ++++ ...t-comments-form-cancel-reply-link-block.md | 13 +++ docs/blocks/post-comments-form-title-block.md | 13 +++ docs/blocks/response-notification-block.md | 20 ++++ docs/blocks/select-block.md | 19 ++++ docs/blocks/select-group-block.md | 13 +++ docs/blocks/select-option-block.md | 13 +++ docs/blocks/textarea-block.md | 19 ++++ docs/hooks/js-hooks.md | 23 ++++ docs/hooks/php-hooks.md | 65 +++++++++++ 26 files changed, 819 insertions(+) create mode 100644 docs/README.md create mode 100644 docs/api/analytics-service-provider.md create mode 100644 docs/api/block-library-service-provider.md create mode 100644 docs/api/form-types-service-provider.md create mode 100644 docs/api/omniform-function.md create mode 100644 docs/api/plugin-service-provider.md create mode 100644 docs/blocks/README.md create mode 100644 docs/blocks/button-block.md create mode 100644 docs/blocks/captcha-block.md create mode 100644 docs/blocks/conditional-group-block.md create mode 100644 docs/blocks/field-block.md create mode 100644 docs/blocks/fieldset-block.md create mode 100644 docs/blocks/form-block.md create mode 100644 docs/blocks/hidden-block.md create mode 100644 docs/blocks/input-block.md create mode 100644 docs/blocks/label-block.md create mode 100644 docs/blocks/post-comments-form-cancel-reply-link-block.md create mode 100644 docs/blocks/post-comments-form-title-block.md create mode 100644 docs/blocks/response-notification-block.md create mode 100644 docs/blocks/select-block.md create mode 100644 docs/blocks/select-group-block.md create mode 100644 docs/blocks/select-option-block.md create mode 100644 docs/blocks/textarea-block.md create mode 100644 docs/hooks/js-hooks.md create mode 100644 docs/hooks/php-hooks.md diff --git a/README.md b/README.md index dac19ed..fbaeb1b 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,10 @@ wp plugin install omniform --activate Manual installation method requires [downloading the OmniForm plugin](https://wordpress.org/plugins/omniform) and uploading it to your web server via your favorite FTP application. The WordPress codex contains [instructions on how to do this here](https://wordpress.org/support/article/managing-plugins/#manual-plugin-installation). +## Documentation + +For detailed documentation on using and extending OmniForm, see [docs/README.md](docs/README.md). + ## Development Clone this repository: diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..70f2084 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,18 @@ +# OmniForm Documentation + +Welcome to the OmniForm documentation! This guide covers everything you need to know about using and extending OmniForm, a powerful WordPress plugin for creating forms with the block editor. + +## Table of Contents + +- [API Reference](api/omniform-function.md) - Learn about the `omniform()` helper function for accessing core services. +- [Hooks and Filters](hooks/php-hooks.md) - Discover PHP actions and filters for customizing behavior. +- [JavaScript Hooks](hooks/js-hooks.md) - Explore JavaScript filters for extending functionality. +- [Block Library](blocks/README.md) - Detailed documentation for each available block. + +## Getting Started + +[Screenshot: OmniForm in WordPress Admin] + +OmniForm integrates seamlessly with the WordPress block editor, allowing you to build forms visually. Start by creating a new form post type and adding blocks from the OmniForm category. + +For more information, visit the [OmniForm website](https://omniform.io). diff --git a/docs/api/analytics-service-provider.md b/docs/api/analytics-service-provider.md new file mode 100644 index 0000000..2fa8f3c --- /dev/null +++ b/docs/api/analytics-service-provider.md @@ -0,0 +1,78 @@ +# Analytics Service Provider + +The `AnalyticsServiceProvider` is a service provider that registers the `AnalyticsManager` service for tracking and retrieving form analytics data. + +## Overview + +The service provider extends `AbstractServiceProvider` and implements `BootableServiceProviderInterface`, allowing it to register services within the OmniForm plugin's dependency injection container. + +## Services Provided + +### AnalyticsManager + +The service provider registers a shared instance of `AnalyticsManager`, which provides methods for recording form events and retrieving analytics data. + +```php +$analytics_manager = omniform()->get( \OmniForm\Analytics\AnalyticsManager::class ); +``` + +## Database Schema + +The service provider manages two database tables for analytics: + +- `omniform_stats_events` - Stores form events (impressions, submissions) +- `omniform_stats_visitors` - Stores anonymized visitor identifiers + +## Usage Examples + +### Recording Events + +```php +$analytics = omniform()->get( \OmniForm\Analytics\AnalyticsManager::class ); + +// Record when a form is viewed +$analytics->record_impression( $form_id ); + +// Record successful submissions +$analytics->record_submission_success( $form_id ); + +// Record failed submissions +$analytics->record_submission_failure( $form_id ); +``` + +### Retrieving Analytics + +```php +$analytics = omniform()->get( \OmniForm\Analytics\AnalyticsManager::class ); + +// Get total impressions +$total_impressions = $analytics->get_impression_count( $form_id ); + +// Get unique impressions (unique visitors) +$unique_impressions = $analytics->get_impression_count( $form_id, true ); + +// Get total submissions +$total_submissions = $analytics->get_submission_count( $form_id ); + +// Get unique submissions +$unique_submissions = $analytics->get_submission_count( $form_id, true ); + +// Get failed submissions +$failed_submissions = $analytics->get_failed_submission_count( $form_id ); + +// Calculate conversion rate +$conversion_rate = $analytics->get_conversion_rate( $form_id ); +``` + +## Event Types + +The system tracks three types of events: + +- `IMPRESSION` - When a form is viewed +- `SUBMISSION_SUCCESS` - When a form is successfully submitted +- `SUBMISSION_FAILURE` - When a form submission fails validation + +## Notes + +- Analytics data uses daily salts for visitor anonymization +- All analytics operations are performed through the `AnalyticsManager` service \ No newline at end of file diff --git a/docs/api/block-library-service-provider.md b/docs/api/block-library-service-provider.md new file mode 100644 index 0000000..6c37be1 --- /dev/null +++ b/docs/api/block-library-service-provider.md @@ -0,0 +1,58 @@ +# Block Library Service Provider + +The `BlockLibraryServiceProvider` is a service provider that registers the OmniForm block library, including blocks, patterns, categories, and global styles. + +## Overview + +The service provider extends `AbstractServiceProvider` and implements `BootableServiceProviderInterface`, bootstrapping the block library during WordPress initialization. + +## Blocks + +The service provider registers the following blocks: + +- `omniform/form` - The main form container block +- `omniform/field` - Field wrapper block +- `omniform/label` - Label block +- `omniform/input` - Text input block +- `omniform/hidden` - Hidden input block +- `omniform/textarea` - Textarea block +- `omniform/select` - Select dropdown block +- `omniform/button` - Submit button block +- `omniform/fieldset` - Fieldset block +- `omniform/select-group` - Select group block +- `omniform/select-option` - Select option block +- `omniform/captcha` - CAPTCHA block +- `omniform/response-notification` - Response notification block +- `omniform/post-comments-form-title` - Comments form title block +- `omniform/post-comments-form-cancel-reply-link` - Cancel reply link block +- `omniform/conditional-group` - Conditional group block + +The form block includes variations for each published OmniForm post, allowing easy insertion of existing forms. + +## Patterns + +Registers block patterns from the `BlockPatterns/` directory, categorized under "OmniForm". Patterns are available for: + +- Standard forms within the form editor +- Standalone forms for use in posts, pages, and templates + +## Categories + +Adds the following block categories: + +- `omniform` - Main OmniForm category +- `omniform-standard-fields` - Standard form fields +- `omniform-advanced-fields` - Advanced form fields +- `omniform-grouped-fields` - Grouped form fields +- `omniform-conditional-groups` - Conditional form groups + +## Global Styles + +Provides default global styles for OmniForm blocks, with theme-specific overrides for popular themes like [Twenty Twenty-Four](https://wordpress.org/themes/twentytwentyfour/), [Twenty Twenty-Five](https://wordpress.org/themes/twentytwentyfive/), [Kanso](https://wordpress.org/themes/kanso/), [Ollie](https://wordpress.org/themes/ollie/), and [Rockbase](https://rockbase.co/). + +Styles include consistent typography, spacing, borders, and focus states for form elements. + +## Notes + +- Global styles are applied via the `wp_theme_json_data_blocks` filter +- Theme-specific styles are automatically applied based on the active theme diff --git a/docs/api/form-types-service-provider.md b/docs/api/form-types-service-provider.md new file mode 100644 index 0000000..9f00f1e --- /dev/null +++ b/docs/api/form-types-service-provider.md @@ -0,0 +1,101 @@ +# Form Types Service Provider + +The `FormTypesServiceProvider` is a service provider that registers the `FormTypesManager` service for managing different types of OmniForm forms. + +## Overview + +The service provider extends `AbstractServiceProvider` and implements `BootableServiceProviderInterface`, registering services and bootstrapping WordPress hooks for form type management. + +## Services Provided + +### FormTypesManager + +The service provider registers a shared instance of `FormTypesManager`, which manages form type definitions and provides methods for adding and retrieving form types. + +```php +$form_types_manager = omniform()->get( \OmniForm\FormTypes\FormTypesManager::class ); +``` + +## Form Types + +Form types are defined as arrays with the following structure: + +```php +array( + 'type' => 'unique_identifier', + 'label' => 'Display Label', + 'description' => 'Description of the form type', + 'icon' => 'icon_slug', // Optional +) +``` + +## Usage Examples + +### Retrieving Form Types + +```php +$form_types_manager = omniform()->get( \OmniForm\FormTypes\FormTypesManager::class ); + +// Get all available form types +$form_types = $form_types_manager->get_form_types(); + +// Get the default form type +$default_type = $form_types_manager->get_default_form_type(); + +// Validate a form type (returns default if invalid) +$validated_type = $form_types_manager->validate_form_type( 'some_type' ); +``` + +### Adding Custom Form Types + +```php +$form_types_manager = omniform()->get( \OmniForm\FormTypes\FormTypesManager::class ); + +$form_types_manager->add_form_type( + array( + 'type' => 'survey', + 'label' => 'Survey', + 'description' => 'A survey form', + 'icon' => 'clipboard', + ) +); +``` + +## Hooks + +### omniform_register_form_types + +Fires after default form types are registered, allowing developers to add custom form types. + +```php +add_action( 'omniform_register_form_types', function( $form_types_manager ) { + $form_types_manager->add_form_type( + array( + 'type' => 'survey', + 'label' => 'Survey', + 'description' => 'A survey form', + ) + ); +} ); +``` + +## Taxonomy + +The service provider registers the `omniform_type` taxonomy for categorizing forms by type. This taxonomy is not public and is used internally for form management. + +## Block Editor Integration + +Form types are automatically made available to the block editor through the `block_editor_settings_all` filter, allowing form blocks to access type information. + +## Default Form Types + +The system includes two default form types: + +- `standard` - A standard form +- `custom` - A custom form + +## Notes + +- Form types are registered during the `init` hook +- Custom form types should be added via the `omniform_register_form_types` action +- The taxonomy terms are automatically created for each registered form type diff --git a/docs/api/omniform-function.md b/docs/api/omniform-function.md new file mode 100644 index 0000000..d8fa7fb --- /dev/null +++ b/docs/api/omniform-function.md @@ -0,0 +1,74 @@ +# omniform() Function + +The `omniform()` function is a global helper that returns the main application container instance (`\OmniForm\Application`), providing access to core services and utilities within the OmniForm plugin. + +## Overview + +```php +$container = omniform(); +``` + +This function allows developers to interact with various OmniForm services programmatically. + +## Service Retrieval + +### FormFactory +Retrieve the FormFactory service to create or manage form instances. + +```php +$form_factory = omniform()->get( \OmniForm\Plugin\FormFactory::class ); +$form = $form_factory->create_with_id( $form_id ); +``` + +### AnalyticsManager +Access analytics tracking for form submissions and impressions. + +```php +$analytics = omniform()->get( \OmniForm\Analytics\AnalyticsManager::class ); +$analytics->record_submission_success( $form_id ); +$impressions = $analytics->get_impression_count( $form_id ); +``` + +### ResponseFactory +Create form response objects. + +```php +$response_factory = omniform()->get( \OmniForm\Plugin\ResponseFactory::class ); +$response = $response_factory->create_with_form( $form ); +``` + +### FormTypesManager +Manage different form types. + +```php +$form_types = omniform()->get( \OmniForm\FormTypes\FormTypesManager::class ); +// Use for registering or retrieving form types +``` + +## Utility Methods + +### Version +Get the current plugin version. + +```php +$version = omniform()->version(); +``` + +### Base Path +Get the plugin's base directory path. + +```php +$path = omniform()->base_path(); +``` + +## Service Providers + +You can register custom service providers to extend OmniForm's functionality. + +```php +omniform()->addServiceProvider( new MyCustomServiceProvider() ); +``` + +## Notes + +Some methods like `set_base_path()` are internal and not intended for public use. Stick to the service retrieval, utility methods, and service provider registration for custom development. For most customizations, use [hooks](../hooks/php-hooks.md) instead. diff --git a/docs/api/plugin-service-provider.md b/docs/api/plugin-service-provider.md new file mode 100644 index 0000000..4d60c45 --- /dev/null +++ b/docs/api/plugin-service-provider.md @@ -0,0 +1,93 @@ +# Plugin Service Provider + +The `PluginServiceProvider` is the core service provider that registers essential OmniForm services and bootstraps the plugin's functionality within WordPress. + +## Overview + +The service provider extends `AbstractServiceProvider` and implements `BootableServiceProviderInterface`, registering core services and setting up WordPress integrations including custom post types and form processing. + +## Services Provided + +Access services through the `omniform()` helper function. See [omniform() Helper Function documentation](omniform-function.md) for usage examples. + +### Form + +A shared instance of the `Form` class for form validation and processing. + +```php +$form = omniform()->get( \OmniForm\Plugin\Form::class ); +``` + +### FormFactory + +Creates and manages form instances. + +```php +$form_factory = omniform()->get( \OmniForm\Plugin\FormFactory::class ); +$form = $form_factory->create_with_id( $form_id ); +``` + +### ResponseFactory + +Creates form response objects. + +```php +$response_factory = omniform()->get( \OmniForm\Plugin\ResponseFactory::class ); +$response = $response_factory->create_with_id( $response_id ); +``` + +### QueryBuilder + +Provides database query building functionality using WordPress's `$wpdb`. + +```php +$query_builder = omniform()->get( \OmniForm\Plugin\QueryBuilder::class ); +``` + +### QueryBuilderFactory + +Creates new QueryBuilder instances. + +```php +$query_builder_factory = omniform()->get( \OmniForm\Plugin\QueryBuilderFactory::class ); +$query_builder = $query_builder_factory->create(); +``` + +## Post Types + +The service provider registers two custom post types: + +- `omniform` - The main form post type with REST API support +- `omniform_response` - Stores form submission responses + +## Analytics Integration + +Automatically tracks form impressions and submissions using the AnalyticsManager. See [AnalyticsServiceProvider documentation](analytics-service-provider.md) for details. + +## Email Notifications + +Sends email notifications when form responses are created, using the form's configured notification settings. + +## Settings + +Registers the following CAPTCHA service settings: + +- `omniform_hcaptcha_site_key` - hCaptcha site key +- `omniform_hcaptcha_secret_key` - hCaptcha secret key +- `omniform_recaptchav2_site_key` - reCAPTCHA v2 site key +- `omniform_recaptchav2_secret_key` - reCAPTCHA v2 secret key +- `omniform_recaptchav3_site_key` - reCAPTCHA v3 site key +- `omniform_recaptchav3_secret_key` - reCAPTCHA v3 secret key +- `omniform_turnstile_site_key` - Turnstile site key +- `omniform_turnstile_secret_key` - Turnstile secret key + +## Hooks + +### Actions + +- `omniform_response_created` - Triggered when a form response is saved +- `omniform_form_render` - Triggered when a form is rendered + +## Notes + +- Forms are rendered using block content on singular pages diff --git a/docs/blocks/README.md b/docs/blocks/README.md new file mode 100644 index 0000000..913d25d --- /dev/null +++ b/docs/blocks/README.md @@ -0,0 +1,36 @@ +# Block Library + +OmniForm provides a comprehensive set of blocks for building forms in the WordPress block editor. Below is a list of all available blocks, grouped by category. + +## Form Blocks + +- **[Form](form-block.md)**: Easily create professional forms for your website. +- **[Field](field-block.md)**: A consolidated form control component. +- **[Button](button-block.md)**: A button for form actions. +- **[Response Notification](response-notification-block.md)**: Notifies user of submission. + +## Input Blocks + +- **[Input](input-block.md)**: A field for simple text entry. +- **[Textarea](textarea-block.md)**: A field for long-form text responses. +- **[Select](select-block.md)**: Create dropdown menus for single or multiple choices. +- **[Select Group](select-group-block.md)**: Group Option blocks under a common label. +- **[Select Option](select-option-block.md)**: An selectable option within a Select block. +- **[Label](label-block.md)**: A label associated with one form field. + +## Grouping Blocks + +- **[Fieldset](fieldset-block.md)**: Organize and group related controls. +- **[Conditional Group](conditional-group-block.md)**: Controls the visibility of a group of blocks based on specified conditions. + +## Advanced Blocks + +- **[Captcha](captcha-block.md)**: Add an extra layer of form protection against spam. +- **[Hidden](hidden-block.md)**: A hidden form input for storing additional data. + +## Comments Integration Blocks + +- **[Post Comments Form Title](post-comments-form-title-block.md)**: Displays the title for the comments form. +- **[Post Comments Form Cancel Reply Link](post-comments-form-cancel-reply-link-block.md)**: Displays text based on comment reply status. + +Each block page includes detailed information on usage, settings, and integration with the WordPress block editor. See [omniform() Function](../api/omniform-function.md) for programmatic form creation. \ No newline at end of file diff --git a/docs/blocks/button-block.md b/docs/blocks/button-block.md new file mode 100644 index 0000000..6932cd3 --- /dev/null +++ b/docs/blocks/button-block.md @@ -0,0 +1,19 @@ +# Button Block + +The Button block adds a clickable button to your form, allowing users to submit or reset the information they have entered. It generates a `