| Server IP : 38.190.208.107 / Your IP : 216.73.217.21 Web Server : nginx/1.28.1 System : Linux ht2026040333114 6.1.0-10-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.37-1 (2023-07-03) x86_64 User : root ( 0) PHP Version : 8.2.28 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv,eval,assert,passthru,system,exec,shell_exec,popen,proc_open MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /www/wwwroot/wp.2/wp-content/plugins/blocksy-companion-pro/static/js/editor/hooks/ |
Upload File : |
import { useEffect } from '@wordpress/element'
import { select } from '@wordpress/data'
export const getAttributes = () => {
return {
uniqueId: {
type: 'string',
default: '',
},
}
}
const shortenId = (clientId) => clientId.split('-')[0]
function isDuplicate({ attributes, blockType }) {
const iframes = document.querySelectorAll('iframe')
const allDocuments = [
document,
...Array.from(iframes)
.filter(
(iframe) =>
!iframe.closest('.block-editor-block-preview__container')
)
.map((iframe) => iframe.contentDocument)
.filter((cD) => cD),
]
const elements = allDocuments.flatMap((document) => {
return [
...document.querySelectorAll(
`[data-id="${attributes.uniqueId}"][data-type="${blockType}"]`
),
]
})
if (elements.length > 1) {
return true
}
return false
}
// Add support for this, otherwise IDs will be duplicated on clone
// https://github.com/WordPress/gutenberg/pull/38643
export const useUniqueId = ({
attributes,
clientId,
setAttributes,
blockType,
}) => {
useEffect(() => {
if (
!attributes.uniqueId ||
isDuplicate({ attributes, clientId, blockType })
) {
setAttributes({
uniqueId: shortenId(clientId),
})
}
}, [clientId])
let uniqueId = attributes.uniqueId || shortenId(clientId)
return {
uniqueId,
props: {
'data-id': uniqueId,
},
}
}
export const useSaveUniqueId = (props) => {
const { attributes, clientId } = props
return {
uniqueId: attributes.uniqueId || clientId || '',
props: attributes.uniqueId
? {
'data-id': attributes.uniqueId,
}
: {},
}
}