@adriansteffan/reactive 0.0.18 → 0.0.19

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/style.css CHANGED
@@ -1,4 +1,4 @@
1
- /*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */@layer theme{:root,:host{--color-red-500:oklch(.637 .237 25.331);--color-red-600:oklch(.577 .245 27.325);--color-blue-400:oklch(.707 .165 254.624);--color-blue-500:oklch(.623 .214 259.815);--color-blue-600:oklch(.546 .245 262.881);--color-gray-200:oklch(.928 .006 264.531);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-2xl:42rem;--container-4xl:56rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--font-weight-semibold:600;--font-weight-bold:700;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-lg:.5rem;--radius-xl:.75rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-font-feature-settings:var(--font-sans--font-feature-settings);--default-font-variation-settings:var(--font-sans--font-variation-settings);--default-mono-font-family:var(--font-mono);--default-mono-font-feature-settings:var(--font-mono--font-feature-settings);--default-mono-font-variation-settings:var(--font-mono--font-variation-settings);--font-sans:Atkinson Hyperlegible,sans-serif;--animate-slide-down:slideDown .8s ease-out forwards;--animate-fade-in:fadeIn .5s ease-out forwards}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{opacity:1;color:color-mix(in oklab,currentColor 50%,transparent)}::placeholder{opacity:1;color:color-mix(in oklab,currentColor 50%,transparent)}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*,:after,:before,::backdrop{border-color:var(--color-gray-200,currentColor)}::file-selector-button{border-color:var(--color-gray-200,currentColor)}}@layer components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.visible\!{visibility:visible!important}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.-z-10{z-index:-10}.z-1{z-index:1}.z-50{z-index:50}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.me-1{margin-inline-end:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-8{margin-top:calc(var(--spacing)*8)}.mt-16{margin-top:calc(var(--spacing)*16)}.mt-20{margin-top:calc(var(--spacing)*20)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.mb-20{margin-bottom:calc(var(--spacing)*20)}.block{display:block}.contents{display:contents}.flex{display:flex}.hidden{display:none}.inline{display:inline}.table{display:table}.h-1{height:calc(var(--spacing)*1)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-12{height:calc(var(--spacing)*12)}.h-full{height:100%}.max-h-60{max-height:calc(var(--spacing)*60)}.min-h-10{min-height:calc(var(--spacing)*10)}.w-3{width:calc(var(--spacing)*3)}.w-4{width:calc(var(--spacing)*4)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-12{width:calc(var(--spacing)*12)}.w-64{width:calc(var(--spacing)*64)}.w-258{width:calc(var(--spacing)*258)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-md{max-width:var(--container-md)}.max-w-prose{max-width:65ch}.flex-1{flex:1}.translate-x-1{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-1{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x)var(--tw-rotate-y)var(--tw-rotate-z)var(--tw-skew-x)var(--tw-skew-y)}.animate-fade-in{animation:var(--animate-fade-in)}.animate-pulse{animation:var(--animate-pulse)}.animate-slide-down{animation:var(--animate-slide-down)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.resize{resize:both}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-black{border-color:var(--color-black)}.border-blue-500{border-color:var(--color-blue-500)}.border-t-transparent{border-top-color:#0000}.bg-black{background-color:var(--color-black)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-red-500{background-color:var(--color-red-500)}.bg-white{background-color:var(--color-white)}.bg-\[radial-gradient\(\#e5e7eb_1px\,transparent_1px\)\]{background-image:radial-gradient(#e5e7eb 1px,#0000 1px)}.\[background-size\:16px_16px\]{background-size:16px 16px}.p-1{padding:calc(var(--spacing)*1)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.text-center{text-align:center}.text-left{text-align:left}.font-sans{font-family:var(--font-sans)}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-black{color:var(--color-black)}.text-blue-400{color:var(--color-blue-400)}.text-red-500{color:var(--color-red-500)}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.shadow-\[2px_2px_0px_0px_rgba\(0\,0\,0\,1\)\]{--tw-shadow:2px 2px 0px 0px var(--tw-shadow-color,#000);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[2px_2px_0px_rgba\(0\,0\,0\,1\)\]{--tw-shadow:2px 2px 0px var(--tw-shadow-color,#000);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\:translate-x-\[2px\]:hover{--tw-translate-x:2px;translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:translate-y-\[2px\]:hover{--tw-translate-y:2px;translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:bg-black:hover{background-color:var(--color-black)}.hover\:bg-blue-600:hover{background-color:var(--color-blue-600)}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:text-white:hover{color:var(--color-white)}.hover\:shadow-\[1px_1px_0px_0px_rgba\(0\,0\,0\,1\)\]:hover{--tw-shadow:1px 1px 0px 0px var(--tw-shadow-color,#000);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-none:hover{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.active\:translate-x-1:active{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.active\:translate-y-1:active{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.active\:shadow-none:active{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (width>=40rem){.sm\:mt-12{margin-top:calc(var(--spacing)*12)}}}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}:root{--font-atkinson:"Atkinson Hyperlegible",system-ui,sans-serif}*{-webkit-touch-callout:none}@font-face{font-family:Atkinson Hyperlegible;src:url(/Atkinson_Hyperlegible/AtkinsonHyperlegible-Regular.ttf)format("truetype");font-weight:400;font-style:normal}@font-face{font-family:Atkinson Hyperlegible;src:url(/Atkinson_Hyperlegible/AtkinsonHyperlegible-Bold.ttf)format("truetype");font-weight:700;font-style:normal}@font-face{font-family:Atkinson Hyperlegible;src:url(/Atkinson_Hyperlegible/AtkinsonHyperlegible-Italic.ttf)format("truetype");font-weight:400;font-style:italic}@font-face{font-family:Atkinson Hyperlegible;src:url(/Atkinson_Hyperlegible/AtkinsonHyperlegible-BoldItalic.ttf)format("truetype");font-weight:700;font-style:italic}.sd-root-modern{background-image:radial-gradient(#e5e7eb 1px,#0000 1px);background-size:16px 16px;font-family:Atkinson Hyperlegible,sans-serif;position:relative;background-color:#fff!important}.sd-root-modern *{font-family:Atkinson Hyperlegible,sans-serif}.sd-row,.sd-clearfix{padding-bottom:20px!important}@media (width<=639px){.sd-imagepicker__item--inline{margin-top:10px;margin-left:auto;margin-right:auto}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false;initial-value:rotateX(0)}@property --tw-rotate-y{syntax:"*";inherits:false;initial-value:rotateY(0)}@property --tw-rotate-z{syntax:"*";inherits:false;initial-value:rotateZ(0)}@property --tw-skew-x{syntax:"*";inherits:false;initial-value:skewX(0)}@property --tw-skew-y{syntax:"*";inherits:false;initial-value:skewY(0)}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}/*!
1
+ /*! tailwindcss v4.0.9 | MIT License | https://tailwindcss.com */@layer theme{:root,:host{--color-red-500:oklch(.637 .237 25.331);--color-red-600:oklch(.577 .245 27.325);--color-blue-400:oklch(.707 .165 254.624);--color-blue-500:oklch(.623 .214 259.815);--color-blue-600:oklch(.546 .245 262.881);--color-gray-200:oklch(.928 .006 264.531);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-md:28rem;--container-2xl:42rem;--container-4xl:56rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--font-weight-semibold:600;--font-weight-bold:700;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-lg:.5rem;--radius-xl:.75rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-font-feature-settings:var(--font-sans--font-feature-settings);--default-font-variation-settings:var(--font-sans--font-variation-settings);--default-mono-font-family:var(--font-mono);--default-mono-font-feature-settings:var(--font-mono--font-feature-settings);--default-mono-font-variation-settings:var(--font-mono--font-variation-settings);--font-sans:Atkinson Hyperlegible,sans-serif;--animate-slide-down:slideDown .8s ease-out forwards;--animate-fade-in:fadeIn .5s ease-out forwards}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{opacity:1;color:color-mix(in oklab,currentColor 50%,transparent)}::placeholder{opacity:1;color:color-mix(in oklab,currentColor 50%,transparent)}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*,:after,:before,::backdrop{border-color:var(--color-gray-200,currentColor)}::file-selector-button{border-color:var(--color-gray-200,currentColor)}}@layer components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.visible\!{visibility:visible!important}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.-z-10{z-index:-10}.z-1{z-index:1}.z-50{z-index:50}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.me-1{margin-inline-end:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-8{margin-top:calc(var(--spacing)*8)}.mt-16{margin-top:calc(var(--spacing)*16)}.mt-20{margin-top:calc(var(--spacing)*20)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.mb-20{margin-bottom:calc(var(--spacing)*20)}.block{display:block}.contents{display:contents}.flex{display:flex}.hidden{display:none}.inline{display:inline}.table{display:table}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-12{height:calc(var(--spacing)*12)}.h-full{height:100%}.max-h-60{max-height:calc(var(--spacing)*60)}.min-h-10{min-height:calc(var(--spacing)*10)}.w-3{width:calc(var(--spacing)*3)}.w-4{width:calc(var(--spacing)*4)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-12{width:calc(var(--spacing)*12)}.w-64{width:calc(var(--spacing)*64)}.w-258{width:calc(var(--spacing)*258)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-md{max-width:var(--container-md)}.max-w-prose{max-width:65ch}.flex-1{flex:1}.translate-x-1{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-1{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x)var(--tw-rotate-y)var(--tw-rotate-z)var(--tw-skew-x)var(--tw-skew-y)}.animate-fade-in{animation:var(--animate-fade-in)}.animate-pulse{animation:var(--animate-pulse)}.animate-slide-down{animation:var(--animate-slide-down)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.resize{resize:both}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-black{border-color:var(--color-black)}.border-blue-500{border-color:var(--color-blue-500)}.border-t-transparent{border-top-color:#0000}.bg-black{background-color:var(--color-black)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-red-500{background-color:var(--color-red-500)}.bg-white{background-color:var(--color-white)}.bg-\[radial-gradient\(\#e5e7eb_1px\,transparent_1px\)\]{background-image:radial-gradient(#e5e7eb 1px,#0000 1px)}.\[background-size\:16px_16px\]{background-size:16px 16px}.p-1{padding:calc(var(--spacing)*1)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.text-center{text-align:center}.text-left{text-align:left}.font-sans{font-family:var(--font-sans)}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-black{color:var(--color-black)}.text-blue-400{color:var(--color-blue-400)}.text-red-500{color:var(--color-red-500)}.text-white{color:var(--color-white)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.shadow-\[2px_2px_0px_0px_rgba\(0\,0\,0\,1\)\]{--tw-shadow:2px 2px 0px 0px var(--tw-shadow-color,#000);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[2px_2px_0px_rgba\(0\,0\,0\,1\)\]{--tw-shadow:2px 2px 0px var(--tw-shadow-color,#000);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\:translate-x-\[2px\]:hover{--tw-translate-x:2px;translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:translate-y-\[2px\]:hover{--tw-translate-y:2px;translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:bg-black:hover{background-color:var(--color-black)}.hover\:bg-blue-600:hover{background-color:var(--color-blue-600)}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:text-white:hover{color:var(--color-white)}.hover\:shadow-\[1px_1px_0px_0px_rgba\(0\,0\,0\,1\)\]:hover{--tw-shadow:1px 1px 0px 0px var(--tw-shadow-color,#000);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-none:hover{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.active\:translate-x-1:active{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.active\:translate-y-1:active{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.active\:shadow-none:active{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (width>=40rem){.sm\:mt-12{margin-top:calc(var(--spacing)*12)}}}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}:root{--font-atkinson:"Atkinson Hyperlegible",system-ui,sans-serif}*{-webkit-touch-callout:none}@font-face{font-family:Atkinson Hyperlegible;src:url(/Atkinson_Hyperlegible/AtkinsonHyperlegible-Regular.ttf)format("truetype");font-weight:400;font-style:normal}@font-face{font-family:Atkinson Hyperlegible;src:url(/Atkinson_Hyperlegible/AtkinsonHyperlegible-Bold.ttf)format("truetype");font-weight:700;font-style:normal}@font-face{font-family:Atkinson Hyperlegible;src:url(/Atkinson_Hyperlegible/AtkinsonHyperlegible-Italic.ttf)format("truetype");font-weight:400;font-style:italic}@font-face{font-family:Atkinson Hyperlegible;src:url(/Atkinson_Hyperlegible/AtkinsonHyperlegible-BoldItalic.ttf)format("truetype");font-weight:700;font-style:italic}.sd-root-modern{background-image:radial-gradient(#e5e7eb 1px,#0000 1px);background-size:16px 16px;font-family:Atkinson Hyperlegible,sans-serif;position:relative;background-color:#fff!important}.sd-root-modern *{font-family:Atkinson Hyperlegible,sans-serif}.sd-row,.sd-clearfix{padding-bottom:20px!important}@media (width<=639px){.sd-imagepicker__item--inline{margin-top:10px;margin-left:auto;margin-right:auto}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false;initial-value:rotateX(0)}@property --tw-rotate-y{syntax:"*";inherits:false;initial-value:rotateY(0)}@property --tw-rotate-z{syntax:"*";inherits:false;initial-value:rotateZ(0)}@property --tw-skew-x{syntax:"*";inherits:false;initial-value:skewX(0)}@property --tw-skew-y{syntax:"*";inherits:false;initial-value:skewY(0)}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}/*!
2
2
  * surveyjs - Survey JavaScript library v1.12.11
3
3
  * Copyright (c) 2015-2024 Devsoft Baltic OÜ - http://surveyjs.io/
4
4
  * License: MIT (http://www.opensource.org/licenses/mit-license.php)
@@ -0,0 +1,435 @@
1
+ import { W as P, b as x, E } from "./mod-BlYvqdtq.js";
2
+ function m(w) {
3
+ const e = w.split("/").filter((t) => t !== "."), r = [];
4
+ return e.forEach((t) => {
5
+ t === ".." && r.length > 0 && r[r.length - 1] !== ".." ? r.pop() : r.push(t);
6
+ }), r.join("/");
7
+ }
8
+ function R(w, e) {
9
+ w = m(w), e = m(e);
10
+ const r = w.split("/"), t = e.split("/");
11
+ return w !== e && r.every((i, n) => i === t[n]);
12
+ }
13
+ class g extends P {
14
+ constructor() {
15
+ super(...arguments), this.DB_VERSION = 1, this.DB_NAME = "Disc", this._writeCmds = ["add", "put", "delete"], this.downloadFile = async (e) => {
16
+ var r, t;
17
+ const i = x(e, e.webFetchExtra), n = await fetch(e.url, i);
18
+ let s;
19
+ if (!e.progress)
20
+ s = await n.blob();
21
+ else if (!(n != null && n.body))
22
+ s = new Blob();
23
+ else {
24
+ const c = n.body.getReader();
25
+ let o = 0;
26
+ const d = [], h = n.headers.get("content-type"), y = parseInt(n.headers.get("content-length") || "0", 10);
27
+ for (; ; ) {
28
+ const { done: f, value: p } = await c.read();
29
+ if (f)
30
+ break;
31
+ d.push(p), o += (p == null ? void 0 : p.length) || 0;
32
+ const b = {
33
+ url: e.url,
34
+ bytes: o,
35
+ contentLength: y
36
+ };
37
+ this.notifyListeners("progress", b);
38
+ }
39
+ const u = new Uint8Array(o);
40
+ let l = 0;
41
+ for (const f of d)
42
+ typeof f > "u" || (u.set(f, l), l += f.length);
43
+ s = new Blob([u.buffer], { type: h || void 0 });
44
+ }
45
+ return { path: (await this.writeFile({
46
+ path: e.path,
47
+ directory: (r = e.directory) !== null && r !== void 0 ? r : void 0,
48
+ recursive: (t = e.recursive) !== null && t !== void 0 ? t : !1,
49
+ data: s
50
+ })).uri, blob: s };
51
+ };
52
+ }
53
+ async initDb() {
54
+ if (this._db !== void 0)
55
+ return this._db;
56
+ if (!("indexedDB" in window))
57
+ throw this.unavailable("This browser doesn't support IndexedDB");
58
+ return new Promise((e, r) => {
59
+ const t = indexedDB.open(this.DB_NAME, this.DB_VERSION);
60
+ t.onupgradeneeded = g.doUpgrade, t.onsuccess = () => {
61
+ this._db = t.result, e(t.result);
62
+ }, t.onerror = () => r(t.error), t.onblocked = () => {
63
+ console.warn("db blocked");
64
+ };
65
+ });
66
+ }
67
+ static doUpgrade(e) {
68
+ const t = e.target.result;
69
+ switch (e.oldVersion) {
70
+ case 0:
71
+ case 1:
72
+ default:
73
+ t.objectStoreNames.contains("FileStorage") && t.deleteObjectStore("FileStorage"), t.createObjectStore("FileStorage", { keyPath: "path" }).createIndex("by_folder", "folder");
74
+ }
75
+ }
76
+ async dbRequest(e, r) {
77
+ const t = this._writeCmds.indexOf(e) !== -1 ? "readwrite" : "readonly";
78
+ return this.initDb().then((i) => new Promise((n, s) => {
79
+ const o = i.transaction(["FileStorage"], t).objectStore("FileStorage")[e](...r);
80
+ o.onsuccess = () => n(o.result), o.onerror = () => s(o.error);
81
+ }));
82
+ }
83
+ async dbIndexRequest(e, r, t) {
84
+ const i = this._writeCmds.indexOf(r) !== -1 ? "readwrite" : "readonly";
85
+ return this.initDb().then((n) => new Promise((s, a) => {
86
+ const h = n.transaction(["FileStorage"], i).objectStore("FileStorage").index(e)[r](...t);
87
+ h.onsuccess = () => s(h.result), h.onerror = () => a(h.error);
88
+ }));
89
+ }
90
+ getPath(e, r) {
91
+ const t = r !== void 0 ? r.replace(/^[/]+|[/]+$/g, "") : "";
92
+ let i = "";
93
+ return e !== void 0 && (i += "/" + e), r !== "" && (i += "/" + t), i;
94
+ }
95
+ async clear() {
96
+ (await this.initDb()).transaction(["FileStorage"], "readwrite").objectStore("FileStorage").clear();
97
+ }
98
+ /**
99
+ * Read a file from disk
100
+ * @param options options for the file read
101
+ * @return a promise that resolves with the read file data result
102
+ */
103
+ async readFile(e) {
104
+ const r = this.getPath(e.directory, e.path), t = await this.dbRequest("get", [r]);
105
+ if (t === void 0)
106
+ throw Error("File does not exist.");
107
+ return { data: t.content ? t.content : "" };
108
+ }
109
+ /**
110
+ * Write a file to disk in the specified location on device
111
+ * @param options options for the file write
112
+ * @return a promise that resolves with the file write result
113
+ */
114
+ async writeFile(e) {
115
+ const r = this.getPath(e.directory, e.path);
116
+ let t = e.data;
117
+ const i = e.encoding, n = e.recursive, s = await this.dbRequest("get", [r]);
118
+ if (s && s.type === "directory")
119
+ throw Error("The supplied path is a directory.");
120
+ const a = r.substr(0, r.lastIndexOf("/"));
121
+ if (await this.dbRequest("get", [a]) === void 0) {
122
+ const h = a.indexOf("/", 1);
123
+ if (h !== -1) {
124
+ const y = a.substr(h);
125
+ await this.mkdir({
126
+ path: y,
127
+ directory: e.directory,
128
+ recursive: n
129
+ });
130
+ }
131
+ }
132
+ if (!i && !(t instanceof Blob) && (t = t.indexOf(",") >= 0 ? t.split(",")[1] : t, !this.isBase64String(t)))
133
+ throw Error("The supplied data is not valid base64 content.");
134
+ const o = Date.now(), d = {
135
+ path: r,
136
+ folder: a,
137
+ type: "file",
138
+ size: t instanceof Blob ? t.size : t.length,
139
+ ctime: o,
140
+ mtime: o,
141
+ content: t
142
+ };
143
+ return await this.dbRequest("put", [d]), {
144
+ uri: d.path
145
+ };
146
+ }
147
+ /**
148
+ * Append to a file on disk in the specified location on device
149
+ * @param options options for the file append
150
+ * @return a promise that resolves with the file write result
151
+ */
152
+ async appendFile(e) {
153
+ const r = this.getPath(e.directory, e.path);
154
+ let t = e.data;
155
+ const i = e.encoding, n = r.substr(0, r.lastIndexOf("/")), s = Date.now();
156
+ let a = s;
157
+ const c = await this.dbRequest("get", [r]);
158
+ if (c && c.type === "directory")
159
+ throw Error("The supplied path is a directory.");
160
+ if (await this.dbRequest("get", [n]) === void 0) {
161
+ const h = n.indexOf("/", 1);
162
+ if (h !== -1) {
163
+ const y = n.substr(h);
164
+ await this.mkdir({
165
+ path: y,
166
+ directory: e.directory,
167
+ recursive: !0
168
+ });
169
+ }
170
+ }
171
+ if (!i && !this.isBase64String(t))
172
+ throw Error("The supplied data is not valid base64 content.");
173
+ if (c !== void 0) {
174
+ if (c.content instanceof Blob)
175
+ throw Error("The occupied entry contains a Blob object which cannot be appended to.");
176
+ c.content !== void 0 && !i ? t = btoa(atob(c.content) + atob(t)) : t = c.content + t, a = c.ctime;
177
+ }
178
+ const d = {
179
+ path: r,
180
+ folder: n,
181
+ type: "file",
182
+ size: t.length,
183
+ ctime: a,
184
+ mtime: s,
185
+ content: t
186
+ };
187
+ await this.dbRequest("put", [d]);
188
+ }
189
+ /**
190
+ * Delete a file from disk
191
+ * @param options options for the file delete
192
+ * @return a promise that resolves with the deleted file data result
193
+ */
194
+ async deleteFile(e) {
195
+ const r = this.getPath(e.directory, e.path);
196
+ if (await this.dbRequest("get", [r]) === void 0)
197
+ throw Error("File does not exist.");
198
+ if ((await this.dbIndexRequest("by_folder", "getAllKeys", [
199
+ IDBKeyRange.only(r)
200
+ ])).length !== 0)
201
+ throw Error("Folder is not empty.");
202
+ await this.dbRequest("delete", [r]);
203
+ }
204
+ /**
205
+ * Create a directory.
206
+ * @param options options for the mkdir
207
+ * @return a promise that resolves with the mkdir result
208
+ */
209
+ async mkdir(e) {
210
+ const r = this.getPath(e.directory, e.path), t = e.recursive, i = r.substr(0, r.lastIndexOf("/")), n = (r.match(/\//g) || []).length, s = await this.dbRequest("get", [i]), a = await this.dbRequest("get", [r]);
211
+ if (n === 1)
212
+ throw Error("Cannot create Root directory");
213
+ if (a !== void 0)
214
+ throw Error("Current directory does already exist.");
215
+ if (!t && n !== 2 && s === void 0)
216
+ throw Error("Parent directory must exist");
217
+ if (t && n !== 2 && s === void 0) {
218
+ const d = i.substr(i.indexOf("/", 1));
219
+ await this.mkdir({
220
+ path: d,
221
+ directory: e.directory,
222
+ recursive: t
223
+ });
224
+ }
225
+ const c = Date.now(), o = {
226
+ path: r,
227
+ folder: i,
228
+ type: "directory",
229
+ size: 0,
230
+ ctime: c,
231
+ mtime: c
232
+ };
233
+ await this.dbRequest("put", [o]);
234
+ }
235
+ /**
236
+ * Remove a directory
237
+ * @param options the options for the directory remove
238
+ */
239
+ async rmdir(e) {
240
+ const { path: r, directory: t, recursive: i } = e, n = this.getPath(t, r), s = await this.dbRequest("get", [n]);
241
+ if (s === void 0)
242
+ throw Error("Folder does not exist.");
243
+ if (s.type !== "directory")
244
+ throw Error("Requested path is not a directory");
245
+ const a = await this.readdir({ path: r, directory: t });
246
+ if (a.files.length !== 0 && !i)
247
+ throw Error("Folder is not empty");
248
+ for (const c of a.files) {
249
+ const o = `${r}/${c.name}`;
250
+ (await this.stat({ path: o, directory: t })).type === "file" ? await this.deleteFile({ path: o, directory: t }) : await this.rmdir({ path: o, directory: t, recursive: i });
251
+ }
252
+ await this.dbRequest("delete", [n]);
253
+ }
254
+ /**
255
+ * Return a list of files from the directory (not recursive)
256
+ * @param options the options for the readdir operation
257
+ * @return a promise that resolves with the readdir directory listing result
258
+ */
259
+ async readdir(e) {
260
+ const r = this.getPath(e.directory, e.path), t = await this.dbRequest("get", [r]);
261
+ if (e.path !== "" && t === void 0)
262
+ throw Error("Folder does not exist.");
263
+ const i = await this.dbIndexRequest("by_folder", "getAllKeys", [IDBKeyRange.only(r)]);
264
+ return { files: await Promise.all(i.map(async (s) => {
265
+ let a = await this.dbRequest("get", [s]);
266
+ return a === void 0 && (a = await this.dbRequest("get", [s + "/"])), {
267
+ name: s.substring(r.length + 1),
268
+ type: a.type,
269
+ size: a.size,
270
+ ctime: a.ctime,
271
+ mtime: a.mtime,
272
+ uri: a.path
273
+ };
274
+ })) };
275
+ }
276
+ /**
277
+ * Return full File URI for a path and directory
278
+ * @param options the options for the stat operation
279
+ * @return a promise that resolves with the file stat result
280
+ */
281
+ async getUri(e) {
282
+ const r = this.getPath(e.directory, e.path);
283
+ let t = await this.dbRequest("get", [r]);
284
+ return t === void 0 && (t = await this.dbRequest("get", [r + "/"])), {
285
+ uri: (t == null ? void 0 : t.path) || r
286
+ };
287
+ }
288
+ /**
289
+ * Return data about a file
290
+ * @param options the options for the stat operation
291
+ * @return a promise that resolves with the file stat result
292
+ */
293
+ async stat(e) {
294
+ const r = this.getPath(e.directory, e.path);
295
+ let t = await this.dbRequest("get", [r]);
296
+ if (t === void 0 && (t = await this.dbRequest("get", [r + "/"])), t === void 0)
297
+ throw Error("Entry does not exist.");
298
+ return {
299
+ type: t.type,
300
+ size: t.size,
301
+ ctime: t.ctime,
302
+ mtime: t.mtime,
303
+ uri: t.path
304
+ };
305
+ }
306
+ /**
307
+ * Rename a file or directory
308
+ * @param options the options for the rename operation
309
+ * @return a promise that resolves with the rename result
310
+ */
311
+ async rename(e) {
312
+ await this._copy(e, !0);
313
+ }
314
+ /**
315
+ * Copy a file or directory
316
+ * @param options the options for the copy operation
317
+ * @return a promise that resolves with the copy result
318
+ */
319
+ async copy(e) {
320
+ return this._copy(e, !1);
321
+ }
322
+ async requestPermissions() {
323
+ return { publicStorage: "granted" };
324
+ }
325
+ async checkPermissions() {
326
+ return { publicStorage: "granted" };
327
+ }
328
+ /**
329
+ * Function that can perform a copy or a rename
330
+ * @param options the options for the rename operation
331
+ * @param doRename whether to perform a rename or copy operation
332
+ * @return a promise that resolves with the result
333
+ */
334
+ async _copy(e, r = !1) {
335
+ let { toDirectory: t } = e;
336
+ const { to: i, from: n, directory: s } = e;
337
+ if (!i || !n)
338
+ throw Error("Both to and from must be provided");
339
+ t || (t = s);
340
+ const a = this.getPath(s, n), c = this.getPath(t, i);
341
+ if (a === c)
342
+ return {
343
+ uri: c
344
+ };
345
+ if (R(a, c))
346
+ throw Error("To path cannot contain the from path");
347
+ let o;
348
+ try {
349
+ o = await this.stat({
350
+ path: i,
351
+ directory: t
352
+ });
353
+ } catch {
354
+ const l = i.split("/");
355
+ l.pop();
356
+ const f = l.join("/");
357
+ if (l.length > 0 && (await this.stat({
358
+ path: f,
359
+ directory: t
360
+ })).type !== "directory")
361
+ throw new Error("Parent directory of the to path is a file");
362
+ }
363
+ if (o && o.type === "directory")
364
+ throw new Error("Cannot overwrite a directory with a file");
365
+ const d = await this.stat({
366
+ path: n,
367
+ directory: s
368
+ }), h = async (u, l, f) => {
369
+ const p = this.getPath(t, u), b = await this.dbRequest("get", [p]);
370
+ b.ctime = l, b.mtime = f, await this.dbRequest("put", [b]);
371
+ }, y = d.ctime ? d.ctime : Date.now();
372
+ switch (d.type) {
373
+ case "file": {
374
+ const u = await this.readFile({
375
+ path: n,
376
+ directory: s
377
+ });
378
+ r && await this.deleteFile({
379
+ path: n,
380
+ directory: s
381
+ });
382
+ let l;
383
+ !(u.data instanceof Blob) && !this.isBase64String(u.data) && (l = E.UTF8);
384
+ const f = await this.writeFile({
385
+ path: i,
386
+ directory: t,
387
+ data: u.data,
388
+ encoding: l
389
+ });
390
+ return r && await h(i, y, d.mtime), f;
391
+ }
392
+ case "directory": {
393
+ if (o)
394
+ throw Error("Cannot move a directory over an existing object");
395
+ try {
396
+ await this.mkdir({
397
+ path: i,
398
+ directory: t,
399
+ recursive: !1
400
+ }), r && await h(i, y, d.mtime);
401
+ } catch {
402
+ }
403
+ const u = (await this.readdir({
404
+ path: n,
405
+ directory: s
406
+ })).files;
407
+ for (const l of u)
408
+ await this._copy({
409
+ from: `${n}/${l.name}`,
410
+ to: `${i}/${l.name}`,
411
+ directory: s,
412
+ toDirectory: t
413
+ }, r);
414
+ r && await this.rmdir({
415
+ path: n,
416
+ directory: s
417
+ });
418
+ }
419
+ }
420
+ return {
421
+ uri: c
422
+ };
423
+ }
424
+ isBase64String(e) {
425
+ try {
426
+ return btoa(atob(e)) == e;
427
+ } catch {
428
+ return !1;
429
+ }
430
+ }
431
+ }
432
+ g._debug = !0;
433
+ export {
434
+ g as FilesystemWeb
435
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adriansteffan/reactive",
3
- "version": "0.0.18",
3
+ "version": "0.0.19",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "dev": "vite",
@@ -31,6 +31,9 @@
31
31
  "url": "https://github.com/adriansteffan/reactive/issues"
32
32
  },
33
33
  "dependencies": {
34
+ "@capacitor/core": "^7.0.1",
35
+ "@capacitor/filesystem": "^7.0.0",
36
+ "@capacitor/share": "^7.0.0",
34
37
  "@tanstack/react-query": "^5.61.3",
35
38
  "@tanstack/react-query-devtools": "^5.61.3",
36
39
  "@zip.js/zip.js": "^2.7.53",
@@ -0,0 +1,43 @@
1
+ import { BaseComponentProps } from '../utils/common';
2
+ import Text from '../components/text';
3
+
4
+ function enterFullscreen(element: any) {
5
+ if (element.requestFullscreen) {
6
+ element.requestFullscreen();
7
+ } else if (element.mozRequestFullScreen) {
8
+ // Firefox
9
+ element.mozRequestFullScreen();
10
+ } else if (element.webkitRequestFullscreen) {
11
+ // Chrome, Safari and Opera
12
+ element.webkitRequestFullscreen();
13
+ } else if (element.msRequestFullscreen) {
14
+ // IE/Edge
15
+ element.msRequestFullscreen();
16
+ }
17
+ }
18
+
19
+ export default function EnterFullscreen({
20
+ content,
21
+ buttonText,
22
+ next,
23
+ }: { prolificCode?: string; content?: React.ReactNode; buttonText?: string } & BaseComponentProps) {
24
+ const contentWrap = (
25
+ <div className='flex flex-col items-center'>
26
+ {!!content && content}
27
+ {!content && (
28
+ <p className=''>Please click the Button below to enter Fullscreen mode.</p>
29
+ )}
30
+ </div>
31
+ );
32
+
33
+ return (
34
+ <Text
35
+ content={contentWrap}
36
+ buttonText={buttonText ?? 'Enter Fullscreen Mode'}
37
+ next={() => {
38
+ enterFullscreen(document.documentElement);
39
+ next({});
40
+ }}
41
+ />
42
+ );
43
+ }
@@ -0,0 +1,23 @@
1
+ import { BaseComponentProps } from '../utils/common';
2
+ import { useEffect } from 'react';
3
+
4
+ function exitFullscreen() {
5
+ if (document.exitFullscreen) {
6
+ document.exitFullscreen();
7
+ } else if ((document as any).mozCancelFullScreen) {
8
+ (document as any).mozCancelFullScreen();
9
+ } else if ((document as any).webkitExitFullscreen) {
10
+ (document as any).webkitExitFullscreen();
11
+ } else if ((document as any).msExitFullscreen) {
12
+ (document as any).msExitFullscreen();
13
+ }
14
+ }
15
+
16
+ export default function ExitFullscreen({ next }: BaseComponentProps) {
17
+ useEffect(() => {
18
+ exitFullscreen();
19
+ next({});
20
+ }, []);
21
+
22
+ return <></>;
23
+ }
@@ -9,6 +9,8 @@ import Upload from './upload';
9
9
  import Text from './text';
10
10
  import ProlificEnding from './prolificending';
11
11
  import Quest from './quest';
12
+ import EnterFullscreen from './enterfullscreen';
13
+ import ExitFullscreen from './exitfullscreen';
12
14
  import MicrophoneCheck from './microphonecheck';
13
15
 
14
16
  // Default Custom Questions
@@ -22,6 +24,8 @@ type ComponentsMap = {
22
24
  const defaultComponents: ComponentsMap = {
23
25
  Text,
24
26
  ProlificEnding,
27
+ EnterFullscreen,
28
+ ExitFullscreen,
25
29
  Quest,
26
30
  Upload,
27
31
  MicrophoneCheck,