選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 

158 行
5.8 KiB

  1. {
  2. "plugins": [],
  3. "functions": {
  4. "copyText": {
  5. "js": "let args = arguments[0]; navigator.clipboard.writeText(args).then(() => console.log('copied!'));"
  6. },
  7. "copyElementText": {
  8. "js": "let args = arguments[0]; navigator.clipboard.writeText(document.querySelector(args).innerText).then(() => console.log('copied!'));"
  9. },
  10. "fileDrop": {
  11. "js": "let args = arguments[0]; let inp, el = document.querySelector(args.container); if (!window[args.id]) el.innerHTML += '<label for=\"'+args.id+'\"><img src=\"https://image.freepik.com/free-icon/upload-arrow_318-26670.jpg\" style=\"position:absolute; width:40%; top:30%; left: 30%; right:30%; bottom:30%;\"></label><input type=\"file\" id=\"' + args.id + '\" multiple style=\"opacity:0; background:red; position:absolute; top:0; left: 0; right:0; bottom:0\"/>'; el.addEventListener('dragover', (e) => {el.style.opacity = 0.5; e.preventDefault()}); el.addEventListener('dragleave', (e) => {el.style.opacity = 1;}); el.addEventListener('drop', (e) => {window[args.id].files = e.dataTransfer.files; e.preventDefault(); el.style.opacity = 1; if (args.on && args.on.drop) js.callback({do:args.on.drop}); }); window[args.id].addEventListener('change', (e) => {window[args.id].files = e.dataTransfer.files; e.preventDefault(); el.style.opacity = 1; if (args.on && args.on.drop) js.callback({do:args.on.drop}); }); "
  12. },
  13. "click": {
  14. "js": "let args = arguments[0]; let el = document.querySelector(args); el.click();"
  15. },
  16. "urlParam": {
  17. "js": "let args = arguments[0]; let params = new URLSearchParams(document.location.search); return params.get(args);"
  18. },
  19. "log": {
  20. "js": "let args = arguments[0]; let text = (args.text) ? args.text : args; if (typeof text == 'string') {let style = ''; if (args.color) style += 'color: '+args.color+';'; if (args.background) style += 'background: '+args.background+';'; console.log('%c '+text, style);} else {console.log(text)}"
  21. },
  22. "confirm": {
  23. "js": "let args = arguments[0]; if (confirm(args.request)) { if (args.on && args.on.confirm) js.do(args.on.confirm) } else { if (args.on && args.on.cancel) js.do(args.on.cancel) };"
  24. },
  25. "prompt": {
  26. "js": "let promptResponse = prompt(args.label, args.placeholder); if (promptResponse == null || promptResponse == '') {if (args.on && args.on.cancel) js.do(args.on.cancel, null, promptResponse) } else { if (args.on && args.on.confirm) js.do(args.on.confirm, null, promptResponse) }"
  27. },
  28. "cookieSet": {
  29. "js": "let args = arguments[0]; const d = new Date(); d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); let expires = 'expires='+d.toUTCString(); document.cookie = args.name + '=' + args.value + ';' + args.expires + ';path=/';"
  30. },
  31. "cookieGet": {
  32. "js": "let args = arguments[0]; let name = args.name + '='; let ca = document.cookie.split(';'); for(let i = 0; i < ca.length; i++) {let c = ca[i]; while (c.charAt(0) == ' ') {c = c.substring(1);} if (c.indexOf(name) == 0) {return c.substring(name.length, c.length); } } return '';"
  33. },
  34. "ifAvif": {
  35. "js": "let args = arguments[0]; console.log('avif check'); let avif = new Image(); avif.src ='data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A='; avif.onload = function () { js.callback({do:args.then}); }; avif.onerror = function () { js.callback({do:args.else}); };"
  36. },
  37. "pathFromHash": {
  38. "js": "let args = arguments[0]; let pathString = String(window.location.hash).substr(1); console.log(pathString.split('/'));return pathString.split('/')"
  39. }
  40. },
  41. "parts": {
  42. "browser": {
  43. "changePage": {
  44. "do": [
  45. {
  46. "attr": {
  47. "selector": ".{arguments:pagesClass}",
  48. "addClass": "hidden"
  49. }
  50. },
  51. {
  52. "attr": {
  53. "selector": ".{arguments:pagesClass}[data-value='{arguments:pageId}']",
  54. "removeClass": "hidden"
  55. }
  56. },
  57. {
  58. "attr": {
  59. "selector": ".menu-focus",
  60. "removeClass": "menu-focus"
  61. }
  62. },
  63. {
  64. "attr": {
  65. "selector": ".menuItem[data-id='{arguments:pageId}']",
  66. "addClass": "menu-focus"
  67. }
  68. },
  69. {
  70. "part": {
  71. "do": "{arguments:pageChanger}",
  72. "arguments": {
  73. "page": "{arguments:pageId}",
  74. "path": "{arguments:pagePath}"
  75. }
  76. }
  77. }
  78. ]
  79. },
  80. "pathFromHash": {
  81. "do": [
  82. {
  83. "set": {
  84. "var hashPath": "String('{location hash}').substr(1)"
  85. }
  86. },
  87. {
  88. "set": {
  89. "var viewPath": "String('{var hashPath}').split('/')"
  90. }
  91. },
  92. {
  93. "part": {
  94. "do": "{arguments:do}",
  95. "arguments": {
  96. "path": "{var viewPath}"
  97. }
  98. }
  99. }
  100. ]
  101. },
  102. "pageFromHash": {
  103. "do": [
  104. {
  105. "set": {
  106. "var hashPath": "String('{location hash}').substr(1)"
  107. }
  108. },
  109. {
  110. "set": {
  111. "var viewPath": "String('{var hashPath}').split('/')"
  112. }
  113. },
  114. {
  115. "browser:changePage": {
  116. "pageId": "{var viewPath 0}",
  117. "pagePath": "{var viewPath 1}",
  118. "pageChanger": "{arguments:pageChanger}",
  119. "pagesClass": "{arguments:pagesClass}",
  120. "pagesInit": "{arguments:pagesInit}"
  121. }
  122. }
  123. ]
  124. },
  125. "title": {
  126. "do": [
  127. {
  128. "html": {
  129. "selector": "title",
  130. "text": "test"
  131. }
  132. },
  133. {
  134. "set": {
  135. "document title": "{arguments}"
  136. }
  137. }
  138. ]
  139. },
  140. "copyOnClick": {
  141. "do": [
  142. {
  143. "html": {
  144. "selector": "{arguments:selector}",
  145. "on": {
  146. "mousedown": [
  147. {
  148. "copyElementText": "{arguments:selector}"
  149. }
  150. ]
  151. }
  152. }
  153. }
  154. ]
  155. }
  156. }
  157. }
  158. }