domma-cms 0.36.0 → 0.36.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin/css/admin.css +1 -1
- package/admin/css/dashboard.css +1 -1
- package/admin/js/lib/card-builder.js +2 -2
- package/admin/js/lib/crud-tutorial.js +1 -1
- package/admin/js/lib/effects-builder.js +2 -2
- package/admin/js/lib/embed-builder.js +1 -1
- package/admin/js/lib/markdown-toolbar.js +15 -15
- package/admin/js/lib/project-quick-create.js +2 -2
- package/admin/js/lib/scribe-composer.js +3 -3
- package/admin/js/lib/shortcode-context-menu.js +6 -6
- package/admin/js/lib/shortcode-modal.js +1 -1
- package/admin/js/lib/shortcode-registry.js +1 -1
- package/admin/js/lib/shortcode-tags.js +1 -1
- package/admin/js/lib/sidebar-renderer.js +2 -2
- package/admin/js/lib/timeline-builder.js +2 -2
- package/admin/js/templates/api-endpoint-editor.html +2 -2
- package/admin/js/templates/block-editor.html +1 -1
- package/admin/js/templates/component-editor.html +4 -4
- package/admin/js/templates/docs/api-actions.html +11 -11
- package/admin/js/templates/docs/api-authentication.html +11 -11
- package/admin/js/templates/docs/api-collections.html +11 -11
- package/admin/js/templates/docs/api-layouts.html +11 -11
- package/admin/js/templates/docs/api-media.html +11 -11
- package/admin/js/templates/docs/api-navigation.html +11 -11
- package/admin/js/templates/docs/api-pages.html +11 -11
- package/admin/js/templates/docs/api-plugins.html +11 -11
- package/admin/js/templates/docs/api-settings.html +11 -11
- package/admin/js/templates/docs/api-users.html +11 -11
- package/admin/js/templates/docs/api-views.html +11 -11
- package/admin/js/templates/effects.html +752 -752
- package/admin/js/templates/form-editor.html +4 -4
- package/admin/js/templates/form-submissions.html +1 -1
- package/admin/js/templates/forms.html +17 -17
- package/admin/js/templates/my-profile.html +17 -17
- package/admin/js/templates/navigation.html +3 -3
- package/admin/js/templates/notifications.html +1 -1
- package/admin/js/templates/page-editor.html +3 -3
- package/admin/js/templates/project-detail.html +19 -19
- package/admin/js/templates/role-editor.html +70 -70
- package/admin/js/templates/roles.html +10 -10
- package/admin/js/templates/settings.html +6 -6
- package/admin/js/views/action-editor.js +1 -1
- package/admin/js/views/api-endpoint-editor.js +3 -3
- package/admin/js/views/collection-editor.js +2 -2
- package/admin/js/views/collection-entries.js +1 -1
- package/admin/js/views/component-editor.js +3 -3
- package/admin/js/views/form-editor.js +3 -3
- package/admin/js/views/form-submissions.js +1 -1
- package/admin/js/views/page-editor.js +4 -4
- package/admin/js/views/project-detail.js +1 -1
- package/admin/js/views/settings.js +2 -2
- package/bin/lib/config-merge.js +44 -44
- package/package.json +1 -1
- package/public/css/forms.css +1 -1
- package/public/css/site.css +1 -1
- package/public/js/menu-decor.mjs +1 -1
- package/public/js/site.js +1 -1
- package/server/middleware/auth.js +253 -253
- package/server/routes/api/auth.js +309 -309
- package/server/routes/api/navigation.js +42 -42
- package/server/routes/api/settings.js +141 -141
- package/server/services/email.js +167 -167
- package/server/services/userProfiles.js +199 -199
- package/server/services/users.js +302 -302
- package/config/connections.json.bak +0 -9
|
@@ -42,4 +42,4 @@ Optional body content.
|
|
|
42
42
|
[/table]`,attrs:[{name:"striped",type:"checkbox",label:"Striped"},{name:"bordered",type:"checkbox",label:"Bordered"},{name:"compact",type:"checkbox",label:"Compact"},{name:"caption",type:"text",label:"Caption"},{name:"class",type:"text",label:"CSS class"},{name:"id",type:"text",label:"ID"}]},{name:"badge",label:"Badge",category:"Content",selfClosing:!1,container:!1,wrappable:!1,template:'[badge variant="success"]New[/badge]',attrs:[{name:"variant",type:"select",label:"Variant",options:[["primary","Primary"],["secondary","Secondary"],["success","Success"],["danger","Danger"],["warning","Warning"],["info","Info"],["light","Light"],["dark","Dark"]]},{name:"pill",type:"checkbox",label:"Pill"},{name:"outline",type:"checkbox",label:"Outline"},{name:"size",type:"select",label:"Size",options:[["","Default"],["small","Small"],["large","Large"]]}]},{name:"text",label:"Text",category:"Content",selfClosing:!1,container:!0,wrappable:!0,template:'[text size="xl" bold color="primary"]Styled text[/text]',attrs:[{name:"size",type:"select",label:"Size",options:[["xs","XS"],["sm","Small"],["base","Base"],["lg","Large"],["xl","XL"],["2xl","2XL"],["3xl","3XL"],["4xl","4XL"]]},{name:"weight",type:"select",label:"Weight",options:[["thin","Thin"],["light","Light"],["normal","Normal"],["medium","Medium"],["semibold","Semibold"],["bold","Bold"],["extrabold","Extra bold"],["black","Black"]]},{name:"bold",type:"checkbox",label:"Bold"},{name:"italic",type:"checkbox",label:"Italic"},{name:"color",type:"colour",label:"Colour"},{name:"font",type:"select",label:"Font",options:[["Georgia","Georgia"],["Arial","Arial"],["Verdana","Verdana"],["Courier New","Courier New"],["Times New Roman","Times New Roman"],["Trebuchet MS","Trebuchet MS"]]},{name:"transform",type:"select",label:"Transform",options:[["upper","Uppercase"],["lower","Lowercase"],["capitalize","Capitalise"],["none","None"]]},{name:"decoration",type:"select",label:"Decoration",options:[["underline","Underline"],["line-through","Line through"],["none","None"]]},{name:"spacing",type:"select",label:"Letter spacing",options:[["tight","Tight"],["normal","Normal"],["wide","Wide"],["wider","Wider"]]},{name:"align",type:"select",label:"Align",options:[["","None"],["left","Left"],["center","Centre"],["right","Right"]]},{name:"class",type:"text",label:"CSS class"},{name:"id",type:"text",label:"ID"}]},{name:"button",label:"Button",category:"Content",selfClosing:!0,container:!1,wrappable:!1,template:'[button href="/contact" variant="primary" label="Get in touch" /]',attrs:[{name:"href",type:"url",label:"Link"},{name:"label",type:"text",label:"Label"},{name:"variant",type:"select",label:"Variant",options:[["primary","Primary"],["secondary","Secondary"],["success","Success"],["danger","Danger"],["warning","Warning"],["info","Info"],["outline","Outline"],["ghost","Ghost"],["link","Link"],["outline-success","Outline success"],["outline-danger","Outline danger"],["outline-warning","Outline warning"],["outline-info","Outline info"]]},{name:"size",type:"select",label:"Size",options:[["","Default"],["sm","Small"],["lg","Large"]]},{name:"icon",type:"icon",label:"Icon (before)"},{name:"icon-after",type:"icon",label:"Icon (after)"},{name:"target",type:"text",label:"Target"},{name:"class",type:"text",label:"CSS class"},{name:"id",type:"text",label:"ID"}]},{name:"link",label:"Link",category:"Content",selfClosing:!0,container:!1,wrappable:!1,template:'[link href="/about" label="About us" /]',attrs:[{name:"href",type:"url",label:"Link"},{name:"label",type:"text",label:"Label"},{name:"target",type:"text",label:"Target"},{name:"class",type:"text",label:"CSS class"},{name:"icon",type:"icon",label:"Icon (before)"},{name:"icon-after",type:"icon",label:"Icon (after)"},{name:"id",type:"text",label:"ID"}]},{name:"listgroup",label:"List group",category:"Content",selfClosing:!1,container:!0,wrappable:!1,template:`[listgroup]
|
|
43
43
|
[item]First item[/item]
|
|
44
44
|
[item]Second item[/item]
|
|
45
|
-
[/listgroup]`,attrs:[{name:"variant",type:"select",label:"Variant",options:[["","Default"],["flush","Flush"],["numbered","Numbered"],["horizontal","Horizontal"]]},{name:"size",type:"select",label:"Size",options:[["","Default"],["sm","Small"],["lg","Large"]]},{name:"itemvariant",type:"select",label:"Item variant",options:[["","Default"],["primary","Primary"],["secondary","Secondary"],["success","Success"],["danger","Danger"],["warning","Warning"],["info","Info"]]},{name:"action",type:"checkbox",label:"Actionable items"}]},{name:"collection",label:"Collection",category:"Data",selfClosing:!0,container:!1,wrappable:!1,template:'[collection slug="enquiries" display="table" /]',attrs:[{name:"slug",type:"text",label:"Collection slug"},{name:"display",type:"select",label:"Display",options:[["table","Table"],["cards","Cards"],["list","List"],["accordion","Accordion"],["timeline","Timeline"],["block","Block"]]},{name:"fields",type:"text",label:"Fields (comma-separated)"},{name:"limit",type:"number",label:"Limit"},{name:"sort",type:"text",label:"Sort field"},{name:"order",type:"select",label:"Order",options:[["desc","Descending"],["asc","Ascending"]]},{name:"title-field",type:"text",label:"Title field"},{name:"columns",type:"number",label:"Card columns"},{name:"search",type:"checkbox",label:"Search (table)"},{name:"sortable",type:"checkbox",label:"Sortable (table)"},{name:"exportable",type:"checkbox",label:"CSV export"},{name:"page-size",type:"number",label:"Page size"},{name:"empty",type:"text",label:"Empty message"},{name:"scope",type:"select",label:"Scope",options:[["","All"],["mine","Current user"]]},{name:"cta",type:"text",label:"CTA action slug"},{name:"cta-label",type:"text",label:"CTA label"},{name:"cta-icon",type:"icon",label:"CTA icon"},{name:"cta-style",type:"select",label:"CTA style",options:[["primary","Primary"],["secondary","Secondary"],["success","Success"],["danger","Danger"],["warning","Warning"],["info","Info"]]},{name:"cta-confirm",type:"text",label:"CTA confirm text"},{name:"class",type:"text",label:"CSS class"},{name:"id",type:"text",label:"ID"}]},{name:"view",label:"View",category:"Data",selfClosing:!0,container:!1,wrappable:!1,template:'[view slug="products" display="table" limit="50" /]',attrs:[{name:"slug",type:"text",label:"View slug"},{name:"display",type:"select",label:"Display",options:[["table","Table"],["cards","Cards"],["list","List"],["accordion","Accordion"],["timeline","Timeline"],["block","Block"]]},{name:"limit",type:"number",label:"Limit"},{name:"fields",type:"text",label:"Fields (comma-separated)"},{name:"title-field",type:"text",label:"Title field"},{name:"columns",type:"number",label:"Card columns"},{name:"empty",type:"text",label:"Empty message"}]},{name:"block",label:"Block",category:"Data",selfClosing:!0,container:!1,wrappable:!1,template:'[block template="post-card" title="My Post" /]',attrs:[{name:"template",type:"text",label:"Template name"}]},{name:"form",label:"Form",category:"Data",selfClosing:!0,container:!1,wrappable:!1,template:'[form name="contact" /]',attrs:[{name:"name",type:"text",label:"Form slug"},{name:"class",type:"text",label:"CSS class"},{name:"id",type:"text",label:"ID"}]},{name:"cta",label:"CTA",category:"Data",selfClosing:!0,container:!1,wrappable:!1,template:'[cta action="send-welcome" entry="abc123" style="primary" label="Send" /]',attrs:[{name:"action",type:"text",label:"Action slug"},{name:"entry",type:"text",label:"Entry ID"},{name:"style",type:"select",label:"Style",options:[["primary","Primary"],["secondary","Secondary"],["success","Success"],["danger","Danger"],["warning","Warning"],["info","Info"]]},{name:"icon",type:"icon",label:"Icon"},{name:"size",type:"select",label:"Size",options:[["","Default"],["sm","Small"],["lg","Large"]]},{name:"confirm",type:"text",label:"Confirm text"},{name:"label",type:"text",label:"Label"}]},{name:"menu",label:"Menu",category:"Data",selfClosing:!0,container:!1,wrappable:!1,template:'[menu slug="legal" /]',attrs:[{name:"slug",type:"text",label:"Menu slug"},{name:"location",type:"text",label:"Location slot"},{name:"variant",type:"text",label:"Variant"},{name:"class",type:"text",label:"CSS class"},{name:"depth",type:"number",label:"Max depth"}]},{name:"icon",label:"Icon",category:"Media",selfClosing:!0,container:!1,wrappable:!1,template:'[icon name="arrow-right" /]',attrs:[{name:"name",type:"icon",label:"Icon name"},{name:"size",type:"number",label:"Size (px)"},{name:"color",type:"colour",label:"Colour"},{name:"class",type:"text",label:"CSS class"}]},{name:"embed",label:"Embed",category:"Media",selfClosing:!0,container:!1,wrappable:!1,template:'[embed url="https://youtu.be/dQw4w9WgXcQ" /]',attrs:[{name:"url",type:"url",label:"URL"},{name:"ratio",type:"select",label:"Aspect ratio",options:[["16:9","16:9"],["4:3","4:3"],["1:1","1:1"],["21:9","21:9"],["9:16","9:16"],["3:4","3:4"]]},{name:"title",type:"text",label:"Title / caption"},{name:"width",type:"text",label:"Width"},{name:"align",type:"select",label:"Alignment",options:[["left","Left"],["center","Centre"],["right","Right"]]},{name:"autoplay",type:"checkbox",label:"Autoplay"},{name:"loop",type:"checkbox",label:"Loop"},{name:"muted",type:"checkbox",label:"Muted"}]}];
|
|
45
|
+
[/listgroup]`,attrs:[{name:"variant",type:"select",label:"Variant",options:[["","Default"],["flush","Flush"],["numbered","Numbered"],["horizontal","Horizontal"]]},{name:"size",type:"select",label:"Size",options:[["","Default"],["sm","Small"],["lg","Large"]]},{name:"itemvariant",type:"select",label:"Item variant",options:[["","Default"],["primary","Primary"],["secondary","Secondary"],["success","Success"],["danger","Danger"],["warning","Warning"],["info","Info"]]},{name:"action",type:"checkbox",label:"Actionable items"}]},{name:"collection",label:"Collection",category:"Data",selfClosing:!0,container:!1,wrappable:!1,template:'[collection slug="enquiries" display="table" /]',attrs:[{name:"slug",type:"text",label:"Collection slug"},{name:"display",type:"select",label:"Display",options:[["table","Table"],["cards","Cards"],["list","List"],["accordion","Accordion"],["timeline","Timeline"],["block","Block"]]},{name:"fields",type:"text",label:"Fields (comma-separated)"},{name:"limit",type:"number",label:"Limit"},{name:"sort",type:"text",label:"Sort field"},{name:"order",type:"select",label:"Order",options:[["desc","Descending"],["asc","Ascending"]]},{name:"title-field",type:"text",label:"Title field"},{name:"columns",type:"number",label:"Card columns"},{name:"search",type:"checkbox",label:"Search (table)",default:!0},{name:"sortable",type:"checkbox",label:"Sortable (table)",default:!0},{name:"exportable",type:"checkbox",label:"CSV export"},{name:"page-size",type:"number",label:"Page size"},{name:"empty",type:"text",label:"Empty message"},{name:"scope",type:"select",label:"Scope",options:[["","All"],["mine","Current user"]]},{name:"cta",type:"text",label:"CTA action slug"},{name:"cta-label",type:"text",label:"CTA label"},{name:"cta-icon",type:"icon",label:"CTA icon"},{name:"cta-style",type:"select",label:"CTA style",options:[["primary","Primary"],["secondary","Secondary"],["success","Success"],["danger","Danger"],["warning","Warning"],["info","Info"]]},{name:"cta-confirm",type:"text",label:"CTA confirm text"},{name:"class",type:"text",label:"CSS class"},{name:"id",type:"text",label:"ID"}]},{name:"view",label:"View",category:"Data",selfClosing:!0,container:!1,wrappable:!1,template:'[view slug="products" display="table" limit="50" /]',attrs:[{name:"slug",type:"text",label:"View slug"},{name:"display",type:"select",label:"Display",options:[["table","Table"],["cards","Cards"],["list","List"],["accordion","Accordion"],["timeline","Timeline"],["block","Block"]]},{name:"limit",type:"number",label:"Limit"},{name:"fields",type:"text",label:"Fields (comma-separated)"},{name:"title-field",type:"text",label:"Title field"},{name:"columns",type:"number",label:"Card columns"},{name:"empty",type:"text",label:"Empty message"}]},{name:"block",label:"Block",category:"Data",selfClosing:!0,container:!1,wrappable:!1,template:'[block template="post-card" title="My Post" /]',attrs:[{name:"template",type:"text",label:"Template name"}]},{name:"form",label:"Form",category:"Data",selfClosing:!0,container:!1,wrappable:!1,template:'[form name="contact" /]',attrs:[{name:"name",type:"text",label:"Form slug"},{name:"class",type:"text",label:"CSS class"},{name:"id",type:"text",label:"ID"}]},{name:"cta",label:"CTA",category:"Data",selfClosing:!0,container:!1,wrappable:!1,template:'[cta action="send-welcome" entry="abc123" style="primary" label="Send" /]',attrs:[{name:"action",type:"text",label:"Action slug"},{name:"entry",type:"text",label:"Entry ID"},{name:"style",type:"select",label:"Style",options:[["primary","Primary"],["secondary","Secondary"],["success","Success"],["danger","Danger"],["warning","Warning"],["info","Info"]]},{name:"icon",type:"icon",label:"Icon"},{name:"size",type:"select",label:"Size",options:[["","Default"],["sm","Small"],["lg","Large"]]},{name:"confirm",type:"text",label:"Confirm text"},{name:"label",type:"text",label:"Label"}]},{name:"menu",label:"Menu",category:"Data",selfClosing:!0,container:!1,wrappable:!1,template:'[menu slug="legal" /]',attrs:[{name:"slug",type:"text",label:"Menu slug"},{name:"location",type:"text",label:"Location slot"},{name:"variant",type:"text",label:"Variant"},{name:"class",type:"text",label:"CSS class"},{name:"depth",type:"number",label:"Max depth"}]},{name:"icon",label:"Icon",category:"Media",selfClosing:!0,container:!1,wrappable:!1,template:'[icon name="arrow-right" /]',attrs:[{name:"name",type:"icon",label:"Icon name"},{name:"size",type:"number",label:"Size (px)"},{name:"color",type:"colour",label:"Colour"},{name:"class",type:"text",label:"CSS class"}]},{name:"embed",label:"Embed",category:"Media",selfClosing:!0,container:!1,wrappable:!1,template:'[embed url="https://youtu.be/dQw4w9WgXcQ" /]',attrs:[{name:"url",type:"url",label:"URL"},{name:"ratio",type:"select",label:"Aspect ratio",options:[["16:9","16:9"],["4:3","4:3"],["1:1","1:1"],["21:9","21:9"],["9:16","9:16"],["3:4","3:4"]]},{name:"title",type:"text",label:"Title / caption"},{name:"width",type:"text",label:"Width"},{name:"align",type:"select",label:"Alignment",options:[["left","Left"],["center","Centre"],["right","Right"]]},{name:"autoplay",type:"checkbox",label:"Autoplay"},{name:"loop",type:"checkbox",label:"Loop"},{name:"muted",type:"checkbox",label:"Muted"}]}];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export function parseAttrs(
|
|
1
|
+
import{replaceRange as p}from"./markdown-toolbar.js";export function parseAttrs(l){const t=String(l??""),o={};for(const[,i,s,n]of t.matchAll(/([\w-]+)=(?:"([^"]*)"|'([^']*)')/g))o[i]=s??n??"";const c=t.replace(/([\w-]+)=(?:"[^"]*"|'[^']*')/g,i=>" ".repeat(i.length));for(const[,i]of c.matchAll(/\b([\w-]+)\b/g))i in o||(o[i]=!0);return o}export function serialiseTag(l,t,o){const c=[];for(const[s,n]of Object.entries(t))if(n===!0)c.push(s);else{if(n===!1||n===null||n===void 0||n==="")continue;c.push(`${s}="${String(n).replace(/"/g,""")}"`)}const i=c.length?` ${c.join(" ")}`:"";return o?`[${l}${i} /]`:`[${l}${i}]`}function a(l,t,o,c){const i=l.slice(t,o),s=/\/\s*\]$/.test(i),n=i.match(new RegExp(`^\\[${c}([\\s\\S]*?)\\s*/?\\]$`)),e=n?n[1]:"";return{name:c,openTagStart:t,openTagEnd:o,attrStr:e,attrs:parseAttrs(e),selfClosing:s}}function u(l,t,o){const c=new RegExp(`\\[${o}(?=[\\s\\]/])([^\\]]*)\\]`,"g"),i=new RegExp(`\\[/${o}\\]`,"g"),s=[];for(const r of l.matchAll(c)){if(r.index>=t)break;s.push({type:"open",start:r.index,end:r.index+r[0].length})}for(const r of l.matchAll(i)){if(r.index>=t)break;s.push({type:"close",start:r.index})}s.sort((r,f)=>r.start-f.start);let n=0,e=null;for(const r of s)r.type==="open"?(n++,e=r):(n--,n<0&&(n=0,e=null));return n>0&&e&&new RegExp(`\\[/${o}\\]`).test(l.slice(t))?{start:e.start,end:e.end}:null}export function findEnclosingShortcode(l,t){const o=l.value,c=l.selectionStart,i=new Map(t.map(e=>[e.name,e]));let s=null;for(const e of o.matchAll(/\[(\/)?([a-zA-Z][\w-]*)((?:[^\]]*?))\]/g)){const r=e.index,f=r+e[0].length;c<r||c>f||i.has(e[2])&&(s={name:e[2],start:r,end:f,close:!!e[1]})}if(s)if(s.close){const e=u(o,s.start,s.name);if(e)return a(o,e.start,e.end,s.name)}else return a(o,s.start,s.end,s.name);let n=null;for(const e of t){if(e.selfClosing)continue;const r=u(o,c,e.name);r&&(!n||r.start>n.start)&&(n={...r,name:e.name})}return n?a(o,n.start,n.end,n.name):null}export function setAttr(l,t,o,c){return setAttrs(l,t,{[o]:c})}export function setAttrs(l,t,o){const c={...t.attrs};for(const[e,r]of Object.entries(o))r===!1||r===null||r===void 0||r===""?delete c[e]:c[e]=r;const i=serialiseTag(t.name,c,t.selfClosing),s=typeof document<"u"?document.activeElement:null;p(l,t.openTagStart,t.openTagEnd,i),s&&s!==l&&typeof s.focus=="function"&&s.focus();const n=t.openTagStart+i.length;return a(l.value,t.openTagStart,n,t.name)}export function effectAttrKeys(l,t){const o=`${t}-`;return Object.keys(l).filter(c=>c===t||c.startsWith(o))}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{api as c}from"../api.js";import{colourToCss as F}from"/public/js/menu-decor.mjs";import{groupPluginItems as W,stripItemByUrl as D,insertFoldersBeforeSystem as _,pruneEmptySynthesisedFolders as K,MANAGE_PLUGINS_URL as X}from"./sidebar-grouping.js";function h(e){return String(e??"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}const G=[{text:"Dashboard",url:"#/",icon:"home"},{text:"Menus",url:"#/menus",icon:"menu"}];function B(e,i){return i?!e||!e.length?!1:e.includes(i)?!0:["read","create","update","delete"].some(t=>e.includes(`${i}.${t}`)):!0}function I(e,i){const t=[];for(const n of e){if(n.hidden||n.permission&&!B(i,n.permission))continue;const s=Array.isArray(n.items)&&n.items.length?I(n.items,i):[];t.push({...n,items:s})}return t}function O(e,i){if(!i||!i.length)return e;const t=(n,s)=>{for(const l of n){if((l.text||"").toLowerCase()===s.toLowerCase())return l;if(Array.isArray(l.items)){const
|
|
1
|
+
import{api as c}from"../api.js";import{colourToCss as F}from"/public/js/menu-decor.mjs";import{groupPluginItems as W,stripItemByUrl as D,insertFoldersBeforeSystem as _,pruneEmptySynthesisedFolders as K,MANAGE_PLUGINS_URL as X}from"./sidebar-grouping.js";function h(e){return String(e??"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}const G=[{text:"Dashboard",url:"#/",icon:"home"},{text:"Menus",url:"#/menus",icon:"menu"}];function B(e,i){return i?!e||!e.length?!1:e.includes(i)?!0:["read","create","update","delete"].some(t=>e.includes(`${i}.${t}`)):!0}function I(e,i){const t=[];for(const n of e){if(n.hidden||n.permission&&!B(i,n.permission))continue;const s=Array.isArray(n.items)&&n.items.length?I(n.items,i):[];t.push({...n,items:s})}return t}function O(e,i){if(!i||!i.length)return e;const t=(n,s)=>{for(const l of n){if((l.text||"").toLowerCase()===s.toLowerCase())return l;if(Array.isArray(l.items)){const a=t(l.items,s);if(a)return a}}return null};for(const n of i)if(n.parent){const s=t(e,n.parent);s?(s.items=Array.isArray(s.items)?s.items:[],s.items.push(n.item)):e.push(n.item)}else e.push(n.item);return e}async function V(e){if(!B(e,"projects"))return[];let i=[];try{i=await c.projects.list()}catch{return[]}const t={};await Promise.all(i.map(async s=>{try{const l=await c.projects.artefacts(s.slug);t[s.slug]=l}catch{t[s.slug]={}}}));const n=[{key:"pages",text:"Pages",icon:"file-text",path:"/pages"},{key:"collections",text:"Collections",icon:"database",path:"/collections"},{key:"forms",text:"Forms",icon:"layout",path:"/forms"},{key:"actions",text:"Actions",icon:"zap",path:"/actions"},{key:"menus",text:"Menus",icon:"menu",path:"/menus"},{key:"blocks",text:"Blocks",icon:"box",path:"/blocks"},{key:"components",text:"Components",icon:"component",path:"/components"},{key:"views",text:"Views",icon:"eye",path:"/views"},{key:"roles",text:"Roles",icon:"shield",path:"/roles"},{key:"users",text:"Users",icon:"users",path:"/users"},{key:"apis",text:"APIs",icon:"code",path:"/apis"}];return i.map(s=>{const a="#/projects/"+encodeURIComponent(s.slug),g=t[s.slug]||{},d=[{text:"Overview",url:a,icon:s.icon||"folder"}];for(const m of n){const y=g[m.key],p=Array.isArray(y)?y.length:0;p<=0||d.push({text:`${m.text} (${p})`,url:a+m.path,icon:m.icon})}d.push({text:"Settings",url:a+"/settings",icon:"settings"});const u=s.enabled===!1;return{text:s.name||s.slug,icon:s.icon||"folder",items:d,...u&&{colour:"neutral",badge:{text:"off"}}}})}function Y(e,i){for(const t of e)if((t.text||"").toLowerCase()==="projects"){t.items=Array.isArray(t.items)?t.items.slice():[],t.items.push(...i);return}}function J(e,i){if(!e.url||!i)return"";const t=i[e.url];return t==null||t<=0?"":`<span class="sidebar-badge">${h(String(t))}</span>`}function Q(e){const i=(e.text||"").replace(/\s*\(\d+\)\s*$/,"").toLowerCase().replace(/\s+/g,"-"),t=(e.url||"").match(/^#\/projects\/([^/]+)/);return`sidebar.expanded.${t?`project-${decodeURIComponent(t[1])}.`:""}${i}`}function z(e,i){if(e&&e.type==="separator")return'<hr class="sidebar-divider">';const t=e.icon?`<span data-icon="${h(e.icon)}"></span>`:"",n=h(e.text||""),s=e.url?h(e.url):"",l=Array.isArray(e.items)&&e.items.length>0,a=e.colour?F(e.colour):"",g=a?` style="color:${h(a)}"`:"";let d="";if(e.badge&&e.badge.text!=null&&e.badge.text!==""){const u=e.badge.variant?F(e.badge.variant):"";d=`<span class="dm-menu-badge"${u?` style="background:${h(u)};color:var(--dm-text-inverse,#fff)"`:""}>${h(String(e.badge.text))}</span>`}if(l){const u=Q(e),m=S.get(u)!==!1,y=e.items.map(p=>z(p,i)).join("");return`<details data-state-key="${h(u)}"${m?" open":""}>
|
|
2
2
|
<summary${g}>${t} <span class="sidebar-text">${n}</span>${d}</summary>
|
|
3
3
|
<div class="sidebar-children">${y}</div>
|
|
4
|
-
</details>`}return`<a href="${s}" class="sidebar-link" data-url="${s}"${g}>${t} <span class="sidebar-text">${n}</span>${J(e,i)}${d}</a>`}async function Z(){const e=p=>p.then(b=>Array.isArray(b)?b.length:Array.isArray(b?.entries)?b.entries.length:0).catch(()=>0),[i,t,n,s,l,
|
|
4
|
+
</details>`}return`<a href="${s}" class="sidebar-link" data-url="${s}"${g}>${t} <span class="sidebar-text">${n}</span>${J(e,i)}${d}</a>`}async function Z(){const e=p=>p.then(b=>Array.isArray(b)?b.length:Array.isArray(b?.entries)?b.entries.length:0).catch(()=>0),[i,t,n,s,l,a,g,d,u,m,y]=await Promise.all([e(c.pages.list()),e(c.media.list()),e(c.collections.list()),e(c.forms.list()),e(c.views.list()),e(c.actions.list()),e(c.blocks.list()),e(c.components.list()),e(c.users.list()),e(c.plugins.list()),c.system?.notifications?.unreadCount?.().then(p=>p?.count??0).catch(()=>0)??Promise.resolve(0)]);return{"#/pages":i,"#/media":t,"#/collections":n,"#/forms":s,"#/views":l,"#/actions":a,"#/blocks":g,"#/components":d,"#/users":u,"#/plugins":m,"#/system/notifications":y}}async function ee(){try{const e=await c.settings.get();return e?.adminBrand?.title||e?.title||"Admin"}catch{return"Admin"}}export async function renderAdminSidebar({mount:e,permissions:i}){const t=$(e).get(0);if(!t)return;let n,s=null,l=null,a=null;try{const r=await c.menus.get("admin-sidebar");n=Array.isArray(r?.items)?r.items:null,s=r?.variant||null,l=r?.position||null,a=r?.style||null}catch{n=null}(!n||!n.length)&&(console.warn("[admin-sidebar] No admin-sidebar menu found; using fallback tree"),n=G.slice());let g=[];try{g=await H.get("/api/sidebar/registered-items")||[]}catch{}n=D(n,X);const{toolsFolder:d,pluginsFolder:u,parented:m}=W(g);n=O(n,m),n=_(n,[d,u]);const y=await V(i);y.length&&Y(n,y),n=I(n,i),n=K(n);const[p,b]=await Promise.all([Z().catch(()=>({})),ee()]),R=s?` dm-admin-sidebar--${h(s)}`:"";function w(r,f="px"){if(r==null)return r;const o=String(r).trim();return/^\d+(\.\d+)?$/.test(o)?`${o}${f}`:o}let C="";if(a){const r=[];a.fontFamily&&r.push(`font-family: ${a.fontFamily}, sans-serif`),a.fontSize&&r.push(`font-size: ${w(a.fontSize)}`),a.fontWeight&&r.push(`font-weight: ${a.fontWeight}`),a.letterSpacing&&r.push(`letter-spacing: ${w(a.letterSpacing,"em")}`);const f=[];if(r.length&&f.push(`#admin-sidebar .dm-admin-sidebar, #admin-sidebar .dm-admin-sidebar .sidebar-link, #admin-sidebar .dm-admin-sidebar summary, #admin-sidebar .dm-admin-sidebar .sidebar-text { ${r.join("; ")} }`),a.iconSize){const o=w(a.iconSize);f.push(`#admin-sidebar .dm-admin-sidebar [data-icon], #admin-sidebar .dm-admin-sidebar [data-icon] svg { width: ${o} !important; height: ${o} !important; }`)}f.length&&(C=`<style data-admin-sidebar-style>${f.join(" ")}</style>`)}const N=`<div class="dm-admin-sidebar-header"><span data-icon="layout"></span> ${h(b)}</div>`,U=`${C}<nav class="dm-admin-sidebar${R}">${N}${n.map(r=>z(r,p)).join("")}</nav>`,j=document.createRange();j.selectNodeContents(t);const q=j.createContextualFragment(U);t.replaceChildren(q),Domma.icons.scan(t);const x=Number.parseInt(S.get("sidebar.width"),10);Number.isFinite(x)&&x>=180&&x<=480&&(t.style.width=x+"px");const v=document.createElement("div");v.className="dm-admin-sidebar-handle",v.setAttribute("aria-label","Resize sidebar"),t.appendChild(v),t.querySelectorAll("details").forEach(r=>{r.addEventListener("toggle",function(){const f=this.getAttribute("data-state-key");f&&S.set(f,this.open);const o=this.querySelector(":scope > .sidebar-children");if(o)if(this.open){const k=o.scrollHeight;o.style.maxHeight="0",requestAnimationFrame(()=>{o.style.maxHeight=k+"px",o.addEventListener("transitionend",function T(){o.style.maxHeight="none",o.removeEventListener("transitionend",T)})})}else{const k=o.scrollHeight;o.style.maxHeight=k+"px",requestAnimationFrame(()=>{o.style.maxHeight="0"})}})});let A=!1,P=0,E=0;v.addEventListener("mousedown",r=>{A=!0,P=r.clientX,E=t.getBoundingClientRect().width,document.body.style.cursor="col-resize",document.body.style.userSelect="none",r.preventDefault()}),document.addEventListener("mousemove",r=>{if(!A)return;const f=Math.max(180,Math.min(480,E+(r.clientX-P)));t.style.width=f+"px"}),document.addEventListener("mouseup",()=>{A&&(A=!1,document.body.style.cursor="",document.body.style.userSelect="",S.set("sidebar.width",parseInt(t.style.width,10)))});function L(){const r=location.hash||"#/";$(t).find(".sidebar-link").removeClass("active"),$(t).find(`.sidebar-link[data-url="${r}"]`).addClass("active")}L(),M.subscribe("router:afterChange",L)}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{openIconPicker as Q}from"./card-builder.js";import{safeSetHTML as X}from"./safe-html.js";function R(e){const t={};for(const[,i,l,o]of e.matchAll(/([\w-]+)=(?:"([^"]*)"|'([^']*)')/g))t[i]=l??o??"";const n=e.replace(/([\w-]+)=(?:"[^"]*"|'[^']*')/g,i=>" ".repeat(i.length));for(const[,i]of n.matchAll(/\b([\w-]+)\b/g))i in t||(t[i]=!0);return t}function h(e){return String(e).replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}const Z=new Set(["layout","theme","mode","id","class"]),ee=new Set(["title","date","status","icon"]),te=new Set(["slug","display","layout","theme","mode","title-field","date-field","status-field","icon-field","body-field","limit"]),P=["vertical","centred","horizontal"],M=["minimal","corporate","modern"],ne=["","planned","in-progress","completed","blocked"];let
|
|
1
|
+
import{openIconPicker as Q}from"./card-builder.js";import{safeSetHTML as X}from"./safe-html.js";function R(e){const t={};for(const[,i,l,o]of e.matchAll(/([\w-]+)=(?:"([^"]*)"|'([^']*)')/g))t[i]=l??o??"";const n=e.replace(/([\w-]+)=(?:"[^"]*"|'[^']*')/g,i=>" ".repeat(i.length));for(const[,i]of n.matchAll(/\b([\w-]+)\b/g))i in t||(t[i]=!0);return t}function h(e){return String(e).replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}const Z=new Set(["layout","theme","mode","id","class"]),ee=new Set(["title","date","status","icon"]),te=new Set(["slug","display","layout","theme","mode","title-field","date-field","status-field","icon-field","body-field","limit"]),P=["vertical","centred","horizontal"],M=["minimal","corporate","modern"],ne=["","planned","in-progress","completed","blocked"];let k=null,a=null,y=null,F=null,T=null,$=null,q=0;export const TimelineBuilder={open(e,t={}){if(k)return;y=e,F=t,a=O(),T=null;const n=parseTimelineAtCursor(e.value,e.selectionStart);n.found&&(T=n.range,a=n.state),de()},close(){z()}};function O(){const e=new Date().toISOString().slice(0,10);return{mode:"static",layout:"vertical",theme:"minimal",roadmap:!1,id:"",className:"",extras:{},events:[{title:"First Event",date:e,status:"completed",icon:"",body:"Describe this event.",extras:{}},{title:"Second Event",date:"",status:"planned",icon:"",body:"Describe this event.",extras:{}}],collection:{slug:"",titleField:"",dateField:"",statusField:"",iconField:"",bodyField:"",limit:""}}}export function parseTimelineAtCursor(e,t){let n=null;const i=/\[timeline([^\]]*)\]([\s\S]*?)\[\/timeline\]/gi;for(const s of e.matchAll(i)){const c=s.index,u=c+s[0].length;t>=c&&t<=u&&(!n||u-c<n.range.end-n.range.start)&&(n={kind:"static",range:{start:c,end:u},attrStr:s[1],body:s[2]})}const l=/\[collection([^\]]*?)\/\]/gi;for(const s of e.matchAll(l)){const c=s.index,u=c+s[0].length;if(t<c||t>u)continue;const w=R(s[1]);w.display==="timeline"&&(!n||u-c<n.range.end-n.range.start)&&(n={kind:"collection",range:{start:c,end:u},attrs:w})}if(!n)return{found:!1};if(n.kind==="static"){const s=R(n.attrStr),c={};Object.keys(s).forEach(g=>{!Z.has(g)&&s[g]!==!0&&(c[g]=s[g])});const u=[],w=/\[event([^\]]*)\]([\s\S]*?)\[\/event\]/gi;for(const g of n.body.matchAll(w)){const C=R(g[1]),p={};Object.keys(C).forEach(v=>{!ee.has(v)&&C[v]!==!0&&(p[v]=C[v])}),u.push({title:C.title||"",date:C.date||"",status:C.status||"",icon:C.icon||"",body:g[2].trim(),extras:p})}return{found:!0,range:n.range,state:{mode:"static",layout:P.includes(s.layout)?s.layout:"vertical",theme:M.includes(s.theme)?s.theme:"minimal",roadmap:s.mode==="roadmap",id:s.id||"",className:s.class||"",extras:c,events:u.length?u:O().events,collection:O().collection}}}const o=n.attrs,m={};return Object.keys(o).forEach(s=>{!te.has(s)&&o[s]!==!0&&(m[s]=o[s])}),{found:!0,range:n.range,state:{mode:"collection",layout:P.includes(o.layout)?o.layout:"vertical",theme:M.includes(o.theme)?o.theme:"minimal",roadmap:o.mode==="roadmap",id:"",className:"",extras:m,events:O().events,collection:{slug:o.slug||"",titleField:o["title-field"]||"",dateField:o["date-field"]||"",statusField:o["status-field"]||"",iconField:o["icon-field"]||"",bodyField:o["body-field"]||"",limit:o.limit||""}}}}function U(){return a.mode==="collection"?oe():ie()}function ie(){const e=a,t=[];e.layout!=="vertical"&&t.push(`layout="${h(e.layout)}"`),e.theme!=="minimal"&&t.push(`theme="${h(e.theme)}"`),e.roadmap&&t.push('mode="roadmap"'),e.id&&t.push(`id="${h(e.id)}"`),e.className&&t.push(`class="${h(e.className)}"`),Object.entries(e.extras).forEach(([l,o])=>t.push(`${l}="${h(o)}"`));const n=t.length?" "+t.join(" "):"",i=e.events.map(l=>{const o=[];return l.title&&o.push(`title="${h(l.title)}"`),l.date&&o.push(`date="${h(l.date)}"`),l.status&&o.push(`status="${h(l.status)}"`),l.icon&&o.push(`icon="${h(l.icon)}"`),Object.entries(l.extras||{}).forEach(([s,c])=>o.push(`${s}="${h(c)}"`)),`[event${o.length?" "+o.join(" "):""}]
|
|
2
2
|
${(l.body||"").trim()}
|
|
3
3
|
[/event]`}).join(`
|
|
4
4
|
`);return`[timeline${n}]
|
|
5
5
|
${i}
|
|
6
|
-
[/timeline]`}function oe(){const e=a,t=e.collection,n=[`slug="${h(t.slug)}"`,'display="timeline"'];return e.layout!=="vertical"&&n.push(`layout="${h(e.layout)}"`),e.theme!=="minimal"&&n.push(`theme="${h(e.theme)}"`),e.roadmap&&n.push('mode="roadmap"'),t.titleField&&n.push(`title-field="${h(t.titleField)}"`),t.dateField&&n.push(`date-field="${h(t.dateField)}"`),t.statusField&&n.push(`status-field="${h(t.statusField)}"`),t.iconField&&n.push(`icon-field="${h(t.iconField)}"`),t.bodyField&&n.push(`body-field="${h(t.bodyField)}"`),t.limit&&n.push(`limit="${h(t.limit)}"`),Object.entries(e.extras).forEach(([i,l])=>n.push(`${i}="${h(l)}"`)),`[collection ${n.join(" ")} /]`}function z(){$&&(clearTimeout($),$=null),F&&(F.remove(),F=null,a=null,k=null)}function le(){const e=U();if(k){const{start:t,end:n}=k;C.value=C.value.slice(0,t)+e+C.value.slice(n),C.selectionStart=C.selectionEnd=t+e.length}else{const t=C.selectionStart,n=C.selectionEnd;C.value=C.value.slice(0,t)+e+C.value.slice(n),C.selectionStart=C.selectionEnd=t+e.length}C.dispatchEvent(new Event("input",{bubbles:!0})),C.focus(),z()}function d(e,t=""){const n=document.createElement(e);return t&&(n.style.cssText=t),n}const L="padding:7px 10px;border-radius:7px;border:1px solid var(--dm-border,#334155);background:var(--dm-surface,#0f172a);color:var(--dm-text,#e2e8f0);font-size:12px;font-family:inherit;width:100%",j="font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--dm-text-muted,#475569)";function S(e,t){const n=d("div","display:flex;flex-direction:column;gap:5px"),i=d("div",j);return i.textContent=e,n.appendChild(i),n.appendChild(t),n}function H(){return d("div","height:1px;background:var(--dm-border,#334155);margin:2px 0")}function de(){F=d("div","position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:9999;padding:24px;isolation:isolate");const e=d("div","background:var(--dm-surface,#1e293b);border:1px solid var(--dm-border,#334155);border-radius:14px;width:100%;max-width:960px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 24px 64px rgba(0,0,0,.6);overflow:hidden"),t=d("div","display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--dm-border,#334155);flex-shrink:0"),n=d("span","font-weight:700;color:var(--dm-text,#f1f5f9);font-size:14px");n.textContent=k?"Edit Timeline":"Insert Timeline";const i=d("button","background:var(--dm-border,#334155);border:none;color:var(--dm-text-muted,#94a3b8);border-radius:6px;width:26px;height:26px;cursor:pointer;font-size:14px");i.textContent="\u2715",i.addEventListener("click",z),t.appendChild(n),t.appendChild(i);const l=d("div","display:grid;grid-template-columns:340px 1fr;flex:1;overflow:hidden");l.appendChild(ae()),l.appendChild(me());const o=d("div","display:flex;justify-content:flex-end;gap:10px;padding:12px 20px;border-top:1px solid var(--dm-border,#334155);flex-shrink:0"),f=d("button","padding:8px 18px;border-radius:8px;border:none;background:var(--dm-border,#334155);color:var(--dm-text-muted,#94a3b8);font-size:12px;font-weight:700;cursor:pointer");f.textContent="Cancel",f.addEventListener("click",z);const s=d("button","padding:8px 18px;border-radius:8px;border:none;background:#6366f1;color:#fff;font-size:12px;font-weight:700;cursor:pointer");s.textContent=k?"Save Timeline":"Insert Timeline",s.addEventListener("click",le),o.appendChild(f),o.appendChild(s),e.appendChild(t),e.appendChild(l),e.appendChild(o),F.appendChild(e),F.addEventListener("click",c=>{c.target===F&&z()}),document.body.appendChild(F),x()}function ae(){const e=d("div","padding:18px;border-right:1px solid var(--dm-border,#334155);display:flex;flex-direction:column;gap:14px;overflow-y:auto");e.appendChild(re()),e.appendChild(H()),e.appendChild(S("Layout",V("layout",P.map(i=>[i,G(i)])))),e.appendChild(S("Theme",V("theme",M.map(i=>[i,G(i)])))),e.appendChild(S("Mode",se())),e.appendChild(H());const t=d("div","display:flex;flex-direction:column;gap:12px");t.id="tb-static",t.appendChild(ce()),e.appendChild(t);const n=d("div","display:flex;flex-direction:column;gap:12px");return n.id="tb-collection",n.appendChild(fe()),e.appendChild(n),K(),e}function re(){const e=d("div","display:flex;gap:6px"),t=(n,i)=>{const l=d("button"),o=()=>{const f=a.mode===n;l.style.cssText=`flex:1;padding:8px 10px;border-radius:8px;border:1px solid;font-size:12px;font-weight:700;cursor:pointer;${f?"border-color:#6366f1;background:#1e1b4b;color:#a5b4fc":"border-color:var(--dm-border,#334155);background:var(--dm-surface,#0f172a);color:var(--dm-text-muted,#94a3b8)"}`};return l.type="button",l.textContent=i,o(),l.addEventListener("click",()=>{a.mode=n,e.querySelectorAll("button").forEach(f=>f._paint&&f._paint()),K(),x()}),l._paint=o,l};return e.appendChild(t("static","Static")),e.appendChild(t("collection","From Collection")),e}function K(){const e=document.getElementById("tb-static"),t=document.getElementById("tb-collection");e&&(e.style.display=a.mode==="static"?"":"none"),t&&(t.style.display=a.mode==="collection"?"":"none")}function V(e,t){const n=d("select",L+";cursor:pointer");return t.forEach(([i,l])=>{const o=document.createElement("option");o.value=i,o.textContent=l,i===a[e]&&(o.selected=!0),n.appendChild(o)}),n.addEventListener("change",()=>{a[e]=n.value,x()}),n}function se(){const e=d("label","display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:12px;color:var(--dm-text,#e2e8f0)"),t=document.createElement("input");return t.type="checkbox",t.checked=!!a.roadmap,t.addEventListener("change",()=>{a.roadmap=t.checked,x()}),e.appendChild(t),e.appendChild(document.createTextNode("Roadmap mode")),e}function ce(){const e=d("div","display:flex;flex-direction:column;gap:8px"),t=d("div","display:flex;align-items:center;justify-content:space-between"),n=d("div",j);n.textContent="Events";const i=d("button","padding:4px 10px;border-radius:6px;border:1px dashed var(--dm-border,#334155);background:transparent;color:var(--dm-text-muted,#94a3b8);font-size:11px;cursor:pointer");i.type="button",i.textContent="+ Add event",i.addEventListener("click",()=>{a.events.push({title:"New Event",date:"",status:"",icon:"",body:"",extras:{}}),N(),x()}),t.appendChild(n),t.appendChild(i),e.appendChild(t);const l=d("div","display:flex;flex-direction:column;gap:8px");return l.id="tb-events",e.appendChild(l),N(l),e}function N(e){const t=e||document.getElementById("tb-events");if(t){for(;t.firstChild;)t.removeChild(t.firstChild);a.events.forEach((n,i)=>t.appendChild(pe(n,i)))}}function pe(e,t){const n=d("div","border:1px solid var(--dm-border,#334155);border-radius:8px;padding:10px;background:var(--dm-surface-subtle,#0b1120);display:flex;flex-direction:column;gap:8px");n.draggable=!0,n.dataset.idx=String(t);const i=d("div","display:flex;align-items:center;gap:6px"),l=d("span","cursor:grab;color:var(--dm-text-muted,#475569);font-size:14px;user-select:none;padding:0 4px");l.textContent="\u2261",l.title="Drag to reorder",i.appendChild(l);const o=d("div","flex:1;font-size:12px;color:var(--dm-text,#e2e8f0);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis");o.textContent=e.title||"(untitled event)",i.appendChild(o);const f=(r,m,b,E)=>{const _=d("button",`padding:2px 6px;border-radius:5px;border:1px solid var(--dm-border,#334155);background:transparent;color:var(--dm-text-muted,#94a3b8);font-size:11px;cursor:${E?"not-allowed":"pointer"};opacity:${E?"0.4":"1"}`);return _.type="button",_.title=m,_.textContent=r,E||_.addEventListener("click",b),_};i.appendChild(f("\u2191","Move up",()=>Y(t,-1),t===0)),i.appendChild(f("\u2193","Move down",()=>Y(t,1),t===a.events.length-1)),i.appendChild(f("\u2715","Delete",()=>ue(t),a.events.length<=1)),n.appendChild(i);const s=W(e.title,"Event title",r=>{e.title=r,o.textContent=r||"(untitled event)",x()});n.appendChild(A("Title",s));const c=d("div","display:grid;grid-template-columns:1fr 1fr;gap:6px"),u=document.createElement("input");u.type="date",u.value=e.date||"",u.style.cssText=L,u.addEventListener("input",()=>{e.date=u.value,x()}),c.appendChild(A("Date",u));const w=document.createElement("select");w.style.cssText=L+";cursor:pointer",ne.forEach(r=>{const m=document.createElement("option");m.value=r,m.textContent=r===""?"\u2014 none \u2014":G(r),r===e.status&&(m.selected=!0),w.appendChild(m)}),w.addEventListener("change",()=>{e.status=w.value,x()}),c.appendChild(A("Status",w)),n.appendChild(c);const g=d("div","display:flex;gap:6px"),y=W(e.icon,"e.g. rocket",r=>{e.icon=r,x()});y.style.flex="1";const p=d("button","padding:0 10px;background:var(--dm-border,#334155);border:none;color:var(--dm-text-muted,#94a3b8);border-radius:7px;font-size:12px;cursor:pointer;flex-shrink:0");p.type="button",p.title="Browse icons",p.textContent="\u2605",p.addEventListener("click",()=>Q(r=>{e.icon=r,y.value=r,x()})),g.appendChild(y),g.appendChild(p),n.appendChild(A("Icon",g));const v=document.createElement("textarea");return v.value=e.body||"",v.rows=2,v.style.cssText=L+";resize:vertical;min-height:48px;line-height:1.5",v.addEventListener("input",()=>{e.body=v.value,x()}),n.appendChild(A("Body (Markdown)",v)),n.addEventListener("dragstart",r=>{r.dataTransfer.effectAllowed="move",r.dataTransfer.setData("text/plain",String(t)),n.style.opacity="0.5"}),n.addEventListener("dragend",()=>{n.style.opacity=""}),n.addEventListener("dragover",r=>{r.preventDefault(),r.dataTransfer.dropEffect="move",n.style.borderColor="#6366f1"}),n.addEventListener("dragleave",()=>{n.style.borderColor="var(--dm-border,#334155)"}),n.addEventListener("drop",r=>{r.preventDefault(),n.style.borderColor="var(--dm-border,#334155)";const m=parseInt(r.dataTransfer.getData("text/plain"),10);if(Number.isNaN(m)||m===t)return;const[b]=a.events.splice(m,1);a.events.splice(t,0,b),N(),x()}),n}function Y(e,t){const n=e+t;if(n<0||n>=a.events.length)return;const[i]=a.events.splice(e,1);a.events.splice(n,0,i),N(),x()}function ue(e){a.events.length<=1||(a.events.splice(e,1),N(),x())}function W(e,t,n){const i=document.createElement("input");return i.type="text",i.value=e||"",i.placeholder=t||"",i.style.cssText=L,i.addEventListener("input",()=>n(i.value)),i}function A(e,t){const n=d("div","display:flex;flex-direction:column;gap:4px"),i=d("div","font-size:10px;font-weight:600;color:var(--dm-text-muted,#64748b);letter-spacing:.04em");return i.textContent=e,n.appendChild(i),n.appendChild(t),n}function fe(){const e=d("div","display:flex;flex-direction:column;gap:10px"),t=d("select",L+";cursor:pointer"),n=document.createElement("option");n.value="",n.textContent="Loading collections\u2026",t.appendChild(n),e.appendChild(S("Collection",t));const i=B("titleField"),l=B("dateField"),o=B("statusField"),f=B("iconField"),s=B("bodyField");e.appendChild(S("Title field",i));const c=d("div","display:grid;grid-template-columns:1fr 1fr;gap:8px");c.appendChild(S("Date field",l)),c.appendChild(S("Status field",o)),e.appendChild(c),e.appendChild(S("Icon field",f)),e.appendChild(S("Body field",s));const u=W(a.collection.limit,"All",p=>{a.collection.limit=p,x()});u.type="number",u.min="1",e.appendChild(S("Limit (optional)",u));const w=d("div","font-size:11px;color:var(--dm-text-muted,#64748b);line-height:1.4");w.textContent="Picks entries in their default collection order. Set date, status, and icon fields to drive visual cues on the page.",e.appendChild(w);const g=p=>{[i,l,o,f,s].forEach(b=>{for(;b.firstChild;)b.removeChild(b.firstChild);const E=document.createElement("option");E.value="",E.textContent="\u2014 none \u2014",b.appendChild(E),p.forEach(_=>{const D=document.createElement("option");D.value=_.name,D.textContent=_.label||_.name,b.appendChild(D)})});const r=new Set(p.map(b=>b.name)),m=(b,E)=>{a.collection[b]&&r.has(a.collection[b])||(a.collection[b]=r.has(E)?E:"")};m("titleField","title"),m("dateField","date"),m("statusField","status"),m("iconField","icon"),m("bodyField","description"),i.value=a.collection.titleField,l.value=a.collection.dateField,o.value=a.collection.statusField,f.value=a.collection.iconField,s.value=a.collection.bodyField},y=async p=>{if(!p){g([]);return}try{const v=T.onGetCollection?await T.onGetCollection(p):null,r=v&&v.fields||[];g(r)}catch{g([])}};return t.addEventListener("change",()=>{a.collection.slug=t.value,y(t.value).then(x)}),(async()=>{let p=[];try{p=T.onListCollections?await T.onListCollections():[]}catch{p=[]}for(;t.firstChild;)t.removeChild(t.firstChild);if(!p.length){const r=document.createElement("option");r.value="",r.textContent="No collections available",t.appendChild(r),g([]);return}p.forEach(r=>{const m=document.createElement("option");m.value=r.slug,m.textContent=r.title||r.slug,t.appendChild(m)});const v=a.collection.slug;v&&p.some(r=>r.slug===v)?t.value=v:(a.collection.slug=p[0].slug,t.value=p[0].slug),await y(t.value),x()})(),e}function B(e){const t=d("select",L+";cursor:pointer"),n=document.createElement("option");return n.value="",n.textContent="\u2014 none \u2014",t.appendChild(n),t.addEventListener("change",()=>{a.collection[e]=t.value,x()}),t}function me(){const e=d("div","padding:20px;background:var(--dm-surface,#0f172a);display:flex;flex-direction:column;gap:14px;overflow-y:auto"),t=d("div",j);t.textContent="Live Preview";const n=d("div","flex:1;min-height:160px;background:var(--dm-surface-subtle,#fff);border-radius:10px;padding:16px;color:#0f172a");n.id="tb-preview-area";const i=d("div",j+";margin-bottom:4px");i.textContent="Shortcode";const l=d("pre","background:var(--dm-surface-subtle,#1e293b);border:1px solid var(--dm-border,#334155);border-radius:8px;padding:10px 14px;font-family:monospace;font-size:11px;color:var(--dm-primary,#a5b4fc);line-height:1.6;white-space:pre-wrap;word-break:break-word;max-height:160px;overflow:auto;margin:0");return l.id="tb-snippet",e.appendChild(t),e.appendChild(n),e.appendChild(i),e.appendChild(l),e}function x(){const e=document.getElementById("tb-snippet");e&&(e.textContent=U()),he()}function he(){$&&clearTimeout($),$=setTimeout(ve,300)}async function ve(){const e=document.getElementById("tb-preview-area");if(!e)return;const t=U(),n=++q;xe(e);try{const i=T.onPreview?await T.onPreview(t):null;if(n!==q)return;if(!i||typeof i.html!="string"){J(e);return}X(e,i.html),typeof I<"u"&&I.scan&&I.scan(e)}catch{if(n!==q)return;J(e)}}function xe(e){if(!e.dataset.loaded){for(;e.firstChild;)e.removeChild(e.firstChild);const t=d("div","color:var(--dm-text-muted,#94a3b8);font-size:12px");t.textContent="Rendering preview\u2026",e.appendChild(t),e.dataset.loaded="1"}}function J(e){for(;e.firstChild;)e.removeChild(e.firstChild);const t=d("div","color:var(--dm-text-muted,#94a3b8);font-size:12px;font-style:italic");t.textContent="Preview unavailable",e.appendChild(t)}function G(e){return e.charAt(0).toUpperCase()+e.slice(1)}
|
|
6
|
+
[/timeline]`}function oe(){const e=a,t=e.collection,n=[`slug="${h(t.slug)}"`,'display="timeline"'];return e.layout!=="vertical"&&n.push(`layout="${h(e.layout)}"`),e.theme!=="minimal"&&n.push(`theme="${h(e.theme)}"`),e.roadmap&&n.push('mode="roadmap"'),t.titleField&&n.push(`title-field="${h(t.titleField)}"`),t.dateField&&n.push(`date-field="${h(t.dateField)}"`),t.statusField&&n.push(`status-field="${h(t.statusField)}"`),t.iconField&&n.push(`icon-field="${h(t.iconField)}"`),t.bodyField&&n.push(`body-field="${h(t.bodyField)}"`),t.limit&&n.push(`limit="${h(t.limit)}"`),Object.entries(e.extras).forEach(([i,l])=>n.push(`${i}="${h(l)}"`)),`[collection ${n.join(" ")} /]`}function z(){$&&(clearTimeout($),$=null),k&&(k.remove(),k=null,a=null,T=null)}function le(){const e=U();if(T){const{start:t,end:n}=T;y.value=y.value.slice(0,t)+e+y.value.slice(n),y.selectionStart=y.selectionEnd=t+e.length}else{const t=y.selectionStart,n=y.selectionEnd;y.value=y.value.slice(0,t)+e+y.value.slice(n),y.selectionStart=y.selectionEnd=t+e.length}y.dispatchEvent(new Event("input",{bubbles:!0})),y.focus(),z()}function d(e,t=""){const n=document.createElement(e);return t&&(n.style.cssText=t),n}const L="padding:7px 10px;border-radius:7px;border:1px solid var(--dm-border,#334155);background:var(--dm-surface,#0f172a);color:var(--dm-text,#e2e8f0);font-size:12px;font-family:inherit;width:100%",j="font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--dm-text-muted,#475569)";function S(e,t){const n=d("div","display:flex;flex-direction:column;gap:5px"),i=d("div",j);return i.textContent=e,n.appendChild(i),n.appendChild(t),n}function H(){return d("div","height:1px;background:var(--dm-border,#334155);margin:2px 0")}function de(){k=d("div","position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;z-index:9999;padding:24px;isolation:isolate");const e=d("div","background:var(--dm-surface,#1e293b);border:1px solid var(--dm-border,#334155);border-radius:14px;width:100%;max-width:960px;max-height:90vh;display:flex;flex-direction:column;box-shadow:var(--dm-shadow-lg);overflow:hidden"),t=d("div","display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--dm-border,#334155);flex-shrink:0"),n=d("span","font-weight:700;color:var(--dm-text,#f1f5f9);font-size:14px");n.textContent=T?"Edit Timeline":"Insert Timeline";const i=d("button","background:var(--dm-border,#334155);border:none;color:var(--dm-text-muted,#94a3b8);border-radius:6px;width:26px;height:26px;cursor:pointer;font-size:14px");i.textContent="\u2715",i.addEventListener("click",z),t.appendChild(n),t.appendChild(i);const l=d("div","display:grid;grid-template-columns:340px 1fr;flex:1;overflow:hidden");l.appendChild(ae()),l.appendChild(fe());const o=d("div","display:flex;justify-content:flex-end;gap:10px;padding:12px 20px;border-top:1px solid var(--dm-border,#334155);flex-shrink:0"),m=d("button","padding:8px 18px;border-radius:8px;border:none;background:var(--dm-border,#334155);color:var(--dm-text-muted,#94a3b8);font-size:12px;font-weight:700;cursor:pointer");m.textContent="Cancel",m.addEventListener("click",z);const s=d("button","padding:8px 18px;border-radius:8px;border:none;background:var(--dm-primary,#6366f1);color:var(--dm-primary-text,#fff);font-size:12px;font-weight:700;cursor:pointer");s.textContent=T?"Save Timeline":"Insert Timeline",s.addEventListener("click",le),o.appendChild(m),o.appendChild(s),e.appendChild(t),e.appendChild(l),e.appendChild(o),k.appendChild(e),k.addEventListener("click",c=>{c.target===k&&z()}),document.body.appendChild(k),x()}function ae(){const e=d("div","padding:18px;border-right:1px solid var(--dm-border,#334155);display:flex;flex-direction:column;gap:14px;overflow-y:auto");e.appendChild(re()),e.appendChild(H()),e.appendChild(S("Layout",V("layout",P.map(i=>[i,G(i)])))),e.appendChild(S("Theme",V("theme",M.map(i=>[i,G(i)])))),e.appendChild(S("Mode",se())),e.appendChild(H());const t=d("div","display:flex;flex-direction:column;gap:12px");t.id="tb-static",t.appendChild(ce()),e.appendChild(t);const n=d("div","display:flex;flex-direction:column;gap:12px");return n.id="tb-collection",n.appendChild(me()),e.appendChild(n),K(),e}function re(){const e=d("div","display:flex;gap:6px"),t=(n,i)=>{const l=d("button"),o=()=>{const m=a.mode===n;l.style.cssText=`flex:1;padding:8px 10px;border-radius:8px;border:1px solid;font-size:12px;font-weight:700;cursor:pointer;${m?"border-color:var(--dm-primary,#6366f1);background:color-mix(in srgb, var(--dm-primary,#6366f1) 15%, transparent);color:var(--dm-primary,#a5b4fc)":"border-color:var(--dm-border,#334155);background:var(--dm-surface,#0f172a);color:var(--dm-text-muted,#94a3b8)"}`};return l.type="button",l.textContent=i,o(),l.addEventListener("click",()=>{a.mode=n,e.querySelectorAll("button").forEach(m=>m._paint&&m._paint()),K(),x()}),l._paint=o,l};return e.appendChild(t("static","Static")),e.appendChild(t("collection","From Collection")),e}function K(){const e=document.getElementById("tb-static"),t=document.getElementById("tb-collection");e&&(e.style.display=a.mode==="static"?"":"none"),t&&(t.style.display=a.mode==="collection"?"":"none")}function V(e,t){const n=d("select",L+";cursor:pointer");return t.forEach(([i,l])=>{const o=document.createElement("option");o.value=i,o.textContent=l,i===a[e]&&(o.selected=!0),n.appendChild(o)}),n.addEventListener("change",()=>{a[e]=n.value,x()}),n}function se(){const e=d("label","display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:12px;color:var(--dm-text,#e2e8f0)"),t=document.createElement("input");return t.type="checkbox",t.checked=!!a.roadmap,t.addEventListener("change",()=>{a.roadmap=t.checked,x()}),e.appendChild(t),e.appendChild(document.createTextNode("Roadmap mode")),e}function ce(){const e=d("div","display:flex;flex-direction:column;gap:8px"),t=d("div","display:flex;align-items:center;justify-content:space-between"),n=d("div",j);n.textContent="Events";const i=d("button","padding:4px 10px;border-radius:6px;border:1px dashed var(--dm-border,#334155);background:transparent;color:var(--dm-text-muted,#94a3b8);font-size:11px;cursor:pointer");i.type="button",i.textContent="+ Add event",i.addEventListener("click",()=>{a.events.push({title:"New Event",date:"",status:"",icon:"",body:"",extras:{}}),N(),x()}),t.appendChild(n),t.appendChild(i),e.appendChild(t);const l=d("div","display:flex;flex-direction:column;gap:8px");return l.id="tb-events",e.appendChild(l),N(l),e}function N(e){const t=e||document.getElementById("tb-events");if(t){for(;t.firstChild;)t.removeChild(t.firstChild);a.events.forEach((n,i)=>t.appendChild(pe(n,i)))}}function pe(e,t){const n=d("div","border:1px solid var(--dm-border,#334155);border-radius:8px;padding:10px;background:var(--dm-background-alt,#0b1120);display:flex;flex-direction:column;gap:8px");n.draggable=!0,n.dataset.idx=String(t);const i=d("div","display:flex;align-items:center;gap:6px"),l=d("span","cursor:grab;color:var(--dm-text-muted,#475569);font-size:14px;user-select:none;padding:0 4px");l.textContent="\u2261",l.title="Drag to reorder",i.appendChild(l);const o=d("div","flex:1;font-size:12px;color:var(--dm-text,#e2e8f0);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis");o.textContent=e.title||"(untitled event)",i.appendChild(o);const m=(r,f,b,E)=>{const _=d("button",`padding:2px 6px;border-radius:5px;border:1px solid var(--dm-border,#334155);background:transparent;color:var(--dm-text-muted,#94a3b8);font-size:11px;cursor:${E?"not-allowed":"pointer"};opacity:${E?"0.4":"1"}`);return _.type="button",_.title=f,_.textContent=r,E||_.addEventListener("click",b),_};i.appendChild(m("\u2191","Move up",()=>Y(t,-1),t===0)),i.appendChild(m("\u2193","Move down",()=>Y(t,1),t===a.events.length-1)),i.appendChild(m("\u2715","Delete",()=>ue(t),a.events.length<=1)),n.appendChild(i);const s=W(e.title,"Event title",r=>{e.title=r,o.textContent=r||"(untitled event)",x()});n.appendChild(A("Title",s));const c=d("div","display:grid;grid-template-columns:1fr 1fr;gap:6px"),u=document.createElement("input");u.type="date",u.value=e.date||"",u.style.cssText=L,u.addEventListener("input",()=>{e.date=u.value,x()}),c.appendChild(A("Date",u));const w=document.createElement("select");w.style.cssText=L+";cursor:pointer",ne.forEach(r=>{const f=document.createElement("option");f.value=r,f.textContent=r===""?"\u2014 none \u2014":G(r),r===e.status&&(f.selected=!0),w.appendChild(f)}),w.addEventListener("change",()=>{e.status=w.value,x()}),c.appendChild(A("Status",w)),n.appendChild(c);const g=d("div","display:flex;gap:6px"),C=W(e.icon,"e.g. rocket",r=>{e.icon=r,x()});C.style.flex="1";const p=d("button","padding:0 10px;background:var(--dm-border,#334155);border:none;color:var(--dm-text-muted,#94a3b8);border-radius:7px;font-size:12px;cursor:pointer;flex-shrink:0");p.type="button",p.title="Browse icons",p.textContent="\u2605",p.addEventListener("click",()=>Q(r=>{e.icon=r,C.value=r,x()})),g.appendChild(C),g.appendChild(p),n.appendChild(A("Icon",g));const v=document.createElement("textarea");return v.value=e.body||"",v.rows=2,v.style.cssText=L+";resize:vertical;min-height:48px;line-height:1.5",v.addEventListener("input",()=>{e.body=v.value,x()}),n.appendChild(A("Body (Markdown)",v)),n.addEventListener("dragstart",r=>{r.dataTransfer.effectAllowed="move",r.dataTransfer.setData("text/plain",String(t)),n.style.opacity="0.5"}),n.addEventListener("dragend",()=>{n.style.opacity=""}),n.addEventListener("dragover",r=>{r.preventDefault(),r.dataTransfer.dropEffect="move",n.style.borderColor="var(--dm-primary,#6366f1)"}),n.addEventListener("dragleave",()=>{n.style.borderColor="var(--dm-border,#334155)"}),n.addEventListener("drop",r=>{r.preventDefault(),n.style.borderColor="var(--dm-border,#334155)";const f=parseInt(r.dataTransfer.getData("text/plain"),10);if(Number.isNaN(f)||f===t)return;const[b]=a.events.splice(f,1);a.events.splice(t,0,b),N(),x()}),n}function Y(e,t){const n=e+t;if(n<0||n>=a.events.length)return;const[i]=a.events.splice(e,1);a.events.splice(n,0,i),N(),x()}function ue(e){a.events.length<=1||(a.events.splice(e,1),N(),x())}function W(e,t,n){const i=document.createElement("input");return i.type="text",i.value=e||"",i.placeholder=t||"",i.style.cssText=L,i.addEventListener("input",()=>n(i.value)),i}function A(e,t){const n=d("div","display:flex;flex-direction:column;gap:4px"),i=d("div","font-size:10px;font-weight:600;color:var(--dm-text-muted,#64748b);letter-spacing:.04em");return i.textContent=e,n.appendChild(i),n.appendChild(t),n}function me(){const e=d("div","display:flex;flex-direction:column;gap:10px"),t=d("select",L+";cursor:pointer"),n=document.createElement("option");n.value="",n.textContent="Loading collections\u2026",t.appendChild(n),e.appendChild(S("Collection",t));const i=B("titleField"),l=B("dateField"),o=B("statusField"),m=B("iconField"),s=B("bodyField");e.appendChild(S("Title field",i));const c=d("div","display:grid;grid-template-columns:1fr 1fr;gap:8px");c.appendChild(S("Date field",l)),c.appendChild(S("Status field",o)),e.appendChild(c),e.appendChild(S("Icon field",m)),e.appendChild(S("Body field",s));const u=W(a.collection.limit,"All",p=>{a.collection.limit=p,x()});u.type="number",u.min="1",e.appendChild(S("Limit (optional)",u));const w=d("div","font-size:11px;color:var(--dm-text-muted,#64748b);line-height:1.4");w.textContent="Picks entries in their default collection order. Set date, status, and icon fields to drive visual cues on the page.",e.appendChild(w);const g=p=>{[i,l,o,m,s].forEach(b=>{for(;b.firstChild;)b.removeChild(b.firstChild);const E=document.createElement("option");E.value="",E.textContent="\u2014 none \u2014",b.appendChild(E),p.forEach(_=>{const D=document.createElement("option");D.value=_.name,D.textContent=_.label||_.name,b.appendChild(D)})});const r=new Set(p.map(b=>b.name)),f=(b,E)=>{a.collection[b]&&r.has(a.collection[b])||(a.collection[b]=r.has(E)?E:"")};f("titleField","title"),f("dateField","date"),f("statusField","status"),f("iconField","icon"),f("bodyField","description"),i.value=a.collection.titleField,l.value=a.collection.dateField,o.value=a.collection.statusField,m.value=a.collection.iconField,s.value=a.collection.bodyField},C=async p=>{if(!p){g([]);return}try{const v=F.onGetCollection?await F.onGetCollection(p):null,r=v&&v.fields||[];g(r)}catch{g([])}};return t.addEventListener("change",()=>{a.collection.slug=t.value,C(t.value).then(x)}),(async()=>{let p=[];try{p=F.onListCollections?await F.onListCollections():[]}catch{p=[]}for(;t.firstChild;)t.removeChild(t.firstChild);if(!p.length){const r=document.createElement("option");r.value="",r.textContent="No collections available",t.appendChild(r),g([]);return}p.forEach(r=>{const f=document.createElement("option");f.value=r.slug,f.textContent=r.title||r.slug,t.appendChild(f)});const v=a.collection.slug;v&&p.some(r=>r.slug===v)?t.value=v:(a.collection.slug=p[0].slug,t.value=p[0].slug),await C(t.value),x()})(),e}function B(e){const t=d("select",L+";cursor:pointer"),n=document.createElement("option");return n.value="",n.textContent="\u2014 none \u2014",t.appendChild(n),t.addEventListener("change",()=>{a.collection[e]=t.value,x()}),t}function fe(){const e=d("div","padding:20px;background:var(--dm-surface,#0f172a);display:flex;flex-direction:column;gap:14px;overflow-y:auto"),t=d("div",j);t.textContent="Live Preview";const n=d("div","flex:1;min-height:160px;background:var(--dm-background-alt,#fff);border-radius:10px;padding:16px;color:var(--dm-text,#0f172a)");n.id="tb-preview-area";const i=d("div",j+";margin-bottom:4px");i.textContent="Shortcode";const l=d("pre","background:var(--dm-background-alt,#1e293b);border:1px solid var(--dm-border,#334155);border-radius:8px;padding:10px 14px;font-family:monospace;font-size:11px;color:var(--dm-primary,#a5b4fc);line-height:1.6;white-space:pre-wrap;word-break:break-word;max-height:160px;overflow:auto;margin:0");return l.id="tb-snippet",e.appendChild(t),e.appendChild(n),e.appendChild(i),e.appendChild(l),e}function x(){const e=document.getElementById("tb-snippet");e&&(e.textContent=U()),he()}function he(){$&&clearTimeout($),$=setTimeout(ve,300)}async function ve(){const e=document.getElementById("tb-preview-area");if(!e)return;const t=U(),n=++q;xe(e);try{const i=F.onPreview?await F.onPreview(t):null;if(n!==q)return;if(!i||typeof i.html!="string"){J(e);return}X(e,i.html),typeof I<"u"&&I.scan&&I.scan(e)}catch{if(n!==q)return;J(e)}}function xe(e){if(!e.dataset.loaded){for(;e.firstChild;)e.removeChild(e.firstChild);const t=d("div","color:var(--dm-text-muted,#94a3b8);font-size:12px");t.textContent="Rendering preview\u2026",e.appendChild(t),e.dataset.loaded="1"}}function J(e){for(;e.firstChild;)e.removeChild(e.firstChild);const t=d("div","color:var(--dm-text-muted,#94a3b8);font-size:12px;font-style:italic");t.textContent="Preview unavailable",e.appendChild(t)}function G(e){return e.charAt(0).toUpperCase()+e.slice(1)}
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
|
|
145
145
|
<div class="ep-results-col">
|
|
146
146
|
<div class="card" id="tryit-results-placeholder">
|
|
147
|
-
<div class="card-body" style="text-align:center;color:var(--
|
|
147
|
+
<div class="card-body" style="text-align:center;color:var(--dm-text-muted,#8a94a6);padding:2rem 1rem;">
|
|
148
148
|
<div data-icon="zap" style="font-size:1.5rem;opacity:.5;"></div>
|
|
149
149
|
<p style="margin:.5rem 0 0;font-size:.9rem;">Send a request to see the response here.</p>
|
|
150
150
|
</div>
|
|
@@ -158,7 +158,7 @@
|
|
|
158
158
|
</div>
|
|
159
159
|
</div>
|
|
160
160
|
<div class="card-body" style="padding-top:.5rem;">
|
|
161
|
-
<div id="tryit-json" style="max-height:460px;overflow:auto;font-family:var(--font-mono,ui-monospace,monospace);font-size:.8rem;line-height:1.5;padding:.6rem;"></div>
|
|
161
|
+
<div id="tryit-json" style="max-height:460px;overflow:auto;font-family:var(--dm-font-mono,ui-monospace,monospace);font-size:.8rem;line-height:1.5;padding:.6rem;"></div>
|
|
162
162
|
<pre id="tryit-body" style="display:none;max-height:460px;overflow:auto;font-size:.8rem;padding:.6rem;margin:0;white-space:pre-wrap;word-break:break-word;"></pre>
|
|
163
163
|
</div>
|
|
164
164
|
</div>
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
<div id="block-sample-data" style="
|
|
111
111
|
border-bottom:1px solid var(--dm-border,rgba(255,255,255,.08));
|
|
112
112
|
padding:.6rem .75rem;
|
|
113
|
-
background:var(--dm-
|
|
113
|
+
background:var(--dm-background-alt,rgba(0,0,0,.1));
|
|
114
114
|
flex-shrink:0;">
|
|
115
115
|
<p class="text-muted" style="font-size:.8rem;margin:0;">
|
|
116
116
|
Write some template HTML to populate sample data fields.
|
|
@@ -56,11 +56,11 @@
|
|
|
56
56
|
display:flex;align-items:center;justify-content:space-between;gap:.75rem;
|
|
57
57
|
padding:.45rem .75rem;
|
|
58
58
|
border-bottom:1px solid var(--dm-border,rgba(255,255,255,.08));
|
|
59
|
-
background:var(--dm-
|
|
59
|
+
background:var(--dm-background-alt,rgba(0,0,0,.05));
|
|
60
60
|
font-size:.78rem;">
|
|
61
61
|
<div>
|
|
62
62
|
<span id="component-compile-indicator"
|
|
63
|
-
style="display:inline-block;min-width:.7rem;height:.7rem;border-radius:50%;background
|
|
63
|
+
style="display:inline-block;min-width:.7rem;height:.7rem;border-radius:50%;background:var(--dm-text-muted);margin-right:.4rem;"></span>
|
|
64
64
|
<span id="component-compile-status">Compiling…</span>
|
|
65
65
|
</div>
|
|
66
66
|
<span id="component-cursor-pos" style="display:none;"></span>
|
|
@@ -68,8 +68,8 @@
|
|
|
68
68
|
<pre id="component-compile-errors" hidden style="
|
|
69
69
|
margin:0;
|
|
70
70
|
padding:.75rem;
|
|
71
|
-
background:
|
|
72
|
-
color
|
|
71
|
+
background:color-mix(in srgb, var(--dm-danger) 8%, transparent);
|
|
72
|
+
color:var(--dm-danger);
|
|
73
73
|
border-bottom:1px solid var(--dm-border,rgba(255,255,255,.08));
|
|
74
74
|
white-space:pre-wrap;
|
|
75
75
|
font-size:.78rem;
|
|
@@ -16,28 +16,28 @@
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
.method-get {
|
|
19
|
-
background:
|
|
20
|
-
color:
|
|
19
|
+
background: color-mix(in srgb, var(--dm-success) 15%, transparent);
|
|
20
|
+
color: var(--dm-success);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
.method-post {
|
|
24
|
-
background:
|
|
25
|
-
color:
|
|
24
|
+
background: color-mix(in srgb, var(--dm-primary) 15%, transparent);
|
|
25
|
+
color: var(--dm-primary);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
.method-put {
|
|
29
|
-
background:
|
|
30
|
-
color:
|
|
29
|
+
background: color-mix(in srgb, var(--dm-warning) 15%, transparent);
|
|
30
|
+
color: var(--dm-warning-dark);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
.method-patch {
|
|
34
|
-
background:
|
|
35
|
-
color:
|
|
34
|
+
background: color-mix(in srgb, var(--dm-info) 15%, transparent);
|
|
35
|
+
color: var(--dm-info);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
.method-delete {
|
|
39
|
-
background:
|
|
40
|
-
color:
|
|
39
|
+
background: color-mix(in srgb, var(--dm-danger) 15%, transparent);
|
|
40
|
+
color: var(--dm-danger);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
.endpoint-path {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
|
|
48
48
|
.auth-note {
|
|
49
49
|
font-size: 12px;
|
|
50
|
-
color: var(--dm-
|
|
50
|
+
color: var(--dm-text-muted, #6b7280);
|
|
51
51
|
margin: 4px 0 12px;
|
|
52
52
|
}
|
|
53
53
|
|
|
@@ -16,28 +16,28 @@
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
.method-get {
|
|
19
|
-
background:
|
|
20
|
-
color:
|
|
19
|
+
background: color-mix(in srgb, var(--dm-success) 15%, transparent);
|
|
20
|
+
color: var(--dm-success);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
.method-post {
|
|
24
|
-
background:
|
|
25
|
-
color:
|
|
24
|
+
background: color-mix(in srgb, var(--dm-primary) 15%, transparent);
|
|
25
|
+
color: var(--dm-primary);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
.method-put {
|
|
29
|
-
background:
|
|
30
|
-
color:
|
|
29
|
+
background: color-mix(in srgb, var(--dm-warning) 15%, transparent);
|
|
30
|
+
color: var(--dm-warning-dark);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
.method-patch {
|
|
34
|
-
background:
|
|
35
|
-
color:
|
|
34
|
+
background: color-mix(in srgb, var(--dm-info) 15%, transparent);
|
|
35
|
+
color: var(--dm-info);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
.method-delete {
|
|
39
|
-
background:
|
|
40
|
-
color:
|
|
39
|
+
background: color-mix(in srgb, var(--dm-danger) 15%, transparent);
|
|
40
|
+
color: var(--dm-danger);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
.endpoint-path {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
|
|
48
48
|
.auth-note {
|
|
49
49
|
font-size: 12px;
|
|
50
|
-
color: var(--dm-
|
|
50
|
+
color: var(--dm-text-muted, #6b7280);
|
|
51
51
|
margin: 4px 0 12px;
|
|
52
52
|
}
|
|
53
53
|
|
|
@@ -16,28 +16,28 @@
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
.method-get {
|
|
19
|
-
background:
|
|
20
|
-
color:
|
|
19
|
+
background: color-mix(in srgb, var(--dm-success) 15%, transparent);
|
|
20
|
+
color: var(--dm-success);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
.method-post {
|
|
24
|
-
background:
|
|
25
|
-
color:
|
|
24
|
+
background: color-mix(in srgb, var(--dm-primary) 15%, transparent);
|
|
25
|
+
color: var(--dm-primary);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
.method-put {
|
|
29
|
-
background:
|
|
30
|
-
color:
|
|
29
|
+
background: color-mix(in srgb, var(--dm-warning) 15%, transparent);
|
|
30
|
+
color: var(--dm-warning-dark);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
.method-patch {
|
|
34
|
-
background:
|
|
35
|
-
color:
|
|
34
|
+
background: color-mix(in srgb, var(--dm-info) 15%, transparent);
|
|
35
|
+
color: var(--dm-info);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
.method-delete {
|
|
39
|
-
background:
|
|
40
|
-
color:
|
|
39
|
+
background: color-mix(in srgb, var(--dm-danger) 15%, transparent);
|
|
40
|
+
color: var(--dm-danger);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
.endpoint-path {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
|
|
48
48
|
.auth-note {
|
|
49
49
|
font-size: 12px;
|
|
50
|
-
color: var(--dm-
|
|
50
|
+
color: var(--dm-text-muted, #6b7280);
|
|
51
51
|
margin: 4px 0 12px;
|
|
52
52
|
}
|
|
53
53
|
|
|
@@ -16,28 +16,28 @@
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
.method-get {
|
|
19
|
-
background:
|
|
20
|
-
color:
|
|
19
|
+
background: color-mix(in srgb, var(--dm-success) 15%, transparent);
|
|
20
|
+
color: var(--dm-success);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
.method-post {
|
|
24
|
-
background:
|
|
25
|
-
color:
|
|
24
|
+
background: color-mix(in srgb, var(--dm-primary) 15%, transparent);
|
|
25
|
+
color: var(--dm-primary);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
.method-put {
|
|
29
|
-
background:
|
|
30
|
-
color:
|
|
29
|
+
background: color-mix(in srgb, var(--dm-warning) 15%, transparent);
|
|
30
|
+
color: var(--dm-warning-dark);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
.method-patch {
|
|
34
|
-
background:
|
|
35
|
-
color:
|
|
34
|
+
background: color-mix(in srgb, var(--dm-info) 15%, transparent);
|
|
35
|
+
color: var(--dm-info);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
.method-delete {
|
|
39
|
-
background:
|
|
40
|
-
color:
|
|
39
|
+
background: color-mix(in srgb, var(--dm-danger) 15%, transparent);
|
|
40
|
+
color: var(--dm-danger);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
.endpoint-path {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
|
|
48
48
|
.auth-note {
|
|
49
49
|
font-size: 12px;
|
|
50
|
-
color: var(--dm-
|
|
50
|
+
color: var(--dm-text-muted, #6b7280);
|
|
51
51
|
margin: 4px 0 12px;
|
|
52
52
|
}
|
|
53
53
|
|
|
@@ -16,28 +16,28 @@
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
.method-get {
|
|
19
|
-
background:
|
|
20
|
-
color:
|
|
19
|
+
background: color-mix(in srgb, var(--dm-success) 15%, transparent);
|
|
20
|
+
color: var(--dm-success);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
.method-post {
|
|
24
|
-
background:
|
|
25
|
-
color:
|
|
24
|
+
background: color-mix(in srgb, var(--dm-primary) 15%, transparent);
|
|
25
|
+
color: var(--dm-primary);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
.method-put {
|
|
29
|
-
background:
|
|
30
|
-
color:
|
|
29
|
+
background: color-mix(in srgb, var(--dm-warning) 15%, transparent);
|
|
30
|
+
color: var(--dm-warning-dark);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
.method-patch {
|
|
34
|
-
background:
|
|
35
|
-
color:
|
|
34
|
+
background: color-mix(in srgb, var(--dm-info) 15%, transparent);
|
|
35
|
+
color: var(--dm-info);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
.method-delete {
|
|
39
|
-
background:
|
|
40
|
-
color:
|
|
39
|
+
background: color-mix(in srgb, var(--dm-danger) 15%, transparent);
|
|
40
|
+
color: var(--dm-danger);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
.endpoint-path {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
|
|
48
48
|
.auth-note {
|
|
49
49
|
font-size: 12px;
|
|
50
|
-
color: var(--dm-
|
|
50
|
+
color: var(--dm-text-muted, #6b7280);
|
|
51
51
|
margin: 4px 0 12px;
|
|
52
52
|
}
|
|
53
53
|
|
|
@@ -16,28 +16,28 @@
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
.method-get {
|
|
19
|
-
background:
|
|
20
|
-
color:
|
|
19
|
+
background: color-mix(in srgb, var(--dm-success) 15%, transparent);
|
|
20
|
+
color: var(--dm-success);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
.method-post {
|
|
24
|
-
background:
|
|
25
|
-
color:
|
|
24
|
+
background: color-mix(in srgb, var(--dm-primary) 15%, transparent);
|
|
25
|
+
color: var(--dm-primary);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
.method-put {
|
|
29
|
-
background:
|
|
30
|
-
color:
|
|
29
|
+
background: color-mix(in srgb, var(--dm-warning) 15%, transparent);
|
|
30
|
+
color: var(--dm-warning-dark);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
.method-patch {
|
|
34
|
-
background:
|
|
35
|
-
color:
|
|
34
|
+
background: color-mix(in srgb, var(--dm-info) 15%, transparent);
|
|
35
|
+
color: var(--dm-info);
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
.method-delete {
|
|
39
|
-
background:
|
|
40
|
-
color:
|
|
39
|
+
background: color-mix(in srgb, var(--dm-danger) 15%, transparent);
|
|
40
|
+
color: var(--dm-danger);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
.endpoint-path {
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
|
|
48
48
|
.auth-note {
|
|
49
49
|
font-size: 12px;
|
|
50
|
-
color: var(--dm-
|
|
50
|
+
color: var(--dm-text-muted, #6b7280);
|
|
51
51
|
margin: 4px 0 12px;
|
|
52
52
|
}
|
|
53
53
|
|