@schmitech/chatbot-widget 0.5.2 → 0.5.4
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/dist/Tableau10-D7jGxypv-BNlEL2G_.js +9 -0
- package/dist/arc-D-ZI5fuh-CvDHBzlN.js +84 -0
- package/dist/blockDiagram-c4efeb88-DUnNxfIR-Bhh-x1q6.js +1221 -0
- package/dist/c4Diagram-c83219d4-cC4OxfBG-DRTO_jy5.js +1580 -0
- package/dist/channel-hcYozyrT-BSOc2Hp-.js +6 -0
- package/dist/chatbot-widget.bundle.js +3881 -1586
- package/dist/chatbot-widget.css +1 -1
- package/dist/chatbot-widget.es.js +12 -63652
- package/dist/chatbot-widget.umd.js +3880 -1585
- package/dist/classDiagram-beda092f-BLYhf5Mr-vk4Ko58U.js +218 -0
- package/dist/classDiagram-v2-2358418a-VBkbF8mr-Ca0l1fEs.js +201 -0
- package/dist/clone-BZIkCMuw-B9owNq6E.js +9 -0
- package/dist/config/index.d.ts +2 -2
- package/dist/createText-1719965b-UejsQ47k-B1DYw0WW.js +2955 -0
- package/dist/edges-96097737-1M5QvjOd-BpQVVoQN.js +1088 -0
- package/dist/erDiagram-0228fc6a-CjBNxHoC-DXDVlH55.js +929 -0
- package/dist/flowDb-c6c81e3f-Q2aoOxdz-DfrfI3H1.js +1127 -0
- package/dist/flowDiagram-50d868cf-zizL6ppE-BAH-_juu.js +788 -0
- package/dist/flowDiagram-v2-4f6560a1-DVx_vlO5-bkcRE0UW.js +18 -0
- package/dist/flowchart-elk-definition-6af322e1-Eyez36go-B_lk3oHt.js +48132 -0
- package/dist/ganttDiagram-a2739b55-C82Jv-TO-DoS-s1Yu.js +1743 -0
- package/dist/gitGraphDiagram-82fe8481-D9o_9-U8-DJF-ZeR8.js +1265 -0
- package/dist/graph-BjmGDpTe-DgbYS1Ie.js +848 -0
- package/dist/index-5325376f-CJL5w-Sw-BXp44Ej5.js +374 -0
- package/dist/index-s6Yb6o1D.js +116386 -0
- package/dist/infoDiagram-8eee0895-FpS-TLK_-BnvO_wUe.js +320 -0
- package/dist/journeyDiagram-c64418c1-CMj1efQ9-CshcRDhm.js +802 -0
- package/dist/layout-D_6hdlf3-B7guhEBN.js +1470 -0
- package/dist/mindmap-definition-8da855dc-D4SxHjUd-jFZFomnk.js +21924 -0
- package/dist/pieDiagram-a8764435-BF5ZqOjB-Mqzg2J4Q.js +498 -0
- package/dist/quadrantDiagram-1e28029f-GtQb80VU-DCy1QjzW.js +903 -0
- package/dist/requirementDiagram-08caed73-CHtPj3FO-AHEP0cIt.js +767 -0
- package/dist/sankeyDiagram-a04cb91d-CBlXzOgd-CWJTc5AX.js +802 -0
- package/dist/sequenceDiagram-c5b8d532-Cs1iyw97-oayOJE8v.js +2235 -0
- package/dist/shared/styles.d.ts +1 -1
- package/dist/stateDiagram-1ecb1508-CpRKICMQ-C5OFJeRZ.js +266 -0
- package/dist/stateDiagram-v2-c2b004d7-BtkhFyQ5-DxzE8Je5.js +185 -0
- package/dist/styles-b4e223ce-D0oeHeKH-BmNvk4NR.js +1090 -0
- package/dist/styles-ca3715f6-BouNgl-L-_qXsPDP3.js +961 -0
- package/dist/styles-d45a18b0-Cvhb8Ltu-43I3Cd_I.js +437 -0
- package/dist/svgDrawCommon-b86b1483-mg-1NjZY-DrmnILcc.js +65 -0
- package/dist/timeline-definition-faaaa080-3olbep_P-BqKpgsPZ.js +793 -0
- package/dist/ui/Message.d.ts +1 -5
- package/dist/ui/MessagesList.d.ts +1 -5
- package/dist/xychartDiagram-f5964ef8-BN6HXpmW-C-g_F1w2.js +1238 -0
- package/package.json +3 -3
- package/dist/ui/TypingEffect.d.ts +0 -18
package/dist/shared/styles.d.ts
CHANGED
|
@@ -51,7 +51,7 @@ export declare let CHAT_CONSTANTS: {
|
|
|
51
51
|
/**
|
|
52
52
|
* Global CSS styles for the ChatWidget component
|
|
53
53
|
*/
|
|
54
|
-
export declare const CHAT_WIDGET_STYLES = "\n body, button, input, textarea {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;\n }\n \n /* Complete focus ring removal - covers all browsers and scenarios */\n textarea,\n textarea:focus,\n textarea:focus-visible,\n input,\n input:focus,\n input:focus-visible {\n outline: none !important;\n box-shadow: none !important;\n border-color: inherit !important;\n -webkit-appearance: none !important;\n -moz-appearance: none !important;\n -webkit-tap-highlight-color: transparent !important;\n }\n \n /* Alternative: Uncomment for subtle light focus ring instead of complete removal */\n /*\n textarea:focus,\n textarea:focus-visible {\n outline: 2px solid rgba(203, 213, 225, 0.4) !important;\n outline-offset: -1px !important;\n box-shadow: 0 0 0 1px rgba(203, 213, 225, 0.2) !important;\n }\n */\n \n /* Remove webkit/safari specific styling */\n textarea::-webkit-input-placeholder,\n input::-webkit-input-placeholder {\n -webkit-appearance: none;\n }\n \n /* Ensure buttons also don't show focus rings */\n button:focus,\n button:focus-visible {\n outline: none !important;\n box-shadow: none !important;\n }\n\n /* Enhanced animations for modern feel */\n @keyframes slideInUp {\n 0% { \n opacity: 0; \n transform: translateY(20px) scale(0.95); \n }\n 100% { \n opacity: 1; \n transform: translateY(0) scale(1); \n }\n }\n\n @keyframes slideOutDown {\n 0% { \n opacity: 1; \n transform: translateY(0) scale(1); \n }\n 100% { \n opacity: 0; \n transform: translateY(20px) scale(0.95); \n }\n }\n\n .animate-slide-in-up {\n animation: slideInUp 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n }\n\n .animate-slide-out-down {\n animation: slideOutDown 0.2s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n }\n\n @keyframes pulseGlow {\n 0%, 100% { \n box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.4);\n }\n 50% { \n box-shadow: 0 0 0 8px rgba(59, 130, 246, 0);\n }\n }\n\n .animate-pulse-glow {\n animation: pulseGlow 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n }\n\n @keyframes messageEntry {\n 0% { \n opacity: 0; \n transform: translateY(10px) scale(0.98);\n }\n 100% { \n opacity: 1; \n transform: translateY(0) scale(1);\n }\n }\n\n .animate-message-entry {\n animation: messageEntry 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n }\n\n @keyframes buttonHover {\n 0% { transform: translateY(0) scale(1); }\n 100% { transform: translateY(-2px) scale(1.05); }\n }\n\n .animate-button-hover:hover {\n animation: buttonHover 0.2s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n }\n \n @keyframes fadeInOut {\n 0% { opacity: 0; transform: translateY(4px); }\n 20% { opacity: 1; transform: translateY(0); }\n 80% { opacity: 1; transform: translateY(0); }\n 100% { opacity: 0; transform: translateY(-4px); }\n }\n .animate-fade-in-out {\n animation: fadeInOut 2s ease-in-out forwards;\n }\n \n @keyframes bounce-gentle {\n 0%, 100% { transform: translateY(0); }\n 50% { transform: translateY(-8px); }\n }\n .animate-bounce-gentle {\n animation: bounce-gentle 3s ease-in-out infinite;\n animation-delay: 2s;\n }\n\n @keyframes float {\n 0%, 100% { transform: translateY(0px) rotate(0deg) scale(1); }\n 25% { transform: translateY(-8px) rotate(2deg) scale(1.02); }\n 50% { transform: translateY(-4px) rotate(-1deg) scale(1); }\n 75% { transform: translateY(-6px) rotate(1deg) scale(1.01); }\n }\n .animate-float {\n animation: float 2.5s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n }\n \n /* Modern typing dots animation */\n @keyframes dotWave {\n 0%, 60%, 100% {\n transform: translateY(0) scale(1);\n background-color: #9ca3af;\n }\n 30% {\n transform: translateY(-10px) scale(1.1);\n background-color: #6b7280;\n }\n }\n \n .typing-dots-container {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 0;\n }\n \n .typing-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background-color: #9ca3af;\n animation: dotWave 1.4s ease-in-out infinite;\n }\n \n .typing-dot:nth-child(1) {\n animation-delay: 0s;\n }\n \n .typing-dot:nth-child(2) {\n animation-delay: 0.2s;\n }\n \n .typing-dot:nth-child(3) {\n animation-delay: 0.4s;\n }\n\n /* Glassmorphism effects */\n .glass-effect {\n backdrop-filter: blur(20px);\n -webkit-backdrop-filter: blur(20px);\n background: rgba(255, 255, 255, 0.8);\n border: 1px solid rgba(255, 255, 255, 0.3);\n }\n\n .glass-effect-dark {\n backdrop-filter: blur(20px);\n -webkit-backdrop-filter: blur(20px);\n background: rgba(30, 41, 59, 0.8);\n border: 1px solid rgba(255, 255, 255, 0.1);\n }\n\n /* Custom scrollbar */\n .custom-scrollbar::-webkit-scrollbar {\n width: 6px;\n }\n\n .custom-scrollbar::-webkit-scrollbar-track {\n background: rgba(0, 0, 0, 0.05);\n border-radius: 3px;\n }\n\n .custom-scrollbar::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, 0.2);\n border-radius: 3px;\n transition: background 0.2s ease;\n }\n\n .custom-scrollbar::-webkit-scrollbar-thumb:hover {\n background: rgba(0, 0, 0, 0.3);\n }\n\n /* Enhanced shadows */\n .shadow-elegant {\n box-shadow: \n 0 10px 25px -5px rgba(0, 0, 0, 0.1),\n 0 8px 10px -6px rgba(0, 0, 0, 0.1),\n 0 0 0 1px rgba(255, 255, 255, 0.05);\n }\n\n .shadow-soft {\n box-shadow: \n 0 4px 6px -1px rgba(0, 0, 0, 0.1),\n 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n }\n\n .shadow-floating {\n box-shadow: \n 0 20px 25px -5px rgba(0, 0, 0, 0.1),\n 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n }\n \n .prose {\n max-width: 100%;\n }\n \n .prose > * {\n margin-top: 0 !important;\n margin-bottom: 0.5em !important;\n }\n \n .prose p {\n margin: 0 0 0.5em 0 !important;\n padding: 0;\n line-height: 1.6;\n }\n \n .prose p:last-child {\n margin-bottom: 0 !important;\n }\n \n .prose ul,\n .prose ol {\n margin-top: 0.5em !important;\n margin-bottom: 0.5em !important;\n padding-left: 1.5em !important;\n }\n \n .prose li {\n margin-bottom: 0.25em !important;\n padding-left: 0.25em !important;\n line-height: 1.5;\n }\n \n .prose li p {\n margin: 0 !important;\n }\n \n .prose li + li {\n margin-top: 0.1em !important;\n }\n \n .prose h1, .prose h2, .prose h3, .prose h4, .prose h5, .prose h6 {\n margin-top: 1em !important;\n margin-bottom: 0.5em !important;\n font-weight: 600;\n }\n\n /* Button enhancements */\n .btn-modern {\n position: relative;\n overflow: hidden;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .btn-modern::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: linear-gradient(135deg, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0));\n opacity: 0;\n transition: opacity 0.3s ease;\n }\n\n .btn-modern:hover::before {\n opacity: 1;\n }\n\n /* Input enhancements */\n .input-modern {\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .input-modern:focus {\n transform: translateY(-1px);\n }\n ";
|
|
54
|
+
export declare const CHAT_WIDGET_STYLES = "\n body, button, input, textarea {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;\n }\n \n /* Complete focus ring removal - covers all browsers and scenarios */\n textarea,\n textarea:focus,\n textarea:focus-visible,\n input,\n input:focus,\n input:focus-visible {\n outline: none !important;\n box-shadow: none !important;\n border-color: inherit !important;\n -webkit-appearance: none !important;\n -moz-appearance: none !important;\n -webkit-tap-highlight-color: transparent !important;\n }\n \n /* Alternative: Uncomment for subtle light focus ring instead of complete removal */\n /*\n textarea:focus,\n textarea:focus-visible {\n outline: 2px solid rgba(203, 213, 225, 0.4) !important;\n outline-offset: -1px !important;\n box-shadow: 0 0 0 1px rgba(203, 213, 225, 0.2) !important;\n }\n */\n \n /* Remove webkit/safari specific styling */\n textarea::-webkit-input-placeholder,\n input::-webkit-input-placeholder {\n -webkit-appearance: none;\n }\n \n /* Ensure buttons also don't show focus rings */\n button:focus,\n button:focus-visible {\n outline: none !important;\n box-shadow: none !important;\n }\n\n /* Enhanced animations for modern feel */\n @keyframes slideInUp {\n 0% { \n opacity: 0; \n transform: translateY(20px) scale(0.95); \n }\n 100% { \n opacity: 1; \n transform: translateY(0) scale(1); \n }\n }\n\n @keyframes slideOutDown {\n 0% { \n opacity: 1; \n transform: translateY(0) scale(1); \n }\n 100% { \n opacity: 0; \n transform: translateY(20px) scale(0.95); \n }\n }\n\n .animate-slide-in-up {\n animation: slideInUp 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n }\n\n .animate-slide-out-down {\n animation: slideOutDown 0.2s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n }\n\n @keyframes pulseGlow {\n 0%, 100% { \n box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.4);\n }\n 50% { \n box-shadow: 0 0 0 8px rgba(59, 130, 246, 0);\n }\n }\n\n .animate-pulse-glow {\n animation: pulseGlow 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n }\n\n @keyframes messageEntry {\n 0% { \n opacity: 0; \n transform: translateY(10px) scale(0.98);\n }\n 100% { \n opacity: 1; \n transform: translateY(0) scale(1);\n }\n }\n\n .animate-message-entry {\n animation: messageEntry 0.4s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n }\n\n @keyframes buttonHover {\n 0% { transform: translateY(0) scale(1); }\n 100% { transform: translateY(-2px) scale(1.05); }\n }\n\n .animate-button-hover:hover {\n animation: buttonHover 0.2s cubic-bezier(0.4, 0, 0.2, 1) forwards;\n }\n \n @keyframes fadeInOut {\n 0% { opacity: 0; transform: translateY(4px); }\n 20% { opacity: 1; transform: translateY(0); }\n 80% { opacity: 1; transform: translateY(0); }\n 100% { opacity: 0; transform: translateY(-4px); }\n }\n .animate-fade-in-out {\n animation: fadeInOut 2s ease-in-out forwards;\n }\n \n @keyframes bounce-gentle {\n 0%, 100% { transform: translateY(0); }\n 50% { transform: translateY(-8px); }\n }\n .animate-bounce-gentle {\n animation: bounce-gentle 3s ease-in-out infinite;\n animation-delay: 2s;\n }\n\n @keyframes float {\n 0%, 100% { transform: translateY(0px) rotate(0deg) scale(1); }\n 25% { transform: translateY(-8px) rotate(2deg) scale(1.02); }\n 50% { transform: translateY(-4px) rotate(-1deg) scale(1); }\n 75% { transform: translateY(-6px) rotate(1deg) scale(1.01); }\n }\n .animate-float {\n animation: float 2.5s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n }\n \n /* Modern typing dots animation */\n @keyframes dotWave {\n 0%, 60%, 100% {\n transform: translateY(0) scale(1);\n background-color: #9ca3af;\n }\n 30% {\n transform: translateY(-10px) scale(1.1);\n background-color: #6b7280;\n }\n }\n \n .typing-dots-container {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 0;\n }\n \n .typing-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background-color: #9ca3af;\n animation: dotWave 1.4s ease-in-out infinite;\n }\n \n .typing-dot:nth-child(1) {\n animation-delay: 0s;\n }\n \n .typing-dot:nth-child(2) {\n animation-delay: 0.2s;\n }\n \n .typing-dot:nth-child(3) {\n animation-delay: 0.4s;\n }\n\n /* Glassmorphism effects */\n .glass-effect {\n backdrop-filter: blur(20px);\n -webkit-backdrop-filter: blur(20px);\n background: rgba(255, 255, 255, 0.8);\n border: 1px solid rgba(255, 255, 255, 0.3);\n }\n\n .glass-effect-dark {\n backdrop-filter: blur(20px);\n -webkit-backdrop-filter: blur(20px);\n background: rgba(30, 41, 59, 0.8);\n border: 1px solid rgba(255, 255, 255, 0.1);\n }\n\n /* Custom scrollbar */\n .custom-scrollbar::-webkit-scrollbar {\n width: 6px;\n }\n\n .custom-scrollbar::-webkit-scrollbar-track {\n background: rgba(0, 0, 0, 0.05);\n border-radius: 3px;\n }\n\n .custom-scrollbar::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, 0.2);\n border-radius: 3px;\n transition: background 0.2s ease;\n }\n\n .custom-scrollbar::-webkit-scrollbar-thumb:hover {\n background: rgba(0, 0, 0, 0.3);\n }\n\n /* Horizontal scrollbar for markdown content (tables, code blocks, etc.) */\n .markdown-content-wrapper {\n overflow-x: scroll !important; /* Use 'scroll' to always show scrollbar when content overflows */\n overflow-y: visible !important;\n -webkit-overflow-scrolling: touch;\n /* Force scrollbar to always be visible when content overflows */\n scrollbar-width: thin;\n scrollbar-color: rgba(0, 0, 0, 0.4) rgba(0, 0, 0, 0.15);\n }\n\n /* WebKit scrollbar - always visible when overflow */\n .markdown-content-wrapper::-webkit-scrollbar {\n height: 12px;\n width: 12px;\n /* Force scrollbar to always display */\n display: block;\n -webkit-appearance: none;\n }\n\n .markdown-content-wrapper::-webkit-scrollbar-track {\n background: rgba(0, 0, 0, 0.15);\n border-radius: 6px;\n margin: 4px;\n /* Make track always visible */\n -webkit-box-shadow: inset 0 0 2px rgba(0, 0, 0, 0.1);\n }\n\n .markdown-content-wrapper::-webkit-scrollbar-thumb {\n background: rgba(0, 0, 0, 0.4);\n border-radius: 6px;\n border: 2px solid transparent;\n background-clip: padding-box;\n transition: background 0.2s ease;\n /* Ensure thumb is always visible */\n min-height: 20px;\n }\n\n .markdown-content-wrapper::-webkit-scrollbar-thumb:hover {\n background: rgba(0, 0, 0, 0.6);\n background-clip: padding-box;\n }\n\n .markdown-content-wrapper::-webkit-scrollbar-thumb:active {\n background: rgba(0, 0, 0, 0.7);\n }\n\n .markdown-content-wrapper::-webkit-scrollbar-corner {\n background: rgba(0, 0, 0, 0.1);\n }\n\n /* Ensure scrollbar styling is consistent across browsers */\n @supports (-webkit-appearance: none) {\n .markdown-content-wrapper::-webkit-scrollbar {\n -webkit-appearance: none;\n }\n }\n\n /* Force scrollbar to always be visible when content overflows (macOS workaround) */\n .markdown-content-wrapper.has-horizontal-scroll {\n /* Reserve space for scrollbar */\n scrollbar-gutter: stable;\n }\n\n .markdown-content-wrapper.has-horizontal-scroll::-webkit-scrollbar {\n /* Force scrollbar to always be visible */\n display: block !important;\n opacity: 1 !important;\n visibility: visible !important;\n }\n\n .markdown-content-wrapper.has-horizontal-scroll::-webkit-scrollbar-track {\n /* Make track more visible */\n background: rgba(0, 0, 0, 0.2) !important;\n opacity: 1 !important;\n visibility: visible !important;\n }\n\n .markdown-content-wrapper.has-horizontal-scroll::-webkit-scrollbar-thumb {\n /* Make thumb more visible */\n background: rgba(0, 0, 0, 0.5) !important;\n opacity: 1 !important;\n visibility: visible !important;\n }\n\n /* Enhanced shadows */\n .shadow-elegant {\n box-shadow: \n 0 10px 25px -5px rgba(0, 0, 0, 0.1),\n 0 8px 10px -6px rgba(0, 0, 0, 0.1),\n 0 0 0 1px rgba(255, 255, 255, 0.05);\n }\n\n .shadow-soft {\n box-shadow: \n 0 4px 6px -1px rgba(0, 0, 0, 0.1),\n 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n }\n\n .shadow-floating {\n box-shadow: \n 0 20px 25px -5px rgba(0, 0, 0, 0.1),\n 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n }\n \n .prose {\n max-width: 100%;\n }\n \n .prose > * {\n margin-top: 0 !important;\n margin-bottom: 0.5em !important;\n }\n \n .prose p {\n margin: 0 0 0.5em 0 !important;\n padding: 0;\n line-height: 1.6;\n }\n \n .prose p:last-child {\n margin-bottom: 0 !important;\n }\n \n .prose ul,\n .prose ol {\n margin-top: 0.5em !important;\n margin-bottom: 0.5em !important;\n padding-left: 1.5em !important;\n }\n \n .prose li {\n margin-bottom: 0.25em !important;\n padding-left: 0.25em !important;\n line-height: 1.5;\n }\n \n .prose li p {\n margin: 0 !important;\n }\n \n .prose li + li {\n margin-top: 0.1em !important;\n }\n \n .prose h1, .prose h2, .prose h3, .prose h4, .prose h5, .prose h6 {\n margin-top: 1em !important;\n margin-bottom: 0.5em !important;\n font-weight: 600;\n }\n\n /* Button enhancements */\n .btn-modern {\n position: relative;\n overflow: hidden;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .btn-modern::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: linear-gradient(135deg, rgba(255, 255, 255, 0.2), rgba(255, 255, 255, 0));\n opacity: 0;\n transition: opacity 0.3s ease;\n }\n\n .btn-modern:hover::before {\n opacity: 1;\n }\n\n /* Input enhancements */\n .input-modern {\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n }\n\n .input-modern:focus {\n transform: translateY(-1px);\n }\n ";
|
|
55
55
|
/**
|
|
56
56
|
* Helper functions for responsive window dimensions
|
|
57
57
|
*/
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
import { A as O, v as N, D as T } from "./styles-ca3715f6-BouNgl-L-_qXsPDP3.js";
|
|
2
|
+
import { g as t, P as S, O as k, W as G, l as z, c as L, k as P, i as U } from "./index-s6Yb6o1D.js";
|
|
3
|
+
import { K as I } from "./graph-BjmGDpTe-DgbYS1Ie.js";
|
|
4
|
+
import { A as R } from "./layout-D_6hdlf3-B7guhEBN.js";
|
|
5
|
+
typeof window < "u" && (window.global = window);
|
|
6
|
+
const W = (e) => e.append("circle").attr("class", "start-state").attr("r", t().state.sizeUnit).attr("cx", t().state.padding + t().state.sizeUnit).attr("cy", t().state.padding + t().state.sizeUnit), C = (e) => e.append("line").style("stroke", "grey").style("stroke-dasharray", "3").attr("x1", t().state.textHeight).attr("class", "divider").attr("x2", t().state.textHeight * 2).attr("y1", 0).attr("y2", 0), F = (e, r) => {
|
|
7
|
+
const g = e.append("text").attr("x", 2 * t().state.padding).attr("y", t().state.textHeight + 2 * t().state.padding).attr("font-size", t().state.fontSize).attr("class", "state-title").text(r.id), s = g.node().getBBox();
|
|
8
|
+
return e.insert("rect", ":first-child").attr("x", t().state.padding).attr("y", t().state.padding).attr("width", s.width + 2 * t().state.padding).attr("height", s.height + 2 * t().state.padding).attr("rx", t().state.radius), g;
|
|
9
|
+
}, J = (e, r) => {
|
|
10
|
+
const g = function(o, u, b) {
|
|
11
|
+
const w = o.append("tspan").attr("x", 2 * t().state.padding).text(u);
|
|
12
|
+
b || w.attr("dy", t().state.textHeight);
|
|
13
|
+
}, s = e.append("text").attr("x", 2 * t().state.padding).attr("y", t().state.textHeight + 1.3 * t().state.padding).attr("font-size", t().state.fontSize).attr("class", "state-title").text(r.descriptions[0]).node().getBBox(), d = s.height, l = e.append("text").attr("x", t().state.padding).attr(
|
|
14
|
+
"y",
|
|
15
|
+
d + t().state.padding * 0.4 + t().state.dividerMargin + t().state.textHeight
|
|
16
|
+
).attr("class", "state-description");
|
|
17
|
+
let h = !0, a = !0;
|
|
18
|
+
r.descriptions.forEach(function(o) {
|
|
19
|
+
h || (g(l, o, a), a = !1), h = !1;
|
|
20
|
+
});
|
|
21
|
+
const n = e.append("line").attr("x1", t().state.padding).attr("y1", t().state.padding + d + t().state.dividerMargin / 2).attr("y2", t().state.padding + d + t().state.dividerMargin / 2).attr("class", "descr-divider"), x = l.node().getBBox(), p = Math.max(x.width, s.width);
|
|
22
|
+
return n.attr("x2", p + 3 * t().state.padding), e.insert("rect", ":first-child").attr("x", t().state.padding).attr("y", t().state.padding).attr("width", p + 2 * t().state.padding).attr("height", x.height + d + 2 * t().state.padding).attr("rx", t().state.radius), e;
|
|
23
|
+
}, Y = (e, r, g) => {
|
|
24
|
+
const s = t().state.padding, d = 2 * t().state.padding, l = e.node().getBBox(), h = l.width, a = l.x, n = e.append("text").attr("x", 0).attr("y", t().state.titleShift).attr("font-size", t().state.fontSize).attr("class", "state-title").text(r.id), x = n.node().getBBox().width + d;
|
|
25
|
+
let p = Math.max(x, h);
|
|
26
|
+
p === h && (p = p + d);
|
|
27
|
+
let o;
|
|
28
|
+
const u = e.node().getBBox();
|
|
29
|
+
r.doc, o = a - s, x > h && (o = (h - p) / 2 + s), Math.abs(a - u.x) < s && x > h && (o = a - (x - h) / 2);
|
|
30
|
+
const b = 1 - t().state.textHeight;
|
|
31
|
+
return e.insert("rect", ":first-child").attr("x", o).attr("y", b).attr("class", g ? "alt-composit" : "composit").attr("width", p).attr(
|
|
32
|
+
"height",
|
|
33
|
+
u.height + t().state.textHeight + t().state.titleShift + 1
|
|
34
|
+
).attr("rx", "0"), n.attr("x", o + s), x <= h && n.attr("x", a + (p - d) / 2 - x / 2 + s), e.insert("rect", ":first-child").attr("x", o).attr(
|
|
35
|
+
"y",
|
|
36
|
+
t().state.titleShift - t().state.textHeight - t().state.padding
|
|
37
|
+
).attr("width", p).attr("height", t().state.textHeight * 3).attr("rx", t().state.radius), e.insert("rect", ":first-child").attr("x", o).attr(
|
|
38
|
+
"y",
|
|
39
|
+
t().state.titleShift - t().state.textHeight - t().state.padding
|
|
40
|
+
).attr("width", p).attr("height", u.height + 3 + 2 * t().state.textHeight).attr("rx", t().state.radius), e;
|
|
41
|
+
}, j = (e) => (e.append("circle").attr("class", "end-state-outer").attr("r", t().state.sizeUnit + t().state.miniPadding).attr(
|
|
42
|
+
"cx",
|
|
43
|
+
t().state.padding + t().state.sizeUnit + t().state.miniPadding
|
|
44
|
+
).attr(
|
|
45
|
+
"cy",
|
|
46
|
+
t().state.padding + t().state.sizeUnit + t().state.miniPadding
|
|
47
|
+
), e.append("circle").attr("class", "end-state-inner").attr("r", t().state.sizeUnit).attr("cx", t().state.padding + t().state.sizeUnit + 2).attr("cy", t().state.padding + t().state.sizeUnit + 2)), K = (e, r) => {
|
|
48
|
+
let g = t().state.forkWidth, s = t().state.forkHeight;
|
|
49
|
+
if (r.parentId) {
|
|
50
|
+
let d = g;
|
|
51
|
+
g = s, s = d;
|
|
52
|
+
}
|
|
53
|
+
return e.append("rect").style("stroke", "black").style("fill", "black").attr("width", g).attr("height", s).attr("x", t().state.padding).attr("y", t().state.padding);
|
|
54
|
+
}, X = (e, r, g, s) => {
|
|
55
|
+
let d = 0;
|
|
56
|
+
const l = s.append("text");
|
|
57
|
+
l.style("text-anchor", "start"), l.attr("class", "noteText");
|
|
58
|
+
let h = e.replace(/\r\n/g, "<br/>");
|
|
59
|
+
h = h.replace(/\n/g, "<br/>");
|
|
60
|
+
const a = h.split(z.lineBreakRegex);
|
|
61
|
+
let n = 1.25 * t().state.noteMargin;
|
|
62
|
+
for (const x of a) {
|
|
63
|
+
const p = x.trim();
|
|
64
|
+
if (p.length > 0) {
|
|
65
|
+
const o = l.append("tspan");
|
|
66
|
+
if (o.text(p), n === 0) {
|
|
67
|
+
const u = o.node().getBBox();
|
|
68
|
+
n += u.height;
|
|
69
|
+
}
|
|
70
|
+
d += n, o.attr("x", r + t().state.noteMargin), o.attr("y", g + d + 1.25 * t().state.noteMargin);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return { textWidth: l.node().getBBox().width, textHeight: d };
|
|
74
|
+
}, $ = (e, r) => {
|
|
75
|
+
r.attr("class", "state-note");
|
|
76
|
+
const g = r.append("rect").attr("x", 0).attr("y", t().state.padding), s = r.append("g"), { textWidth: d, textHeight: l } = X(e, 0, 0, s);
|
|
77
|
+
return g.attr("height", l + 2 * t().state.noteMargin), g.attr("width", d + t().state.noteMargin * 2), g;
|
|
78
|
+
}, H = function(e, r) {
|
|
79
|
+
const g = r.id, s = {
|
|
80
|
+
id: g,
|
|
81
|
+
label: r.id,
|
|
82
|
+
width: 0,
|
|
83
|
+
height: 0
|
|
84
|
+
}, d = e.append("g").attr("id", g).attr("class", "stateGroup");
|
|
85
|
+
r.type === "start" && W(d), r.type === "end" && j(d), (r.type === "fork" || r.type === "join") && K(d, r), r.type === "note" && $(r.note.text, d), r.type === "divider" && C(d), r.type === "default" && r.descriptions.length === 0 && F(d, r), r.type === "default" && r.descriptions.length > 0 && J(d, r);
|
|
86
|
+
const l = d.node().getBBox();
|
|
87
|
+
return s.width = l.width + 2 * t().state.padding, s.height = l.height + 2 * t().state.padding, s;
|
|
88
|
+
};
|
|
89
|
+
let A = 0;
|
|
90
|
+
const q = function(e, r, g) {
|
|
91
|
+
const s = function(n) {
|
|
92
|
+
switch (n) {
|
|
93
|
+
case N.relationType.AGGREGATION:
|
|
94
|
+
return "aggregation";
|
|
95
|
+
case N.relationType.EXTENSION:
|
|
96
|
+
return "extension";
|
|
97
|
+
case N.relationType.COMPOSITION:
|
|
98
|
+
return "composition";
|
|
99
|
+
case N.relationType.DEPENDENCY:
|
|
100
|
+
return "dependency";
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
r.points = r.points.filter((n) => !Number.isNaN(n.y));
|
|
104
|
+
const d = r.points, l = L().x(function(n) {
|
|
105
|
+
return n.x;
|
|
106
|
+
}).y(function(n) {
|
|
107
|
+
return n.y;
|
|
108
|
+
}).curve(P), h = e.append("path").attr("d", l(d)).attr("id", "edge" + A).attr("class", "transition");
|
|
109
|
+
let a = "";
|
|
110
|
+
if (t().state.arrowMarkerAbsolute && (a = window.location.protocol + "//" + window.location.host + window.location.pathname + window.location.search, a = a.replace(/\(/g, "\\("), a = a.replace(/\)/g, "\\)")), h.attr(
|
|
111
|
+
"marker-end",
|
|
112
|
+
"url(" + a + "#" + s(N.relationType.DEPENDENCY) + "End)"
|
|
113
|
+
), g.title !== void 0) {
|
|
114
|
+
const n = e.append("g").attr("class", "stateLabel"), { x, y: p } = U.calcLabelPosition(r.points), o = z.getRows(g.title);
|
|
115
|
+
let u = 0;
|
|
116
|
+
const b = [];
|
|
117
|
+
let w = 0, M = 0;
|
|
118
|
+
for (let f = 0; f <= o.length; f++) {
|
|
119
|
+
const c = n.append("text").attr("text-anchor", "middle").text(o[f]).attr("x", x).attr("y", p + u), y = c.node().getBBox();
|
|
120
|
+
w = Math.max(w, y.width), M = Math.min(M, y.x), k.info(y.x, x, p + u), u === 0 && (u = c.node().getBBox().height, k.info("Title height", u, p)), b.push(c);
|
|
121
|
+
}
|
|
122
|
+
let E = u * o.length;
|
|
123
|
+
if (o.length > 1) {
|
|
124
|
+
const f = (o.length - 1) * u * 0.5;
|
|
125
|
+
b.forEach((c, y) => c.attr("y", p + y * u - f)), E = u * o.length;
|
|
126
|
+
}
|
|
127
|
+
const i = n.node().getBBox();
|
|
128
|
+
n.insert("rect", ":first-child").attr("class", "box").attr("x", x - w / 2 - t().state.padding / 2).attr("y", p - E / 2 - t().state.padding / 2 - 3.5).attr("width", w + t().state.padding).attr("height", E + t().state.padding), k.info(i);
|
|
129
|
+
}
|
|
130
|
+
A++;
|
|
131
|
+
};
|
|
132
|
+
let m;
|
|
133
|
+
const v = {}, Z = function() {
|
|
134
|
+
}, Q = function(e) {
|
|
135
|
+
e.append("defs").append("marker").attr("id", "dependencyEnd").attr("refX", 19).attr("refY", 7).attr("markerWidth", 20).attr("markerHeight", 28).attr("orient", "auto").append("path").attr("d", "M 19,7 L9,13 L14,7 L9,1 Z");
|
|
136
|
+
}, V = function(e, r, g, s) {
|
|
137
|
+
m = t().state;
|
|
138
|
+
const d = t().securityLevel;
|
|
139
|
+
let l;
|
|
140
|
+
d === "sandbox" && (l = S("#i" + r));
|
|
141
|
+
const h = d === "sandbox" ? S(l.nodes()[0].contentDocument.body) : S("body"), a = d === "sandbox" ? l.nodes()[0].contentDocument : document;
|
|
142
|
+
k.debug("Rendering diagram " + e);
|
|
143
|
+
const n = h.select(`[id='${r}']`);
|
|
144
|
+
Q(n);
|
|
145
|
+
const x = s.db.getRootDoc();
|
|
146
|
+
D(x, n, void 0, !1, h, a, s);
|
|
147
|
+
const p = m.padding, o = n.node().getBBox(), u = o.width + p * 2, b = o.height + p * 2, w = u * 1.75;
|
|
148
|
+
G(n, b, w, m.useMaxWidth), n.attr(
|
|
149
|
+
"viewBox",
|
|
150
|
+
`${o.x - m.padding} ${o.y - m.padding} ` + u + " " + b
|
|
151
|
+
);
|
|
152
|
+
}, _ = (e) => e ? e.length * m.fontSizeFactor : 1, D = (e, r, g, s, d, l, h) => {
|
|
153
|
+
const a = new I({
|
|
154
|
+
compound: !0,
|
|
155
|
+
multigraph: !0
|
|
156
|
+
});
|
|
157
|
+
let n, x = !0;
|
|
158
|
+
for (n = 0; n < e.length; n++)
|
|
159
|
+
if (e[n].stmt === "relation") {
|
|
160
|
+
x = !1;
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
g ? a.setGraph({
|
|
164
|
+
rankdir: "LR",
|
|
165
|
+
multigraph: !0,
|
|
166
|
+
compound: !0,
|
|
167
|
+
// acyclicer: 'greedy',
|
|
168
|
+
ranker: "tight-tree",
|
|
169
|
+
ranksep: x ? 1 : m.edgeLengthFactor,
|
|
170
|
+
nodeSep: x ? 1 : 50,
|
|
171
|
+
isMultiGraph: !0
|
|
172
|
+
// ranksep: 5,
|
|
173
|
+
// nodesep: 1
|
|
174
|
+
}) : a.setGraph({
|
|
175
|
+
rankdir: "TB",
|
|
176
|
+
multigraph: !0,
|
|
177
|
+
compound: !0,
|
|
178
|
+
// isCompound: true,
|
|
179
|
+
// acyclicer: 'greedy',
|
|
180
|
+
// ranker: 'longest-path'
|
|
181
|
+
ranksep: x ? 1 : m.edgeLengthFactor,
|
|
182
|
+
nodeSep: x ? 1 : 50,
|
|
183
|
+
ranker: "tight-tree",
|
|
184
|
+
// ranker: 'network-simplex'
|
|
185
|
+
isMultiGraph: !0
|
|
186
|
+
}), a.setDefaultEdgeLabel(function() {
|
|
187
|
+
return {};
|
|
188
|
+
}), h.db.extract(e);
|
|
189
|
+
const p = h.db.getStates(), o = h.db.getRelations(), u = Object.keys(p);
|
|
190
|
+
for (const i of u) {
|
|
191
|
+
const f = p[i];
|
|
192
|
+
g && (f.parentId = g);
|
|
193
|
+
let c;
|
|
194
|
+
if (f.doc) {
|
|
195
|
+
let y = r.append("g").attr("id", f.id).attr("class", "stateGroup");
|
|
196
|
+
c = D(f.doc, y, f.id, !s, d, l, h);
|
|
197
|
+
{
|
|
198
|
+
y = Y(y, f, s);
|
|
199
|
+
let B = y.node().getBBox();
|
|
200
|
+
c.width = B.width, c.height = B.height + m.padding / 2, v[f.id] = { y: m.compositTitleSize };
|
|
201
|
+
}
|
|
202
|
+
} else
|
|
203
|
+
c = H(r, f);
|
|
204
|
+
if (f.note) {
|
|
205
|
+
const y = {
|
|
206
|
+
descriptions: [],
|
|
207
|
+
id: f.id + "-note",
|
|
208
|
+
note: f.note,
|
|
209
|
+
type: "note"
|
|
210
|
+
}, B = H(r, y);
|
|
211
|
+
f.note.position === "left of" ? (a.setNode(c.id + "-note", B), a.setNode(c.id, c)) : (a.setNode(c.id, c), a.setNode(c.id + "-note", B)), a.setParent(c.id, c.id + "-group"), a.setParent(c.id + "-note", c.id + "-group");
|
|
212
|
+
} else
|
|
213
|
+
a.setNode(c.id, c);
|
|
214
|
+
}
|
|
215
|
+
k.debug("Count=", a.nodeCount(), a);
|
|
216
|
+
let b = 0;
|
|
217
|
+
o.forEach(function(i) {
|
|
218
|
+
b++, k.debug("Setting edge", i), a.setEdge(
|
|
219
|
+
i.id1,
|
|
220
|
+
i.id2,
|
|
221
|
+
{
|
|
222
|
+
relation: i,
|
|
223
|
+
width: _(i.title),
|
|
224
|
+
height: m.labelHeight * z.getRows(i.title).length,
|
|
225
|
+
labelpos: "c"
|
|
226
|
+
},
|
|
227
|
+
"id" + b
|
|
228
|
+
);
|
|
229
|
+
}), R(a), k.debug("Graph after layout", a.nodes());
|
|
230
|
+
const w = r.node();
|
|
231
|
+
a.nodes().forEach(function(i) {
|
|
232
|
+
i !== void 0 && a.node(i) !== void 0 ? (k.warn("Node " + i + ": " + JSON.stringify(a.node(i))), d.select("#" + w.id + " #" + i).attr(
|
|
233
|
+
"transform",
|
|
234
|
+
"translate(" + (a.node(i).x - a.node(i).width / 2) + "," + (a.node(i).y + (v[i] ? v[i].y : 0) - a.node(i).height / 2) + " )"
|
|
235
|
+
), d.select("#" + w.id + " #" + i).attr("data-x-shift", a.node(i).x - a.node(i).width / 2), l.querySelectorAll("#" + w.id + " #" + i + " .divider").forEach((f) => {
|
|
236
|
+
const c = f.parentElement;
|
|
237
|
+
let y = 0, B = 0;
|
|
238
|
+
c && (c.parentElement && (y = c.parentElement.getBBox().width), B = parseInt(c.getAttribute("data-x-shift"), 10), Number.isNaN(B) && (B = 0)), f.setAttribute("x1", 0 - B + 8), f.setAttribute("x2", y - B - 8);
|
|
239
|
+
})) : k.debug("No Node " + i + ": " + JSON.stringify(a.node(i)));
|
|
240
|
+
});
|
|
241
|
+
let M = w.getBBox();
|
|
242
|
+
a.edges().forEach(function(i) {
|
|
243
|
+
i !== void 0 && a.edge(i) !== void 0 && (k.debug("Edge " + i.v + " -> " + i.w + ": " + JSON.stringify(a.edge(i))), q(r, a.edge(i), a.edge(i).relation));
|
|
244
|
+
}), M = w.getBBox();
|
|
245
|
+
const E = {
|
|
246
|
+
id: g || "root",
|
|
247
|
+
label: g || "root",
|
|
248
|
+
width: 0,
|
|
249
|
+
height: 0
|
|
250
|
+
};
|
|
251
|
+
return E.width = M.width + 2 * m.padding, E.height = M.height + 2 * m.padding, k.debug("Doc rendered", E, a), E;
|
|
252
|
+
}, tt = {
|
|
253
|
+
setConf: Z,
|
|
254
|
+
draw: V
|
|
255
|
+
}, dt = {
|
|
256
|
+
parser: T,
|
|
257
|
+
db: N,
|
|
258
|
+
renderer: tt,
|
|
259
|
+
styles: O,
|
|
260
|
+
init: (e) => {
|
|
261
|
+
e.state || (e.state = {}), e.state.arrowMarkerAbsolute = e.arrowMarkerAbsolute, N.clear();
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
export {
|
|
265
|
+
dt as diagram
|
|
266
|
+
};
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { A as Y, v as W, D as F, C as H, E as z, t as Q, I as X, _ as Z } from "./styles-ca3715f6-BouNgl-L-_qXsPDP3.js";
|
|
2
|
+
import { K as tt } from "./graph-BjmGDpTe-DgbYS1Ie.js";
|
|
3
|
+
import { O as p, g as S, P as A, i as et, W as st, l as B } from "./index-s6Yb6o1D.js";
|
|
4
|
+
import { b as ot } from "./index-5325376f-CJL5w-Sw-BXp44Ej5.js";
|
|
5
|
+
import "./layout-D_6hdlf3-B7guhEBN.js";
|
|
6
|
+
typeof window < "u" && (window.global = window);
|
|
7
|
+
const x = "rect", k = "rectWithTitle", at = "start", it = "end", rt = "divider", nt = "roundedWithTitle", dt = "note", lt = "noteGroup", h = "statediagram", ct = "state", pt = `${h}-${ct}`, I = "transition", bt = "note", gt = "note-edge", ut = `${I} ${gt}`, ht = `${h}-${bt}`, yt = "cluster", ft = `${h}-${yt}`, $t = "cluster-alt", mt = `${h}-${$t}`, L = "parent", M = "note", wt = "state", C = "----", xt = `${C}${M}`, _ = `${C}${L}`, j = "fill:none", G = "fill: #333", K = "c", q = "text", J = "normal";
|
|
8
|
+
let T = {}, c = 0;
|
|
9
|
+
const Tt = function(t) {
|
|
10
|
+
const a = Object.keys(t);
|
|
11
|
+
for (const e of a)
|
|
12
|
+
t[e];
|
|
13
|
+
}, St = function(t, a) {
|
|
14
|
+
return a.db.extract(a.db.getRootDocV2()), a.db.getClasses();
|
|
15
|
+
};
|
|
16
|
+
function Dt(t) {
|
|
17
|
+
return t == null ? "" : t.classes ? t.classes.join(" ") : "";
|
|
18
|
+
}
|
|
19
|
+
function v(t = "", a = 0, e = "", i = C) {
|
|
20
|
+
const r = e !== null && e.length > 0 ? `${i}${e}` : "";
|
|
21
|
+
return `${wt}-${t}${r}-${a}`;
|
|
22
|
+
}
|
|
23
|
+
const w = (t, a, e, i, r, n) => {
|
|
24
|
+
const s = e.id, y = Dt(i[s]);
|
|
25
|
+
if (s !== "root") {
|
|
26
|
+
let g = x;
|
|
27
|
+
e.start === !0 && (g = at), e.start === !1 && (g = it), e.type !== z && (g = e.type), T[s] || (T[s] = {
|
|
28
|
+
id: s,
|
|
29
|
+
shape: g,
|
|
30
|
+
description: B.sanitizeText(s, S()),
|
|
31
|
+
classes: `${y} ${pt}`
|
|
32
|
+
});
|
|
33
|
+
const o = T[s];
|
|
34
|
+
e.description && (Array.isArray(o.description) ? (o.shape = k, o.description.push(e.description)) : o.description.length > 0 ? (o.shape = k, o.description === s ? o.description = [e.description] : o.description = [o.description, e.description]) : (o.shape = x, o.description = e.description), o.description = B.sanitizeTextOrArray(o.description, S())), o.description.length === 1 && o.shape === k && (o.shape = x), !o.type && e.doc && (p.info("Setting cluster for ", s, E(e)), o.type = "group", o.dir = E(e), o.shape = e.type === Q ? rt : nt, o.classes = o.classes + " " + ft + " " + (n ? mt : ""));
|
|
35
|
+
const u = {
|
|
36
|
+
labelStyle: "",
|
|
37
|
+
shape: o.shape,
|
|
38
|
+
labelText: o.description,
|
|
39
|
+
// typeof newNode.description === 'object'
|
|
40
|
+
// ? newNode.description[0]
|
|
41
|
+
// : newNode.description,
|
|
42
|
+
classes: o.classes,
|
|
43
|
+
style: "",
|
|
44
|
+
//styles.style,
|
|
45
|
+
id: s,
|
|
46
|
+
dir: o.dir,
|
|
47
|
+
domId: v(s, c),
|
|
48
|
+
type: o.type,
|
|
49
|
+
padding: 15
|
|
50
|
+
//getConfig().flowchart.padding
|
|
51
|
+
};
|
|
52
|
+
if (u.centerLabel = !0, e.note) {
|
|
53
|
+
const d = {
|
|
54
|
+
labelStyle: "",
|
|
55
|
+
shape: dt,
|
|
56
|
+
labelText: e.note.text,
|
|
57
|
+
classes: ht,
|
|
58
|
+
// useHtmlLabels: false,
|
|
59
|
+
style: "",
|
|
60
|
+
// styles.style,
|
|
61
|
+
id: s + xt + "-" + c,
|
|
62
|
+
domId: v(s, c, M),
|
|
63
|
+
type: o.type,
|
|
64
|
+
padding: 15
|
|
65
|
+
//getConfig().flowchart.padding
|
|
66
|
+
}, l = {
|
|
67
|
+
labelStyle: "",
|
|
68
|
+
shape: lt,
|
|
69
|
+
labelText: e.note.text,
|
|
70
|
+
classes: o.classes,
|
|
71
|
+
style: "",
|
|
72
|
+
// styles.style,
|
|
73
|
+
id: s + _,
|
|
74
|
+
domId: v(s, c, L),
|
|
75
|
+
type: "group",
|
|
76
|
+
padding: 0
|
|
77
|
+
//getConfig().flowchart.padding
|
|
78
|
+
};
|
|
79
|
+
c++;
|
|
80
|
+
const f = s + _;
|
|
81
|
+
t.setNode(f, l), t.setNode(d.id, d), t.setNode(s, u), t.setParent(s, f), t.setParent(d.id, f);
|
|
82
|
+
let b = s, $ = d.id;
|
|
83
|
+
e.note.position === "left of" && (b = d.id, $ = s), t.setEdge(b, $, {
|
|
84
|
+
arrowhead: "none",
|
|
85
|
+
arrowType: "",
|
|
86
|
+
style: j,
|
|
87
|
+
labelStyle: "",
|
|
88
|
+
classes: ut,
|
|
89
|
+
arrowheadStyle: G,
|
|
90
|
+
labelpos: K,
|
|
91
|
+
labelType: q,
|
|
92
|
+
thickness: J
|
|
93
|
+
});
|
|
94
|
+
} else
|
|
95
|
+
t.setNode(s, u);
|
|
96
|
+
}
|
|
97
|
+
a && a.id !== "root" && (p.trace("Setting node ", s, " to be child of its parent ", a.id), t.setParent(s, a.id)), e.doc && (p.trace("Adding nodes children "), At(t, e, e.doc, i, r, !n));
|
|
98
|
+
}, At = (t, a, e, i, r, n) => {
|
|
99
|
+
p.trace("items", e), e.forEach((s) => {
|
|
100
|
+
switch (s.stmt) {
|
|
101
|
+
case Z:
|
|
102
|
+
w(t, a, s, i, r, n);
|
|
103
|
+
break;
|
|
104
|
+
case z:
|
|
105
|
+
w(t, a, s, i, r, n);
|
|
106
|
+
break;
|
|
107
|
+
case X:
|
|
108
|
+
{
|
|
109
|
+
w(t, a, s.state1, i, r, n), w(t, a, s.state2, i, r, n);
|
|
110
|
+
const y = {
|
|
111
|
+
id: "edge" + c,
|
|
112
|
+
arrowhead: "normal",
|
|
113
|
+
arrowTypeEnd: "arrow_barb",
|
|
114
|
+
style: j,
|
|
115
|
+
labelStyle: "",
|
|
116
|
+
label: B.sanitizeText(s.description, S()),
|
|
117
|
+
arrowheadStyle: G,
|
|
118
|
+
labelpos: K,
|
|
119
|
+
labelType: q,
|
|
120
|
+
thickness: J,
|
|
121
|
+
classes: I
|
|
122
|
+
};
|
|
123
|
+
t.setEdge(s.state1.id, s.state2.id, y, c), c++;
|
|
124
|
+
}
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}, E = (t, a = H) => {
|
|
129
|
+
let e = a;
|
|
130
|
+
if (t.doc)
|
|
131
|
+
for (let i = 0; i < t.doc.length; i++) {
|
|
132
|
+
const r = t.doc[i];
|
|
133
|
+
r.stmt === "dir" && (e = r.value);
|
|
134
|
+
}
|
|
135
|
+
return e;
|
|
136
|
+
}, kt = async function(t, a, e, i) {
|
|
137
|
+
p.info("Drawing state diagram (v2)", a), T = {}, i.db.getDirection();
|
|
138
|
+
const { securityLevel: r, state: n } = S(), s = n.nodeSpacing || 50, y = n.rankSpacing || 50;
|
|
139
|
+
p.info(i.db.getRootDocV2()), i.db.extract(i.db.getRootDocV2()), p.info(i.db.getRootDocV2());
|
|
140
|
+
const g = i.db.getStates(), o = new tt({
|
|
141
|
+
multigraph: !0,
|
|
142
|
+
compound: !0
|
|
143
|
+
}).setGraph({
|
|
144
|
+
rankdir: E(i.db.getRootDocV2()),
|
|
145
|
+
nodesep: s,
|
|
146
|
+
ranksep: y,
|
|
147
|
+
marginx: 8,
|
|
148
|
+
marginy: 8
|
|
149
|
+
}).setDefaultEdgeLabel(function() {
|
|
150
|
+
return {};
|
|
151
|
+
});
|
|
152
|
+
w(o, void 0, i.db.getRootDocV2(), g, i.db, !0);
|
|
153
|
+
let u;
|
|
154
|
+
r === "sandbox" && (u = A("#i" + a));
|
|
155
|
+
const d = r === "sandbox" ? A(u.nodes()[0].contentDocument.body) : A("body"), l = d.select(`[id="${a}"]`), f = d.select("#" + a + " g");
|
|
156
|
+
await ot(f, o, ["barb"], h, a);
|
|
157
|
+
const b = 8;
|
|
158
|
+
et.insertTitle(l, "statediagramTitleText", n.titleTopMargin, i.db.getDiagramTitle());
|
|
159
|
+
const $ = l.node().getBBox(), R = $.width + b * 2, V = $.height + b * 2;
|
|
160
|
+
l.attr("class", h);
|
|
161
|
+
const N = l.node().getBBox();
|
|
162
|
+
st(l, V, R, n.useMaxWidth);
|
|
163
|
+
const O = `${N.x - b} ${N.y - b} ${R} ${V}`;
|
|
164
|
+
p.debug(`viewBox ${O}`), l.attr("viewBox", O);
|
|
165
|
+
const U = document.querySelectorAll('[id="' + a + '"] .edgeLabel .label');
|
|
166
|
+
for (const D of U) {
|
|
167
|
+
const P = D.getBBox(), m = document.createElementNS("http://www.w3.org/2000/svg", x);
|
|
168
|
+
m.setAttribute("rx", 0), m.setAttribute("ry", 0), m.setAttribute("width", P.width), m.setAttribute("height", P.height), D.insertBefore(m, D.firstChild);
|
|
169
|
+
}
|
|
170
|
+
}, vt = {
|
|
171
|
+
setConf: Tt,
|
|
172
|
+
getClasses: St,
|
|
173
|
+
draw: kt
|
|
174
|
+
}, Nt = {
|
|
175
|
+
parser: F,
|
|
176
|
+
db: W,
|
|
177
|
+
renderer: vt,
|
|
178
|
+
styles: Y,
|
|
179
|
+
init: (t) => {
|
|
180
|
+
t.state || (t.state = {}), t.state.arrowMarkerAbsolute = t.arrowMarkerAbsolute, W.clear();
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
export {
|
|
184
|
+
Nt as diagram
|
|
185
|
+
};
|