@rogieking/figui3 6.10.0 → 6.12.0
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/components.css +64 -27
- package/dist/components.css +1 -1
- package/dist/fig-editor.css +1 -1
- package/dist/fig-editor.js +73 -67
- package/dist/fig-lab.css +1 -1
- package/dist/fig-lab.js +21 -21
- package/dist/fig.css +1 -1
- package/dist/fig.js +36 -48
- package/fig-editor.css +12 -13
- package/fig-editor.js +343 -356
- package/fig-lab.css +79 -3
- package/fig-lab.js +459 -11
- package/fig.js +662 -230
- package/package.json +1 -1
package/dist/fig-editor.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
fig-layer{--indent:var(--spacer-3);color:var(--figma-color-text);user-select:none;width:100%;padding:0 var(--spacer-3);border-radius:var(--radius-medium);display:block;position:relative}fig-layer:has(fig-layer)>.fig-layer-row>.fig-layer-chevron{visibility:visible}fig-layer>.fig-layer-row{align-items:center;gap:var(--spacer-1);padding:var(--spacer-1) var(--spacer-2);height:var(--spacer-4);border-radius:var(--radius-medium);display:flex;position:relative}fig-layer>.fig-layer-row .fig-layer-chevron{mask-image:var(--icon-16-chevron);visibility:hidden;background:var(--figma-color-text-tertiary);width:var(--spacer-3);height:var(--spacer-3);left:calc(var(--spacer-3) * -1);top:var(--spacer-1);flex-shrink:0;transition:transform .15s;display:flex;position:absolute;rotate:-90deg;mask-position:50%;mask-size:contain;mask-repeat:no-repeat}fig-layer>.fig-layer-row:hover{background:var(--figma-color-bg-secondary)}fig-layer>.fig-layer-row:hover .fig-layer-actions{opacity:1}fig-layer>.fig-layer-row .fig-layer-icon{width:var(--spacer-3);height:var(--spacer-3);color:var(--figma-color-icon-tertiary);margin-left:calc(var(--spacer-1) * -1);flex-shrink:0}fig-layer>.fig-layer-row>label{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--figma-color-text);flex:1;overflow:hidden}fig-layer .fig-layer-actions{margin-right:calc(-1 * var(--spacer-1));opacity:0;flex-shrink:0;gap:0;transition:opacity .15s;display:flex}fig-layer .fig-layer-actions>*{flex-shrink:0}fig-layer>fig-layer{margin-top:1px;padding:0}fig-layer>fig-layer .fig-layer-row{padding-left:var(--indent)}fig-layer:not([open])>fig-layer,fig-layer[open=false]>fig-layer{display:none}fig-layer[open]:not([open=false])>.fig-layer-row>.fig-layer-chevron{rotate:0deg}fig-layer[visible=false]>.fig-layer-row>label{color:var(--figma-color-text-tertiary)}fig-layer[selected]:not([selected=false])>.fig-layer-row{background:var(--figma-color-bg-selected)}fig-layer[selected]:not([selected=false])>.fig-layer-row>.fig-layer-icon{color:var(--figma-color-icon)}:root,:host{--icon-24-eyedropper:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M15.1592 5.65801C16.0376 4.78045 17.4621 4.78055 18.3408 5.65899L18.4951 5.82989C19.1671 6.65442 19.168 7.84476 18.4951 8.66973L18.3408 8.84063L16.6455 10.533C17.1104 11.083 17.1181 11.889 16.6641 12.4461L16.5605 12.5604C16.0111 13.1097 15.1425 13.1428 14.5537 12.6629L14.5342 12.6453L10.0908 17.0916C9.6188 17.5633 8.98876 17.7764 8.375 17.742L7.56055 18.5574C6.97441 19.1432 6.02451 19.1422 5.43945 18.5584V18.5574C4.8538 17.9718 4.85405 17.0221 5.43945 16.4363L6.25586 15.618C6.22412 15.0058 6.44026 14.3794 6.90918 13.91L11.3516 9.46367C10.856 8.87434 10.885 7.99381 11.4395 7.43926L11.5537 7.33574C12.1094 6.88283 12.9136 6.88854 13.4639 7.35137L15.1592 5.65801ZM7.61621 14.617C7.33755 14.8961 7.21782 15.2747 7.25781 15.6385C7.27925 15.8351 7.24419 16.0445 7.10449 16.1844L6.14648 17.1434C5.9516 17.3387 5.95135 17.6553 6.14648 17.8504C6.34167 18.0449 6.65842 18.0451 6.85352 17.8504L7.80859 16.8943C7.94931 16.7536 8.16065 16.7184 8.3584 16.741C8.72329 16.7828 9.10374 16.6643 9.38379 16.3846L13.8223 11.9432L12.0547 10.1756L7.61621 14.617ZM17.6338 6.36602C17.1458 5.87828 16.3544 5.8783 15.8662 6.36602L14.084 8.14629L14.0186 8.20586C13.6767 8.48476 13.1722 8.46484 12.8535 8.14629C12.6583 7.95131 12.3417 7.95119 12.1465 8.14629C11.9514 8.34148 11.9515 8.65808 12.1465 8.85332L15.1465 11.8533C15.3175 12.024 15.5814 12.0451 15.7754 11.9168L15.8535 11.8533C16.0486 11.6582 16.0484 11.3416 15.8535 11.1463V11.1453C15.8524 11.1443 15.8507 11.1434 15.8496 11.1424C15.5128 10.8013 15.514 10.2513 15.8535 9.91192L17.6338 8.1336C18.1216 7.6457 18.1213 6.85425 17.6338 6.36602Z' fill='black' fill-opacity='0.9'/%3E%3C/svg%3E")}dialog[is=fig-toast]{contain:layout paint;--z-index:999999;z-index:var(--z-index);box-shadow:var(--figma-elevation-100);border-radius:var(--radius-large);padding:var(--spacer-2) var(--spacer-3);align-items:center;gap:var(--spacer-2);min-width:0;height:2.5rem;color:var(--figma-color-text);background-color:var(--figma-color-bg);justify-content:center;&[open]{display:flex}& p{color:inherit;font-weight:var(--body-medium-strong-fontWeight);margin:0;padding:0}& hr[vertical]{margin:0}& fig-button:last-child{margin-right:calc(var(--spacer-2) * -1)}&[theme=dark]{color-scheme:dark}&[theme=light]{color-scheme:light}&[theme=danger]{background-color:var(--figma-color-bg-danger);color-scheme:dark}&[theme=brand]{background-color:var(--figma-color-bg-brand);color-scheme:dark}&[theme=success]{background-color:var(--figma-color-bg-success);color-scheme:dark}}fig-fill-picker{display:contents;&>[slot^=mode-]{display:none}}.fig-fill-picker-dialog{contain:layout;width:240px;padding:0;&>fig-header{padding:var(--spacer-2);min-width:0;overflow:hidden}& fig-tab{padding:var(--spacer-1) var(--spacer-1);font-size:.6875rem}&>fig-content{padding-bottom:var(--spacer-2-5)}& .fig-fill-picker-type-label{font-size:var(--font-size-small);font-weight:var(--font-weight-medium);color:var(--figma-color-text);padding:var(--spacer-1) var(--spacer-2)}& .fig-fill-picker-gamut{margin-left:auto}& .fig-fill-picker-tab{display:none;&:first-child{display:block}}& fig-preview{overflow:visible}& .fig-fill-picker-color-area{aspect-ratio:1;width:calc(100% - var(--spacer-3) * 2);margin:var(--spacer-2) var(--spacer-3);&>:not(fig-handle){border-radius:inherit;place-self:center;width:100%;height:100%}& canvas{border-radius:var(--radius-medium);width:100%;height:100%}}& .fig-fill-picker-color-area fig-handle{z-index:1}& .fig-fill-picker-sliders{grid-template-columns:calc(3.5rem + var(--spacer-3)) 1fr;padding-right:var(--spacer-3);align-items:center;gap:var(--spacer-2);padding-bottom:var(--spacer-1);grid-template-rows:1fr 1fr;display:grid;& .fig-fill-picker-eyedropper{margin-right:calc(var(--spacer-3) * -1);aspect-ratio:1;grid-area:1/1/3;place-self:center;width:3.5rem;height:3.5rem}& fig-slider{grid-column:2;min-width:0}}& .fig-fill-picker-inputs{& .fig-fill-picker-input-fields{flex:1;min-width:0;display:flex;& .input-combo,& fig-input-text{flex:1;min-width:0}}}& .fig-fill-picker-gradient-preview{aspect-ratio:auto;width:calc(100% - var(--spacer-3) * 2);margin:var(--spacer-2) var(--spacer-3);margin-top:calc(var(--spacer-4) + var(--spacer-1));background:0 0;&:after{display:none}}& .fig-fill-picker-gradient-header{padding-right:var(--spacer-2);padding-left:var(--spacer-3);gap:var(--spacer-2);display:flex;& .fig-fill-picker-gradient-type{flex:1;min-width:0}&>:last-child fig-button{margin-left:auto}& .fig-fill-picker-gradient-center{& fig-input-number{width:48px}}}& .fig-fill-picker-gradient-stops{& .fig-fill-picker-gradient-stops-header{&>span{flex:1}}}& .fig-fill-picker-gradient-stops-list{gap:var(--spacer-1);flex-direction:column;display:flex}& .fig-fill-picker-gradient-stop-row{padding-right:var(--spacer-2);padding-left:var(--spacer-3);gap:var(--spacer-2);display:flex;&>.fig-fill-picker-stop-position{flex:0 3rem;width:3rem;min-width:0}& .fig-fill-picker-stop-color{flex:1;min-width:0;& fig-input-text{min-width:0}}& .fig-fill-picker-stop-remove{flex-shrink:0}}& .fig-fill-picker-media-header{& .fig-fill-picker-scale-mode{flex:none}& .fig-fill-picker-scale{width:56px}}& .fig-fill-picker-media-preview{aspect-ratio:1;margin:var(--spacer-2) var(--spacer-3) var(--spacer-1) var(--spacer-3);border-radius:var(--radius-medium);justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden;&.dragover{outline:2px dashed var(--figma-color-border-brand);outline-offset:-2px}&.has-media{& fig-button{visibility:hidden}&:hover{& fig-button{visibility:visible}}}}& .fig-fill-picker-checkerboard{background-image:linear-gradient(45deg, var(--figma-color-bg-tertiary) 25%, transparent 25%), linear-gradient(-45deg, var(--figma-color-bg-tertiary) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, var(--figma-color-bg-tertiary) 75%), linear-gradient(-45deg, transparent 75%, var(--figma-color-bg-tertiary) 75%);background-position:0 0,0 8px,8px -8px,-8px 0;background-size:16px 16px;position:absolute;inset:0}& div.fig-fill-picker-image-preview{width:100%;height:100%;display:none;position:absolute;inset:0}& fig-image.fig-fill-picker-image-preview{width:auto;max-width:none;max-height:none}& video.fig-fill-picker-video-preview{object-fit:cover;width:100%;height:100%;display:none;position:absolute;inset:0}& fig-media.fig-fill-picker-video-preview{width:auto;max-width:none;max-height:none}& .fig-fill-picker-upload{z-index:1;position:relative}& .fig-fill-picker-webcam-preview{aspect-ratio:1;width:calc(100% - var(--spacer-3) * 2);max-width:none;max-height:none;margin:0 var(--spacer-3);border-radius:var(--radius-medium);margin:var(--spacer-2) var(--spacer-3);display:flex;position:relative;overflow:hidden}& .fig-fill-picker-webcam-video{object-fit:cover;width:100%;height:100%}& .fig-fill-picker-webcam-status{background:var(--figma-color-bg-secondary);color:var(--figma-color-text-secondary);justify-content:center;align-items:center;font-size:.75rem;display:flex;position:absolute;inset:0}& .fig-fill-picker-webcam-controls{padding:0 var(--spacer-3);gap:var(--spacer-1);display:flex;& .fig-fill-picker-webcam-capture{width:100%}}}
|
|
1
|
+
fig-layer{--indent:var(--spacer-3);color:var(--figma-color-text);user-select:none;width:100%;padding:0 var(--spacer-3);border-radius:var(--radius-medium);display:block;position:relative}fig-layer:has(fig-layer)>.fig-layer-row>.fig-layer-chevron{visibility:visible}fig-layer>.fig-layer-row{align-items:center;gap:var(--spacer-1);padding:var(--spacer-1) var(--spacer-2);height:var(--spacer-4);border-radius:var(--radius-medium);display:flex;position:relative}fig-layer>.fig-layer-row .fig-layer-chevron{mask-image:var(--icon-16-chevron);visibility:hidden;background:var(--figma-color-text-tertiary);width:var(--spacer-3);height:var(--spacer-3);left:calc(var(--spacer-3) * -1);top:var(--spacer-1);flex-shrink:0;transition:transform .15s;display:flex;position:absolute;rotate:-90deg;mask-position:50%;mask-size:contain;mask-repeat:no-repeat}fig-layer>.fig-layer-row:hover{background:var(--figma-color-bg-secondary)}fig-layer>.fig-layer-row:hover .fig-layer-actions{opacity:1}fig-layer>.fig-layer-row .fig-layer-icon{width:var(--spacer-3);height:var(--spacer-3);color:var(--figma-color-icon-tertiary);margin-left:calc(var(--spacer-1) * -1);flex-shrink:0}fig-layer>.fig-layer-row>label{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--figma-color-text);flex:1;overflow:hidden}fig-layer .fig-layer-actions{margin-right:calc(-1 * var(--spacer-1));opacity:0;flex-shrink:0;gap:0;transition:opacity .15s;display:flex}fig-layer .fig-layer-actions>*{flex-shrink:0}fig-layer>fig-layer{margin-top:1px;padding:0}fig-layer>fig-layer .fig-layer-row{padding-left:var(--indent)}fig-layer:not([open])>fig-layer,fig-layer[open=false]>fig-layer{display:none}fig-layer[open]:not([open=false])>.fig-layer-row>.fig-layer-chevron{rotate:0deg}fig-layer[visible=false]>.fig-layer-row>label{color:var(--figma-color-text-tertiary)}fig-layer[selected]:not([selected=false])>.fig-layer-row{background:var(--figma-color-bg-selected)}fig-layer[selected]:not([selected=false])>.fig-layer-row>.fig-layer-icon{color:var(--figma-color-icon)}fig-field-slider{--fig-field-slider-elastic-distance:calc(var(--spacer-2) + .25rem);--fig-field-slider-elastic-size:0px;--fig-field-slider-elastic-scale:1;--fig-field-slider-elastic-origin:left center;--fig-field-slider-elastic-transition:.18s cubic-bezier(.2, 1.45, .35, 1);--fig-field-slider-height:2rem;--fig-field-slider-vertical-padding:var(--spacer-1);--fig-field-slider-horizontal-padding:var(--spacer-3);--figma-focus-outline-offset:1px;--fig-field-slider-progress-shadow:inset 0px .75px 0px 0px light-dark(#0000,#ffffff1a);--field-text-shadow:0 1px 1.5px light-dark(#0003,#0003);--fig-field-slider-fig-slider-height:calc(var(--fig-field-slider-height) - var(--fig-field-slider-vertical-padding) * 2);--fig-field-slider-fig-slider-thumb-height:calc(var(--fig-field-slider-fig-slider-height) - var(--spacer-2-5));width:100%;height:var(--fig-field-slider-height);border-radius:var(--radius-medium);transform-origin:var(--fig-field-slider-elastic-origin);transition:transform var(--fig-field-slider-elastic-transition);padding-top:var(--fig-field-slider-vertical-padding);padding-bottom:var(--fig-field-slider-vertical-padding);padding-left:var(--fig-field-slider-horizontal-padding);padding-right:var(--fig-field-slider-horizontal-padding);display:block;position:relative;&[size=large]{--fig-field-slider-vertical-padding:0px;--fig-field-slider-fig-slider-thumb-height:calc(var(--fig-field-slider-fig-slider-height) - var(--spacer-3))}& label{pointer-events:none;z-index:1}&[disabled]:not([disabled=false]){pointer-events:none;& label,& input{color:var(--figma-color-text-disabled)}& fig-slider{filter:grayscale()opacity(.5)}}&[type=hue]{& label,& input{text-shadow:var(--field-text-shadow);color:#fff}}&[type=opacity] fig-slider{--slider-checkerboard:var(--checkerboard)}& fig-field:not([direction=vertical]){padding-left:var(--spacer-2);height:100%;display:flex;position:relative;&>label{width:100%;min-width:0;max-width:none;color:var(--figma-color-text);align-items:center;gap:var(--spacer-1);flex:auto;height:100%;margin:0;padding:0;display:flex;& fig-icon:first-child{margin-left:calc(var(--spacer-1) * -1)}}& fig-slider{--slider-height:var(--fig-field-slider-fig-slider-height);--slider-field-height:calc(var(--fig-field-slider-height) - var(--fig-field-slider-vertical-padding) * 2);--slider-thumb-width:var(--spacer-1);--slider-thumb-color:light-dark(var(--figma-color-text-secondary),var(--figma-color-text));--slider-thumb-height:var(--fig-field-slider-fig-slider-thumb-height);--slider-border-radius:var(--radius-medium);--slider-tick-width:.125rem;--slider-tick-height:var(--spacer-2);--slider-tick-radius:var(--radius-medium);--slider-stepper-padding:0;--slider-thumb-inset-threshold:calc(var(--slider-thumb-width) + var(--spacer-2) * 2);--slider-thumb-inset-distance:var(--slider-percent);--slider-thumb-edge-offset:clamp(calc(-1 * var(--spacer-2)), calc(var(--slider-thumb-inset-threshold) - var(--slider-thumb-inset-distance) - var(--spacer-2)), 0px);--slider-thumb-travel-offset:var(--slider-thumb-edge-offset);--fig-field-slider-progress-offset:calc(min(var(--slider-complete), calc(1 - var(--slider-complete))) * var(--spacer-2));--fig-field-slider-progress-percent:calc(var(--slider-percent) + var(--fig-field-slider-progress-offset));--slider-thumb-opacity:0;--slider-tick-opacity:.5;background-color:#0000;padding:0;position:absolute;inset:0;--slider-handle-shadow:inset 0 0 0 var(--slider-thumb-height) var(--slider-thumb-color), var(--handle-shadow)!important;&[type=delta]{--slider-thumb-inset-distance:max(calc(var(--slider-percent) - var(--start-percent)), calc(var(--start-percent) - var(--slider-percent)));--slider-thumb-travel-offset:calc((var(--slider-complete) - 1) * var(--spacer-2))}&[type=stepper]{--slider-thumb-travel-offset:0px}&[type=stepper] .fig-slider-input-container input[type=range]{margin-left:0;width:100%!important}&:has(input[type=range]:focus-within){--slider-thumb-outline:var(--figma-focus-outline)!important;--slider-thumb-outline-offset:var(--figma-focus-outline-offset)!important}& .fig-slider-input-container{box-shadow:none!important;background-color:var(--figma-color-bg-secondary)!important;&:hover,&:focus-within{&:after{content:"";pointer-events:none;border-radius:var(--slider-border-radius);position:absolute;inset:0;box-shadow:inset 0 0 0 1px var(--figma-color-bordertranslucent)!important}}&:before{box-shadow:var(--fig-field-slider-progress-shadow)!important;background:var(--figma-color-bordertranslucent)!important;min-width:0!important;box-shadow:none!important}& input[type=range]{margin-left:var(--spacer-2);width:calc(100% - var(--spacer-2))!important;border-radius:0!important;&::-webkit-slider-thumb{margin-left:var(--slider-thumb-travel-offset)}&::-moz-range-thumb{margin-left:var(--slider-thumb-travel-offset)}}}&:not([type=delta]) .fig-slider-input-container:before{width:var(--fig-field-slider-progress-percent)!important}&[type=delta] .fig-slider-input-container:before{background:var(--figma-color-bordertranslucent)!important;--left-start:calc(var(--start-percent) - var(--slider-thumb-width) / 2)!important;left:min(var(--left-start), calc(var(--slider-percent) - var(--slider-complete) * var(--slider-thumb-width)))!important;--width:calc(var(--slider-percent) - var(--start-percent))!important;--abs-width:max(calc(var(--width) + var(--slider-thumb-width) / 2 + (1 - var(--slider-complete)) * var(--slider-thumb-width)), calc(-1 * var(--width) + var(--slider-thumb-width) / 2 + var(--slider-complete) * var(--slider-thumb-width)))!important;width:var(--abs-width)!important}&:is([type=hue],[type=opacity]){& .fig-slider-input-container{&:after{content:"";z-index:0;pointer-events:none;border-radius:var(--slider-border-radius);position:absolute;inset:0}& input[type=range]{z-index:1;position:relative;&::-webkit-slider-runnable-track{background:0 0}&::-moz-range-track{background:0 0}}}}&[type=hue] .fig-slider-input-container:after{--fig-field-slider-hue-fade-size:30%;background:var(--bg-hue);mask-image:linear-gradient(to right, transparent 0%, #00000029 calc(var(--fig-field-slider-progress-percent) - var(--fig-field-slider-hue-fade-size)), black var(--fig-field-slider-progress-percent), #00000029 calc(var(--fig-field-slider-progress-percent) + var(--fig-field-slider-hue-fade-size)), transparent 100%);-webkit-mask-image:linear-gradient(to right, transparent 0%, #00000029 calc(var(--fig-field-slider-progress-percent) - var(--fig-field-slider-hue-fade-size)), black var(--fig-field-slider-progress-percent), #00000029 calc(var(--fig-field-slider-progress-percent) + var(--fig-field-slider-hue-fade-size)), transparent 100%)}&[type=opacity] .fig-slider-input-container:after{opacity:calc(.2 + var(--slider-complete) * .65);background:linear-gradient(to right, transparent, var(--color)), var(--slider-checkerboard)}}&:hover,&:focus-within{& fig-slider{--slider-thumb-opacity:1}}& datalist{mask-image:linear-gradient(to right, transparent 0, transparent var(--spacer-4), white, transparent calc(100% - var(--spacer-4)), transparent 100%)}& fig-input-number{border-radius:var(--radius-medium);background-color:#0000;border-left:0;flex:none;width:fit-content;min-width:fit-content;max-width:max-content;position:absolute;top:2px;bottom:2px;right:2px;box-shadow:none!important;&:hover,&:has(input:focus){box-shadow:none!important}&:has(input:focus){outline:var(--figma-focus-outline)!important;outline-offset:var(--figma-focus-outline-offset)!important}& input{field-sizing:content;font-variant-numeric:tabular-nums;border-radius:var(--radius-medium);text-align:right;width:auto;color:var(--field-text-color);flex:none}}}&[data-elastic-dragging=true]{transform:scaleX(var(--fig-field-slider-elastic-scale));transition:none}}body{--fig-lab-cursor:url("data:image/svg+xml,<svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(%23clip0_20065_231516)\"><g filter=\"url(%23filter0_d_20065_231516)\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2.93938 2.93938C3.35531 2.52345 3.97597 2.38901 4.52673 2.59555L15.5267 6.72055C16.1416 6.95111 16.535 7.55477 16.4976 8.21034C16.4603 8.86592 16.0009 9.421 15.3638 9.58026L10.737 10.737L9.58026 15.3638C9.421 16.0009 8.86592 16.4603 8.21034 16.4976C7.55477 16.535 6.95111 16.1416 6.72055 15.5267L2.59555 4.52673C2.38901 3.97597 2.52345 3.35531 2.93938 2.93938Z\" fill=\"white\"/></g><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.17558 3.53185C3.99199 3.463 3.7851 3.50782 3.64646 3.64646C3.50782 3.7851 3.463 3.99199 3.53185 4.17558L7.65685 15.1756C7.7337 15.3805 7.93492 15.5117 8.15345 15.4992C8.37197 15.4868 8.557 15.3336 8.61009 15.1213L9.91232 9.91232L15.1213 8.61009C15.3336 8.557 15.4868 8.37197 15.4992 8.15345C15.5117 7.93492 15.3805 7.7337 15.1756 7.65685L4.17558 3.53185Z\" fill=\"black\"/></g><defs><filter id=\"filter0_d_20065_231516\" x=\"-0.5\" y=\"0.5\" width=\"20\" height=\"20\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\"/><feOffset dy=\"1\"/><feGaussianBlur stdDeviation=\"1.5\"/><feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.35 0\"/><feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_20065_231516\"/><feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_20065_231516\" result=\"shape\"/></filter><clipPath id=\"clip0_20065_231516\"><rect width=\"32\" height=\"32\" fill=\"white\"/></clipPath></defs></svg>") 3 3, default;--fig-lab-cursor-eyedropper:url("data:image/svg+xml,<svg width=\"33\" height=\"32\" viewBox=\"0 0 33 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g filter=\"url(%23filter0_d_20089_234507)\"><path d=\"M21.9392 13.4383C23.0416 12.3365 24.8073 12.3025 25.951 13.3347L26.0594 13.4383L26.1629 13.5476C27.1956 14.6911 27.1633 16.4583 26.0603 17.5613L25.118 18.5027C25.9194 19.3681 25.9023 20.7185 25.0613 21.5603L25.0603 21.5613C24.2185 22.4021 22.8681 22.4194 22.0027 21.618L18.1668 25.4549C17.8885 25.7327 17.5329 25.9242 17.1453 26.0017L15.5291 26.325C14.1302 26.6042 12.8971 25.3697 13.1756 23.9715L13.4988 22.3553C13.5763 21.9677 13.7679 21.6121 14.0457 21.3338L17.8806 17.4969C17.0787 16.6304 17.1 15.2789 17.9402 14.4383C18.7815 13.598 20.1303 13.58 20.9959 14.3806L21.9392 13.4383ZM17.4597 24.7469C17.3202 24.8861 17.1423 24.9816 16.949 25.0203L15.3328 25.3435C15.2891 25.3522 15.2458 25.359 15.2029 25.3621C15.2458 25.3593 15.2892 25.3532 15.3328 25.3445L16.949 25.0213C16.9976 25.0116 17.0453 24.998 17.0916 24.9812C17.1376 24.9647 17.1824 24.9447 17.2254 24.9217C17.2681 24.8987 17.3094 24.8725 17.3484 24.8435L17.4597 24.7478L21.9998 20.2078L22.6463 20.8543C22.6738 20.8817 22.7028 20.9072 22.7322 20.9314C22.7028 20.9071 22.6738 20.8808 22.6463 20.8533L21.9998 20.2068L17.4597 24.7469ZM14.156 24.1678C14.1474 24.2113 14.1414 24.2549 14.1385 24.2976C14.1355 24.3404 14.135 24.383 14.1375 24.4246C14.1425 24.5086 14.1584 24.5903 14.1834 24.6678V24.6658C14.1342 24.5118 14.1212 24.3417 14.156 24.1668V24.1678ZM15.4597 22.7469L15.1375 24.3631L15.4597 22.7478L19.9988 18.2078L21.2918 19.4998H21.2928L19.9988 18.2068L15.4597 22.7469ZM24.3533 20.8533C24.3257 20.8809 24.2969 20.9071 24.2674 20.9314L24.3533 20.8543C24.3827 20.8248 24.4105 20.7941 24.4363 20.7625C24.4106 20.7938 24.3826 20.824 24.3533 20.8533ZM22.2928 18.5008L23.6463 19.8543C23.6562 19.8643 23.6652 19.8752 23.6726 19.8865L23.6463 19.8533L22.2928 18.4998V18.5008ZM25.3533 16.8533L23.7068 18.4998L25.3533 16.8543C25.3991 16.8085 25.4411 16.7598 25.4812 16.7107C25.4412 16.7596 25.3989 16.8077 25.3533 16.8533ZM18.5232 16.7097C18.5597 16.7602 18.6 16.809 18.6453 16.8543L19.2908 17.4998H19.2918L18.6453 16.8533C18.6002 16.8081 18.5596 16.7598 18.5232 16.7097ZM23.3533 14.8523L20.9998 17.2058L19.6463 15.8523C19.5654 15.772 19.4341 15.7719 19.3533 15.8523C19.3404 15.8653 19.3299 15.8801 19.3211 15.8953C19.3298 15.8803 19.3406 15.8661 19.3533 15.8533C19.4342 15.7725 19.5654 15.7727 19.6463 15.8533L20.9998 17.2068L23.3533 14.8533C23.3756 14.831 23.3987 14.8093 23.4226 14.7898L23.3533 14.8523ZM3.43924 2.93924C3.85511 2.52338 4.47546 2.3891 5.02616 2.59549L16.0262 6.72049C16.6409 6.95101 17.035 7.55433 16.9978 8.20975C16.9605 8.86518 16.5009 9.42047 15.864 9.57987L11.2371 10.7371L10.0799 15.364C9.92047 16.0009 9.36518 16.4605 8.70975 16.4978C8.05433 16.535 7.45101 16.1409 7.22049 15.5262L3.09549 4.52616C2.8891 3.97546 3.02338 3.35511 3.43924 2.93924ZM18.4959 15.3279C18.4915 15.3345 18.4875 15.3417 18.4832 15.3484C18.5076 15.3103 18.5341 15.2728 18.5633 15.2371L18.4959 15.3279ZM24.6453 14.8533C24.682 14.8901 24.7147 14.9296 24.7439 14.9705C24.7147 14.9294 24.6821 14.8892 24.6453 14.8523C24.637 14.844 24.6275 14.8367 24.6189 14.8289C24.6276 14.837 24.6368 14.8449 24.6453 14.8533ZM25.5974 14.4461C25.631 14.4969 25.662 14.5492 25.6902 14.6023C25.6326 14.4937 25.5642 14.389 25.4842 14.2908L25.5974 14.4461ZM24.1668 13.5935C24.157 13.5927 24.1473 13.5913 24.1375 13.5906L23.9998 13.5857C24.0555 13.5857 24.1112 13.5887 24.1668 13.5935Z\" fill=\"white\"/></g><path d=\"M22.6472 14.1463C23.3946 13.3992 24.6058 13.3992 25.3532 14.1463C26.1005 14.8938 26.1005 16.1059 25.3532 16.8533L23.7077 18.4988L24.3542 19.1453C24.8254 19.6168 24.8253 20.3809 24.3542 20.8524C23.8828 21.3237 23.1186 21.3236 22.6472 20.8524L22.0007 20.2069L17.4606 24.7459C17.3211 24.8853 17.1433 24.9806 16.9499 25.0194L15.3337 25.3426C14.6341 25.4823 14.0172 24.8654 14.1569 24.1658L14.4802 22.5506C14.5189 22.3572 14.6142 22.1784 14.7536 22.0389L19.2927 17.4988L18.6462 16.8524C18.1752 16.3809 18.1759 15.6157 18.6472 15.1444C19.1185 14.6737 19.8829 14.6736 20.3542 15.1444L21.0007 15.7908L22.6472 14.1463ZM15.4606 22.7459L15.1374 24.3621L16.7536 24.0389L21.2936 19.4998L19.9997 18.2059L15.4606 22.7459ZM4.14618 3.64631C4.28483 3.50767 4.49189 3.46321 4.67548 3.53205L15.6755 7.65705C15.8803 7.73388 16.011 7.93474 15.9987 8.15315C15.9863 8.37167 15.8331 8.55709 15.6208 8.61018L10.4118 9.91194L9.11005 15.1209C9.05696 15.3333 8.87154 15.4864 8.65302 15.4988C8.43465 15.5111 8.23375 15.3804 8.15692 15.1756L4.03192 4.17561C3.96308 3.99203 4.00756 3.78495 4.14618 3.64631Z\" fill=\"black\"/><defs><filter id=\"filter0_d_20089_234507\" x=\"0\" y=\"0.5\" width=\"29.9133\" height=\"29.8647\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\"/><feOffset dy=\"1\"/><feGaussianBlur stdDeviation=\"1.5\"/><feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.35 0\"/><feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_20089_234507\"/><feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_20089_234507\" result=\"shape\"/></filter></defs></svg>") 3 3, crosshair;--fig-lab-cursor-move:url("data:image/svg+xml,<svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><g clip-path=\"url(%23clip0_20065_165164)\"><g filter=\"url(%23filter0_d_20065_165164)\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2.93938 2.93938C3.35531 2.52345 3.97597 2.38901 4.52673 2.59555L15.5267 6.72055C16.1416 6.95111 16.535 7.55477 16.4976 8.21034C16.4603 8.86592 16.0009 9.421 15.3638 9.58026L10.737 10.737L9.58026 15.3638C9.421 16.0009 8.86592 16.4603 8.21034 16.4976C7.55477 16.535 6.95111 16.1416 6.72055 15.5267L2.59555 4.52673C2.38901 3.97597 2.52345 3.35531 2.93938 2.93938Z\" fill=\"white\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M18.4394 12.9394C19.0252 12.3536 19.9749 12.3536 20.5607 12.9394L26.0607 18.4394C26.6465 19.0252 26.6465 19.9749 26.0607 20.5607L20.5607 26.0607C19.9749 26.6465 19.0252 26.6465 18.4394 26.0607L12.9394 20.5607C12.3536 19.9749 12.3536 19.0252 12.9394 18.4394L18.4394 12.9394Z\" fill=\"white\"/></g><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.17558 3.53185C3.99199 3.463 3.7851 3.50782 3.64646 3.64646C3.50782 3.7851 3.463 3.99199 3.53185 4.17558L7.65685 15.1756C7.7337 15.3805 7.93492 15.5117 8.15345 15.4992C8.37197 15.4868 8.557 15.3336 8.61009 15.1213L9.91232 9.91232L15.1213 8.61009C15.3336 8.557 15.4868 8.37197 15.4992 8.15345C15.5117 7.93492 15.3805 7.7337 15.1756 7.65685L4.17558 3.53185Z\" fill=\"black\"/><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M19.1464 13.6464C19.3417 13.4512 19.6583 13.4512 19.8536 13.6464L21.8536 15.6464C22.0488 15.8417 22.0488 16.1583 21.8536 16.3536C21.6583 16.5488 21.3417 16.5488 21.1464 16.3536L20 15.2071V19H23.7929L22.6464 17.8536C22.4512 17.6583 22.4512 17.3417 22.6464 17.1464C22.8417 16.9512 23.1583 16.9512 23.3536 17.1464L25.3536 19.1464C25.5488 19.3417 25.5488 19.6583 25.3536 19.8536L23.3536 21.8536C23.1583 22.0488 22.8417 22.0488 22.6464 21.8536C22.4512 21.6583 22.4512 21.3417 22.6464 21.1464L23.7929 20H20V23.7929L21.1464 22.6464C21.3417 22.4512 21.6583 22.4512 21.8536 22.6464C22.0488 22.8417 22.0488 23.1583 21.8536 23.3536L19.8536 25.3536C19.6583 25.5488 19.3417 25.5488 19.1464 25.3536L17.1464 23.3536C16.9512 23.1583 16.9512 22.8417 17.1464 22.6464C17.3417 22.4512 17.6583 22.4512 17.8536 22.6464L19 23.7929V20H15.2071L16.3536 21.1464C16.5488 21.3417 16.5488 21.6583 16.3536 21.8536C16.1583 22.0488 15.8417 22.0488 15.6464 21.8536L13.6464 19.8536C13.4512 19.6583 13.4512 19.3417 13.6464 19.1464L15.6464 17.1464C15.8417 16.9512 16.1583 16.9512 16.3536 17.1464C16.5488 17.3417 16.5488 17.6583 16.3536 17.8536L15.2071 19H19V15.2071L17.8536 16.3536C17.6583 16.5488 17.3417 16.5488 17.1464 16.3536C16.9512 16.1583 16.9512 15.8417 17.1464 15.6464L19.1464 13.6464Z\" fill=\"black\"/></g><defs><filter id=\"filter0_d_20065_165164\" x=\"-0.5\" y=\"0.5\" width=\"30\" height=\"30\" filterUnits=\"userSpaceOnUse\" color-interpolation-filters=\"sRGB\"><feFlood flood-opacity=\"0\" result=\"BackgroundImageFix\"/><feColorMatrix in=\"SourceAlpha\" type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\" result=\"hardAlpha\"/><feOffset dy=\"1\"/><feGaussianBlur stdDeviation=\"1.5\"/><feColorMatrix type=\"matrix\" values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.35 0\"/><feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_20065_165164\"/><feBlend mode=\"normal\" in=\"SourceGraphic\" in2=\"effect1_dropShadow_20065_165164\" result=\"shape\"/></filter><clipPath id=\"clip0_20065_165164\"><rect width=\"32\" height=\"32\" fill=\"white\"/></clipPath></defs></svg>") 3 3, move}body.fig-lab-move-active,body.fig-lab-move-active *{cursor:var(--fig-lab-cursor-move)!important}fig-canvas-control{--fig-canvas-control-line-stroke:light-dark(#fff,#ffffff80);--fig-canvas-control-radius-stroke:#0d99ff;--fig-canvas-control-radius-stroke-halo:#fff;--fig-canvas-control-line-stroke-hover:#0d99ff;--fig-canvas-control-line-stroke-active:#0d99ff;--fig-canvas-control-line-stroke-width:1px;--fig-canvas-control-line-stroke-width-hover:2px;display:contents;&:has(.fig-canvas-control-radius-hit:hover){--fig-canvas-control-line-stroke-width:var(--fig-canvas-control-line-stroke-width-hover)}&>fig-handle,&>fig-tooltip:has(fig-handle:not([size=small])){z-index:1}& fig-handle{&[type=color]{--width:.75rem;--height:.75rem;--fig-handle-padding:1px;--fig-handle-shadow:none;&:hover,&:focus-within,&[selected]:not([selected=false]){--width:1rem;--height:1rem;--fig-handle-outline-color:transparent}&.dragging,&:active{--fig-handle-padding:2px!important}&[selected]:not([selected=false]){--fig-handle-padding:1px}}}& fig-handle:hover,& fig-handle:hover .fig-handle-hit-area{cursor:var(--fig-lab-cursor)!important}&[type=color] fig-handle[type=color]:hover:not(:active,.active,.dragging),&[type=color] fig-handle[type=color]:hover:not(:active,.active,.dragging) .fig-handle-hit-area{cursor:var(--fig-lab-cursor-eyedropper)!important}& fig-handle:is(:active,.active,.dragging),& fig-handle:is(:active,.active,.dragging) .fig-handle-hit-area{cursor:var(--fig-lab-cursor-move)!important}& .fig-canvas-control-angle-line-hit{cursor:var(--fig-lab-cursor-move)}& .fig-canvas-control-radius{pointer-events:none;position:absolute;overflow:visible;& circle{fill:none;stroke:var(--fig-canvas-control-radius-stroke);stroke-width:var(--fig-canvas-control-line-stroke-width);paint-order:stroke fill}& .fig-canvas-control-radius-halo{stroke:var(--fig-canvas-control-radius-stroke-halo);stroke-width:calc(var(--fig-canvas-control-line-stroke-width) + 2px);filter:none}& .fig-canvas-control-radius-hit{stroke:#0000;stroke-width:12px;pointer-events:stroke;filter:none}}&.fig-canvas-control-ring-active{--fig-canvas-control-line-stroke-width:var(--fig-canvas-control-line-stroke-width-hover)}& .fig-canvas-control-angle-svg{pointer-events:none}& .fig-canvas-control-angle-line{stroke:var(--fig-canvas-control-radius-stroke);stroke-width:var(--fig-canvas-control-line-stroke-width);paint-order:stroke fill;filter:drop-shadow(0 0 .5px #0000004d)drop-shadow(0 .5px 1px #0000001f)}& .fig-canvas-control-angle-line-halo{stroke:var(--fig-canvas-control-radius-stroke-halo);stroke-width:calc(var(--fig-canvas-control-line-stroke-width) + 2px);stroke-linecap:butt;filter:none}& fig-handle[size=small]{z-index:2;& .fig-handle-hit-area{cursor:grab}}}fig-input-angle{--size:1.5rem;align-items:center;gap:var(--spacer-2);user-select:none;display:inline-flex;&>fig-input-number{flex:none;width:auto}&[full]:not([full=false]){width:100%;display:flex;&>fig-input-number{flex:auto;width:auto;min-width:0}}fig-field:not([direction=vertical]) &{flex:1;min-width:0;& fig-input-number{flex:none;width:auto}}& .fig-input-angle-plane{width:var(--size);height:var(--size);aspect-ratio:1;background-color:var(--figma-color-bg-secondary);box-shadow:inset 0 0 0 1px var(--figma-color-border);border-radius:100%;flex-shrink:0;place-items:center;display:inline-grid;&:focus{outline:var(--figma-focus-outline);outline-offset:var(--figma-focus-outline-offset)}&.dragging{box-shadow:inset 0 0 0 1px var(--figma-color-border-selected);outline:0}}& .fig-input-angle-handle{grid-area:1/1;place-items:center;width:calc(.5rem + 2px);height:calc(.5rem + 2px);display:inline-grid;&:before{content:"";background:var(--handle-color);width:.5rem;height:.5rem;box-shadow:var(--handle-shadow);border-radius:50%;display:block}}}fig-input-oscillator{--aspect-ratio:2 / 1;--oscillator-stroke-width:1;--fig-input-oscillator-playhead-radius:4px;flex-direction:column;width:100%;display:flex;& .fig-input-oscillator-svg-container{border-radius:var(--radius-medium);padding:var(--spacer-3) var(--spacer-5);margin-bottom:var(--spacer-2);position:relative;overflow:hidden;&:before{inset:0 var(--spacer-3);content:"";background:var(--figma-color-bg-secondary);border-radius:var(--radius-medium);position:absolute}&:is(:hover,:active,:focus,:focus-visible,:focus-within){overflow:visible}& path{stroke:var(--figma-color-border-strong)}}& .fig-input-oscillator-svg{width:100%;aspect-ratio:var(--aspect-ratio);z-index:1;display:block;position:relative;overflow:visible;& .fig-input-oscillator-handle{opacity:0}&:hover,&:focus-within,&.dragging{& .fig-input-oscillator-handle{opacity:1}}}& .fig-input-oscillator-bounds{fill:#0000}& .fig-input-oscillator-baseline{pointer-events:none;stroke:var(--figma-color-bordertranslucent);stroke-width:var(--oscillator-stroke-width);stroke-linecap:round}& .fig-input-oscillator-path{pointer-events:none;fill:none;stroke:var(--figma-color-text);stroke-width:var(--oscillator-stroke-width);stroke-linejoin:round;stroke-linecap:round}& .fig-input-oscillator-playhead{pointer-events:none;r:var(--fig-input-oscillator-playhead-radius);fill:var(--handle-color);stroke:var(--figma-color-bg);stroke-width:1px}& .fig-input-oscillator-handle{pointer-events:all;cursor:default;overflow:visible;& .fig-input-oscillator-handle-inner{place-items:center;width:100%;height:100%;display:grid;overflow:visible}}& .fig-input-oscillator-frequency-handle{cursor:ew-resize;& fig-handle,& fig-handle:hover,& fig-handle .fig-handle-hit-area,& fig-handle:hover .fig-handle-hit-area,& fig-handle:is(:active,.active,.dragging),& fig-handle:is(:active,.active,.dragging) .fig-handle-hit-area{cursor:ew-resize!important}}& .fig-input-oscillator-amplitude-handle{cursor:ns-resize;& fig-handle,& fig-handle:hover,& fig-handle .fig-handle-hit-area,& fig-handle:hover .fig-handle-hit-area,& fig-handle:is(:active,.active,.dragging),& fig-handle:is(:active,.active,.dragging) .fig-handle-hit-area{cursor:ns-resize!important}}& .fig-input-oscillator-waves{flex-direction:column;gap:0;display:flex}& .fig-input-oscillator-wave{margin-bottom:0;&>fig-header{& .fig-input-oscillator-remove-button,& .fig-input-oscillator-add-type-button{flex-shrink:0}}}& .fig-input-oscillator-field{width:100%}& .fig-input-oscillator-add-type-button{&>fig-dropdown,&>fig-dropdown>select{width:100%;min-width:100%;height:100%;padding:0}}&[disabled]:not([disabled=false]){pointer-events:none;opacity:.6}}fig-reorder{display:contents}fig-reorder:not([handle]):is(:not([disabled]),[disabled=false])>[data-reorder-item],fig-reorder:not([handle]):is(:not([disabled]),[disabled=false])>[data-reorder-item]>fig-header,fig-reorder:not([handle]):is(:not([disabled]),[disabled=false])>[data-reorder-item]>fig-header *,fig-reorder:not([handle]):is(:not([disabled]),[disabled=false])>[data-reorder-item]>label{cursor:grab}fig-reorder>.dragging{background-color:var(--figma-color-bg-selected)}[data-reorder-handle]{cursor:grab}fig-reorder[disabled]:not([disabled=false]) [data-reorder-handle]{cursor:inherit}body.fig-reorder-dragging,body.fig-reorder-dragging *{-webkit-user-select:none!important;user-select:none!important;cursor:grabbing!important}.fig-reorder-indicator{pointer-events:none;z-index:1000000;background:var(--figma-color-border-strong);position:fixed}.fig-reorder-indicator[data-axis=vertical]{height:2px}.fig-reorder-indicator[data-axis=horizontal]{width:2px}:root,:host{--icon-24-eyedropper:url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M15.1592 5.65801C16.0376 4.78045 17.4621 4.78055 18.3408 5.65899L18.4951 5.82989C19.1671 6.65442 19.168 7.84476 18.4951 8.66973L18.3408 8.84063L16.6455 10.533C17.1104 11.083 17.1181 11.889 16.6641 12.4461L16.5605 12.5604C16.0111 13.1097 15.1425 13.1428 14.5537 12.6629L14.5342 12.6453L10.0908 17.0916C9.6188 17.5633 8.98876 17.7764 8.375 17.742L7.56055 18.5574C6.97441 19.1432 6.02451 19.1422 5.43945 18.5584V18.5574C4.8538 17.9718 4.85405 17.0221 5.43945 16.4363L6.25586 15.618C6.22412 15.0058 6.44026 14.3794 6.90918 13.91L11.3516 9.46367C10.856 8.87434 10.885 7.99381 11.4395 7.43926L11.5537 7.33574C12.1094 6.88283 12.9136 6.88854 13.4639 7.35137L15.1592 5.65801ZM7.61621 14.617C7.33755 14.8961 7.21782 15.2747 7.25781 15.6385C7.27925 15.8351 7.24419 16.0445 7.10449 16.1844L6.14648 17.1434C5.9516 17.3387 5.95135 17.6553 6.14648 17.8504C6.34167 18.0449 6.65842 18.0451 6.85352 17.8504L7.80859 16.8943C7.94931 16.7536 8.16065 16.7184 8.3584 16.741C8.72329 16.7828 9.10374 16.6643 9.38379 16.3846L13.8223 11.9432L12.0547 10.1756L7.61621 14.617ZM17.6338 6.36602C17.1458 5.87828 16.3544 5.8783 15.8662 6.36602L14.084 8.14629L14.0186 8.20586C13.6767 8.48476 13.1722 8.46484 12.8535 8.14629C12.6583 7.95131 12.3417 7.95119 12.1465 8.14629C11.9514 8.34148 11.9515 8.65808 12.1465 8.85332L15.1465 11.8533C15.3175 12.024 15.5814 12.0451 15.7754 11.9168L15.8535 11.8533C16.0486 11.6582 16.0484 11.3416 15.8535 11.1463V11.1453C15.8524 11.1443 15.8507 11.1434 15.8496 11.1424C15.5128 10.8013 15.514 10.2513 15.8535 9.91192L17.6338 8.1336C18.1216 7.6457 18.1213 6.85425 17.6338 6.36602Z' fill='black' fill-opacity='0.9'/%3E%3C/svg%3E")}dialog[is=fig-toast]{contain:layout paint;--z-index:999999;z-index:var(--z-index);box-shadow:var(--figma-elevation-100);border-radius:var(--radius-large);padding:var(--spacer-2) var(--spacer-3);align-items:center;gap:var(--spacer-2);min-width:0;height:2.5rem;color:var(--figma-color-text);background-color:var(--figma-color-bg);justify-content:center;&[open]:not([open=false]){display:flex}& p{color:inherit;font-weight:var(--body-medium-strong-fontWeight);margin:0;padding:0}& hr[vertical]{margin:0}& fig-button:last-child{margin-right:calc(var(--spacer-2) * -1)}&[theme=dark]{color-scheme:dark}&[theme=light]{color-scheme:light}&[theme=danger]{background-color:var(--figma-color-bg-danger);color-scheme:dark}&[theme=brand]{background-color:var(--figma-color-bg-brand);color-scheme:dark}&[theme=success]{background-color:var(--figma-color-bg-success);color-scheme:dark}}fig-fill-picker{display:contents;&>[slot^=mode-]{display:none}}.fig-fill-picker-dialog{contain:layout;width:240px;padding:0;& fig-tab{padding:var(--spacer-1) var(--spacer-1);font-size:.6875rem}&>fig-content{padding-bottom:var(--spacer-2-5)}& .fig-fill-picker-gamut{margin-left:auto}& .fig-fill-picker-tab{display:none;&:first-child{display:block}}& fig-preview{overflow:visible}& .fig-fill-picker-color-area{aspect-ratio:1;width:calc(100% - var(--spacer-3) * 2);margin:var(--spacer-2) var(--spacer-3);&>:not(fig-handle){border-radius:inherit;place-self:center;width:100%;height:100%}& canvas{border-radius:var(--radius-medium);width:100%;height:100%}}& .fig-fill-picker-color-area fig-handle{z-index:1}& .fig-fill-picker-sliders{grid-template-columns:calc(3.5rem + var(--spacer-3)) 1fr;padding-right:var(--spacer-3);align-items:center;gap:var(--spacer-2);padding-bottom:var(--spacer-1);grid-template-rows:1fr 1fr;display:grid;& .fig-fill-picker-eyedropper{margin-right:calc(var(--spacer-3) * -1);aspect-ratio:1;grid-area:1/1/3;place-self:center;width:3.5rem;height:3.5rem}& fig-slider{grid-column:2;min-width:0}}& .fig-fill-picker-inputs{& .fig-fill-picker-input-fields{flex:1;min-width:0;display:flex;& .input-combo,& fig-input-text{flex:1;min-width:0}}}& .fig-fill-picker-gradient-preview{aspect-ratio:auto;width:calc(100% - var(--spacer-3) * 2);margin:var(--spacer-2) var(--spacer-3);margin-top:calc(var(--spacer-4) + var(--spacer-1));background:0 0;margin-bottom:0;&:after{display:none}}& .fig-fill-picker-gradient-header{padding-right:var(--spacer-2);padding-left:var(--spacer-3);gap:var(--spacer-2);display:flex;& .fig-fill-picker-gradient-type{flex:1;min-width:0}&>:last-child fig-button{margin-left:auto}& .fig-fill-picker-gradient-center{& fig-input-number{width:48px}}}& .fig-fill-picker-gradient-stops{& .fig-fill-picker-gradient-stops-header{&>span{flex:1}}}& .fig-fill-picker-gradient-stops-list{gap:var(--spacer-1);flex-direction:column;display:flex;& fig-reorder{display:contents}}& .fig-fill-picker-gradient-stop-row{padding-right:var(--spacer-2);padding-left:var(--spacer-3);gap:var(--spacer-2);display:flex;&.dragging{background-color:var(--figma-color-bg-selected)}&>.fig-fill-picker-stop-position{flex:0 3rem;width:3rem;min-width:0}& .fig-fill-picker-stop-color{flex:1;min-width:0;& fig-input-text{min-width:0}}& .fig-fill-picker-stop-remove{flex-shrink:0}}& .fig-fill-picker-media-header{& .fig-fill-picker-scale-mode{flex:none}& .fig-fill-picker-scale{width:56px}}& .fig-fill-picker-media-preview{aspect-ratio:1;margin:var(--spacer-2) var(--spacer-3) var(--spacer-1) var(--spacer-3);border-radius:var(--radius-medium);justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden;&.dragover{outline:2px dashed var(--figma-color-border-brand);outline-offset:-2px}&.has-media{& fig-button{visibility:hidden}&:hover{& fig-button{visibility:visible}}}}& .fig-fill-picker-checkerboard{background-image:linear-gradient(45deg, var(--figma-color-bg-tertiary) 25%, transparent 25%), linear-gradient(-45deg, var(--figma-color-bg-tertiary) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, var(--figma-color-bg-tertiary) 75%), linear-gradient(-45deg, transparent 75%, var(--figma-color-bg-tertiary) 75%);background-position:0 0,0 8px,8px -8px,-8px 0;background-size:16px 16px;position:absolute;inset:0}& div.fig-fill-picker-image-preview{width:100%;height:100%;display:none;position:absolute;inset:0}& fig-image.fig-fill-picker-image-preview{width:auto;max-width:none;max-height:none}& video.fig-fill-picker-video-preview{object-fit:cover;width:100%;height:100%;display:none;position:absolute;inset:0}& fig-media.fig-fill-picker-video-preview{width:auto;max-width:none;max-height:none}& .fig-fill-picker-upload{z-index:1;position:relative}& .fig-fill-picker-webcam-preview{aspect-ratio:1;width:calc(100% - var(--spacer-3) * 2);max-width:none;max-height:none;margin:0 var(--spacer-3);border-radius:var(--radius-medium);margin:var(--spacer-2) var(--spacer-3);display:flex;position:relative;overflow:hidden}& .fig-fill-picker-webcam-video{object-fit:cover;width:100%;height:100%}& .fig-fill-picker-webcam-status{background:var(--figma-color-bg-secondary);color:var(--figma-color-text-secondary);justify-content:center;align-items:center;font-size:.75rem;display:flex;position:absolute;inset:0}& .fig-fill-picker-webcam-controls{padding:0 var(--spacer-3);gap:var(--spacer-1);display:flex;& .fig-fill-picker-webcam-capture{width:100%}}}
|
package/dist/fig-editor.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
var e=(f,X)=>()=>(f&&(X=f(f=0)),X);var ff={};var p=e(()=>{/*! Vendored from @ungap/custom-elements-builtin@0.6.5 (ISC). */(function(f,X,J){if(f.importNode.length!=1||X.get("ungap-li"))return;var Q="extends";try{var Y={};Y[Q]="li";var Z=HTMLLIElement,$=function(){return Reflect.construct(Z,[],$)};if($.prototype=J.create(Z.prototype),X.define("ungap-li",$,Y),!/is="ungap-li"/.test(new $().outerHTML))throw Y}catch(K){(function(){var q="attributeChangedCallback",W="connectedCallback",U="disconnectedCallback",j=Element.prototype,O=J.assign,V=J.create,G=J.defineProperties,M=J.getOwnPropertyDescriptor,_=J.setPrototypeOf,k=X.define,d=X.get,i=X.upgrade,l=X.whenDefined,H=V(null),P=new WeakMap,v={childList:!0,subtree:!0};Reflect.ownKeys(self).filter(function(L){return typeof L=="string"&&/^HTML(?!Element)/.test(L)}).forEach(function(L){function R(){}var N=self[L];_(R,N),(R.prototype=N.prototype).constructor=R,N={},N[L]={value:R},G(self,N)}),new MutationObserver(h).observe(f,v),s(Document.prototype,"importNode"),s(Node.prototype,"cloneNode"),G(X,{define:{value:function(L,R,N){if(L=L.toLowerCase(),N&&Q in N){H[L]=O({},N,{Class:R});var z=N[Q]+'[is="'+L+'"]',F=f.querySelectorAll(z);for(var B=0,D=F.length;B<D;B++)E(F[B])}else k.apply(X,arguments)}},get:{value:function(L){return L in H?H[L].Class:d.call(X,L)}},upgrade:{value:function(L){var R=S(L);if(R&&!(L instanceof R.Class))c(L,R);else i.call(X,L)}},whenDefined:{value:function(L){return L in H?Promise.resolve():l.call(X,L)}}});var r=f.createElement;G(f,{createElement:{value:function(L,R){var N=r.call(f,L);if(R&&"is"in R)N.setAttribute("is",R.is),X.upgrade(N);return N}}});var n=M(j,"attachShadow").value,w=M(j,"innerHTML");G(j,{attachShadow:{value:function(){var L=n.apply(this,arguments);return new MutationObserver(h).observe(L,v),L}},innerHTML:{get:w.get,set:function(L){if(w.set.call(this,L),/\bis=("|')?[a-z0-9_-]+\1/i.test(L))T(this,E)}}});function h(L){for(var R=0,N=L.length;R<N;R++){var z=L[R],F=z.addedNodes,B=z.removedNodes;for(var D=0,C=F.length;D<C;D++)E(F[D]);for(var I=0,a=B.length;I<a;I++)b(B[I])}}function u(L){for(var R=0,N=L.length;R<N;R++){var z=L[R],F=z.attributeName,B=z.oldValue,D=z.target,C=D.getAttribute(F);if(q in D&&!(B==C&&C==null))D[q](F,B,D.getAttribute(F),null)}}function b(L){if(L.nodeType!==1)return;var R=S(L);if(R&&L instanceof R.Class&&U in L&&P.get(L)!==U)P.set(L,U),Promise.resolve(L).then(t);T(L,b)}function S(L){var R=L.getAttribute("is");if(R){if(R=R.toLowerCase(),R in H)return H[R]}return null}function o(L){L[W]()}function t(L){L[U]()}function c(L,R){var N=R.Class,z=N.observedAttributes||[];if(_(L,N.prototype),z.length){new MutationObserver(u).observe(L,{attributes:!0,attributeFilter:z,attributeOldValue:!0});var F=[];for(var B=0,D=z.length;B<D;B++)F.push({attributeName:z[B],oldValue:null,target:L});u(F)}}function E(L){if(L.nodeType!==1)return;var R=S(L);if(R){if(!(L instanceof R.Class))c(L,R);if(W in L&&L.isConnected&&P.get(L)!==W)P.set(L,W),Promise.resolve(L).then(o)}T(L,E)}function T(L,R){for(var N=L.content,z=(N&&N.nodeType==11?N:L).querySelectorAll("[is]"),F=0,B=z.length;F<B;F++)R(z[F])}function s(L,R){var N=L[R],z={};z[R]={value:function(){var F=N.apply(this,arguments);switch(F.nodeType){case 1:case 11:T(F,E)}return F}},G(L,z)}})()}})(document,customElements,Object)});function Xf(){if(typeof navigator>"u")return!1;let f=navigator.userAgent||"",X=/\b(iPad|iPhone|iPod)\b/.test(f)||/\bMacintosh\b/.test(f)&&/\bMobile\b/.test(f),J=/\bAppleWebKit\b/.test(f)&&!/\b(Chrome|Chromium|Edg|OPR|SamsungBrowser)\b/.test(f);return X||J}function Jf(){if(typeof window>"u"||!window.customElements||typeof HTMLButtonElement>"u")return!1;let f=`fig-editor-builtin-probe-${Math.random().toString(36).slice(2)}`;class X extends HTMLButtonElement{}try{return customElements.define(f,X,{extends:"button"}),document.createElement("button",{is:f})instanceof X}catch(J){return!1}}var m=Xf()&&!Jf(),Qf=(m?Promise.resolve().then(() => (p(),ff)):Promise.resolve()).then(()=>{}).catch((f)=>{throw f});function Yf(f,X,J){let Q=()=>{if(!customElements.get(f))customElements.define(f,X,J)};if(!m){Q();return}Qf.then(Q).catch((Y)=>{console.error(`[figui3] Failed to load customized built-in polyfill for "${f}".`,Y)})}class g extends HTMLDialogElement{constructor(){super();this._figInit()}_figInit(){if(this._figInitialized)return;this._figInitialized=!0,this._defaultOffset=16,this._autoCloseTimer=null,this._boundHandleClose=this.handleClose.bind(this)}getOffset(){return parseInt(this.getAttribute("offset")??this._defaultOffset)}connectedCallback(){if(this._figInit(),!this.hasAttribute("theme"))this.setAttribute("theme","dark");this.syncLiveRegion();let f=this.getAttribute("open")==="true"||this.getAttribute("open")==="";if(this.hasAttribute("open")&&!f)this.removeAttribute("open");if(!f)this.close();requestAnimationFrame(()=>{if(this.addCloseListeners(),this.applyPosition(),f)this.showToast()})}disconnectedCallback(){this._figInit(),this.clearAutoClose()}addCloseListeners(){this.querySelectorAll("[close-toast]").forEach((f)=>{f.removeEventListener("click",this._boundHandleClose),f.addEventListener("click",this._boundHandleClose)})}handleClose(){this.hideToast()}applyPosition(){this.style.position="fixed",this.style.margin="0",this.style.top="auto",this.style.bottom=`${this.getOffset()}px`,this.style.left="50%",this.style.right="auto",this.style.transform="translateX(-50%)"}startAutoClose(){this.clearAutoClose();let f=parseInt(this.getAttribute("duration")??"5000");if(f>0)this._autoCloseTimer=setTimeout(()=>{this.hideToast()},f)}syncLiveRegion(){let f=this.getAttribute("live")==="assertive"||this.getAttribute("theme")==="danger";if(!this.hasAttribute("role"))this.setAttribute("role",f?"alert":"status");if(!this.hasAttribute("aria-live"))this.setAttribute("aria-live",f?"assertive":"polite");if(!this.hasAttribute("aria-atomic"))this.setAttribute("aria-atomic","true")}clearAutoClose(){if(this._autoCloseTimer)clearTimeout(this._autoCloseTimer),this._autoCloseTimer=null}_resolveAutoTheme(){if(this.getAttribute("theme")!=="auto")return;let X=(getComputedStyle(document.documentElement).colorScheme||"").includes("dark");this.style.colorScheme=X?"light":"dark"}showToast(){if(this._resolveAutoTheme(),!this.open)this.show();this.applyPosition(),this.startAutoClose(),this.dispatchEvent(new CustomEvent("toast-show",{bubbles:!0}))}hideToast(){this.clearAutoClose(),this.close(),this.dispatchEvent(new CustomEvent("toast-hide",{bubbles:!0}))}static get observedAttributes(){return["duration","offset","open","theme","live"]}attributeChangedCallback(f,X,J){if(this._figInit(),!this.isConnected)return;if(f==="offset")this.applyPosition();if(f==="open")if(J!==null&&J!=="false")this.showToast();else this.hideToast();if(f==="theme")if(J==="auto")this._resolveAutoTheme();else this.style.removeProperty("color-scheme");if(f==="theme"||f==="live")this.syncLiveRegion()}}Yf("fig-toast",g,{extends:"dialog"});var Zf=["srgb","srgb-linear","display-p3","oklab","oklch"],$f=["shorter","longer","increasing","decreasing"];function y(f){let X={...f??{}},J=String(X.interpolationSpace??"srgb").toLowerCase();if(!Zf.includes(J))J="srgb";X.interpolationSpace=J;let Q=String(X.hueInterpolation??"shorter").toLowerCase();return X.hueInterpolation=$f.includes(Q)?Q:"shorter",X}function x(f){let X=y(f),J={...X,interpolationSpace:X.interpolationSpace};if(X.interpolationSpace==="oklch")J.hueInterpolation=X.hueInterpolation;else delete J.hueInterpolation;return J}function Lf(f){let X=y(f);if(X.interpolationSpace==="srgb")return"";if(X.interpolationSpace==="oklch")return`in oklch ${X.hueInterpolation} hue`;return`in ${X.interpolationSpace}`}class A extends HTMLElement{#Y=null;#Z=null;#f=null;#s="solid";anchorElement=null;#K="solid";#q="srgb";#J={h:0,s:0,v:85,a:1};#E="hex";#X={type:"linear",angle:0,centerX:50,centerY:50,interpolationSpace:"srgb",hueInterpolation:"shorter",stops:[{position:0,color:"#D9D9D9",opacity:100},{position:100,color:"#737373",opacity:100}]};#$={url:null,scaleMode:"fill",scale:50};#L={url:null,scaleMode:"fill",scale:50};#W={stream:null,snapshot:null};#R={};#A={};#U=null;#O=null;#F=null;#N=null;#z=!1;#B=null;#P=null;#T=null;#S=null;#I=null;constructor(){super();this.#S=this.#Xf.bind(this),this.#I=this.#Jf.bind(this)}static get observedAttributes(){return["value","disabled","alpha","mode","experimental","aria-label","aria-labelledby","aria-describedby"]}connectedCallback(){this.style.display="contents",requestAnimationFrame(()=>{this.#ff(),this.#m(),this.#j()})}disconnectedCallback(){if(this.#B)this.#B(),this.#B=null;if(this.#P)this.#P.disconnect(),this.#P=null;if(this.#T)this.#T.disconnect(),this.#T=null;if(this.#W.stream)this.#W.stream.getTracks().forEach((f)=>f.stop()),this.#W.stream=null;if(this.#W.snapshot?.startsWith("blob:"))URL.revokeObjectURL(this.#W.snapshot),this.#W.snapshot=null;if(this.#L.url&&this.#L.url.startsWith("blob:"))URL.revokeObjectURL(this.#L.url);if(this.#Z)this.#Z.removeAttribute("selected");if(this.#Y)this.#Y.removeEventListener("click",this.#S),this.#Y.removeEventListener("keydown",this.#I);if(this.#f)this.#f.close(),this.#f.remove(),this.#f=null}#ff(){let f=Array.from(this.children).find((X)=>!X.getAttribute("slot")?.startsWith("mode-"));if(!f)this.#Z=document.createElement("fig-swatch"),this.#Z.setAttribute("background","#D9D9D9"),this.appendChild(this.#Z),this.#Y=this.#Z;else if(f.matches("fig-swatch"))this.#Z=f,this.#Y=f;else this.#Y=f,this.#Z=null;if(this.#x(),this.#Y.removeEventListener("click",this.#S),this.#Y.addEventListener("click",this.#S),this.#Y.removeEventListener("keydown",this.#I),this.#Y.addEventListener("keydown",this.#I),this.#Z)requestAnimationFrame(()=>{let X=this.#Z.querySelector('input[type="color"]');if(X)X.remove();this.#x()})}#p(){return this.getAttribute("aria-label")||"Fill picker"}#x(){if(!this.#Y)return;let f=this.hasAttribute("disabled")&&this.getAttribute("disabled")!=="false",X=this.getAttribute("aria-labelledby");if(!this.#Y.hasAttribute("role"))this.#Y.setAttribute("role","button");if(this.#Y.setAttribute("tabindex",f?"-1":"0"),this.#Y.setAttribute("aria-disabled",f?"true":"false"),X)this.#Y.setAttribute("aria-labelledby",X),this.#Y.removeAttribute("aria-label");else if(this.hasAttribute("aria-label"))this.#Y.setAttribute("aria-label",`Open ${this.#p()}`),this.#Y.removeAttribute("aria-labelledby");else if(this.#Y.removeAttribute("aria-labelledby"),!this.#Y.hasAttribute("aria-label"))this.#Y.setAttribute("aria-label",`Open ${this.#p()}`);let J=this.getAttribute("aria-describedby");if(J)this.#Y.setAttribute("aria-describedby",J);else this.#Y.removeAttribute("aria-describedby")}#Xf(f){if(this.hasAttribute("disabled"))return;f.stopPropagation(),f.preventDefault(),this.#h()}#Jf(f){if(f.key!=="Enter"&&f.key!==" ")return;if(this.hasAttribute("disabled"))return;f.preventDefault(),f.stopPropagation(),this.#h()}#m(){let f=this.getAttribute("value");if(!f)return;let X=["solid","gradient","image","video","webcam"];try{let J=JSON.parse(f);if(J.type)this.#K=J.type;if(J.color){if(typeof J.color==="string")this.#J=this.#w(J.color);else if(typeof J.color==="object"&&J.color.h!==void 0)this.#J=J.color}if(J.opacity!==void 0)this.#J.a=J.opacity/100;if(J.colorSpace==="display-p3"||J.colorSpace==="srgb")this.#q=J.colorSpace;if(J.gradient)this.#X=y({...this.#X,...J.gradient});if(J.image)this.#$={...this.#$,...J.image};if(J.video)this.#L={...this.#L,...J.video};if(J.type&&!X.includes(J.type)){let{type:Q,...Y}=J;this.#A[J.type]=Y}}catch(J){if(f.startsWith("#"))this.#K="solid",this.#J=this.#w(f)}}#j(){if(!this.#Z)return;let f,X="cover",J="center";switch(this.#K){case"solid":f=this.#k(this.#J);break;case"gradient":f=this.#o();break;case"image":if(this.#$.url){f=`url(${this.#$.url})`;let Y=this.#g(this.#$.scaleMode,this.#$.scale);X=Y.size,J=Y.position}else f="";break;case"video":if(this.#L.url){f=`url(${this.#L.url})`;let Y=this.#g(this.#L.scaleMode,this.#L.scale);X=Y.size,J=Y.position}else f="";break;default:f=this.#R[this.#K]?.element?.getAttribute("swatch-background")||"#D9D9D9"}if(this.#Z.setAttribute("background",f),this.#Z.style.setProperty("--swatch-bg-size",X),this.#Z.style.setProperty("--swatch-bg-position",J),this.#K==="solid")this.#Z.setAttribute("alpha",this.#J.a);else this.#Z.removeAttribute("alpha")}#g(f,X){switch(f){case"fill":return{size:"cover",position:"center"};case"fit":return{size:"contain",position:"center"};case"crop":return{size:"cover",position:"center"};case"tile":return{size:`${X}%`,position:"top left"};default:return{size:"cover",position:"center"}}}#h(){if(!this.#f)this.#Qf();this.#u(this.#K);let f=this.#f.querySelector(".fig-fill-picker-gamut");if(f)f.value=this.#q;if(this.#Z)this.#Z.setAttribute("selected","true");this.#f.open=!0,requestAnimationFrame(()=>{requestAnimationFrame(()=>{this.#G(),this.#_()})})}open(){this.#h()}close(){if(this.#f)this.#f.open=!1}#Qf(){this.#R={},this.querySelectorAll('[slot^="mode-"]').forEach((M)=>{let _=M.getAttribute("slot").slice(5);this.#R[_]={element:M,label:M.getAttribute("label")||_.charAt(0).toUpperCase()+_.slice(1)}}),this.#f=document.createElement("dialog",{is:"fig-popup"}),this.#f.setAttribute("is","fig-popup"),this.#f.setAttribute("drag","true"),this.#f.setAttribute("handle","fig-header"),this.#f.setAttribute("autoresize","false"),this.#f.classList.add("fig-fill-picker-dialog"),this.#f.anchor=this.anchorElement||this.#Y;let f=this.getAttribute("dialog-position")||"left";this.#f.setAttribute("position",f),this.#f.setAttribute("offset",this.getAttribute("dialog-offset")||"8 8");let X=["solid","gradient","image","video","webcam"],J={solid:"Solid",gradient:"Gradient",image:"Image",video:"Video",webcam:"Webcam"},Q=this.getAttribute("mode"),Y;if(Q){if(Y=Q.split(",").map((_)=>_.trim().toLowerCase()).filter((_)=>X.includes(_)||this.#R[_]),Y.length===0)Y=[...X]}else Y=[...X];let Z={...J};for(let[M,{label:_}]of Object.entries(this.#R))Z[M]=_;if(!Y.includes(this.#K))this.#K=Y[0],this.#s=Y[0];let $=this.getAttribute("experimental"),K=$?`experimental="${$}"`:"",q;if(Y.length===1)q=`<h3 class="fig-fill-picker-type-label">${Z[Y[0]]}</h3>`;else{let M=Y.map((_)=>`<option value="${_}">${Z[_]}</option>`).join(`
|
|
2
|
-
`);
|
|
3
|
-
${
|
|
4
|
-
</fig-dropdown>`}let W
|
|
5
|
-
`),
|
|
1
|
+
import"./fig.js";function B(Q){return String(Q??"").replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">")}var D=["srgb","srgb-linear","display-p3","oklab","oklch"],G=["shorter","longer","increasing","decreasing"];function F(Q){let X={...Q??{}},Y=String(X.interpolationSpace??"srgb").toLowerCase();if(!D.includes(Y))Y="srgb";X.interpolationSpace=Y;let Z=String(X.hueInterpolation??"shorter").toLowerCase();return X.hueInterpolation=G.includes(Z)?Z:"shorter",X}function f(Q){let X=F(Q),Y={...X,interpolationSpace:X.interpolationSpace};if(X.interpolationSpace==="oklch")Y.hueInterpolation=X.hueInterpolation;else delete Y.hueInterpolation;return Y}function H(Q){let X=F(Q);if(X.interpolationSpace==="srgb")return"";if(X.interpolationSpace==="oklch")return`in oklch ${X.hueInterpolation} hue`;return`in ${X.interpolationSpace}`}class V extends HTMLElement{#$=null;#j=null;#Q=null;#S="solid";anchorElement=null;#O="solid";#q="srgb";#Y={h:0,s:0,v:85,a:1};#T="hex";#X={type:"linear",angle:0,centerX:50,centerY:50,interpolationSpace:"srgb",hueInterpolation:"shorter",stops:[{position:0,color:"#D9D9D9",opacity:100},{position:100,color:"#737373",opacity:100}]};#J={url:null,scaleMode:"fill",scale:50};#K={url:null,scaleMode:"fill",scale:50};#W={stream:null,snapshot:null};#_={};#x={};#L=null;#k=null;#N=null;#F=null;#V=!1;#f=!1;#D=null;#y=null;#s=null;#A=0;#I=null;#v=null;constructor(){super();this.#I=this.#WQ.bind(this),this.#v=this.#UQ.bind(this)}static get observedAttributes(){return["value","disabled","alpha","mode","experimental","aria-label","aria-labelledby","aria-describedby"]}connectedCallback(){this.style.display="contents",requestAnimationFrame(()=>{this.#KQ(),this.#r(),this.#U()})}disconnectedCallback(){if(this.#a(),this.#W.snapshot?.startsWith("blob:")){if(URL.revokeObjectURL(this.#W.snapshot),this.#J.url===this.#W.snapshot)this.#J.url=null;this.#W.snapshot=null}if(this.#K.url&&this.#K.url.startsWith("blob:"))URL.revokeObjectURL(this.#K.url);if(this.#j)this.#j.removeAttribute("selected");if(this.#$)this.#$.removeEventListener("click",this.#I),this.#$.removeEventListener("keydown",this.#v)}#KQ(){let Q=Array.from(this.children).find((X)=>!X.getAttribute("slot")?.startsWith("mode-"));if(!Q)this.#j=document.createElement("fig-swatch"),this.#j.setAttribute("background","#D9D9D9"),this.appendChild(this.#j),this.#$=this.#j;else if(Q.matches("fig-swatch"))this.#j=Q,this.#$=Q;else this.#$=Q,this.#j=null;if(this.#w(),this.#$.removeEventListener("click",this.#I),this.#$.addEventListener("click",this.#I),this.#$.removeEventListener("keydown",this.#v),this.#$.addEventListener("keydown",this.#v),this.#j)requestAnimationFrame(()=>{let X=this.#j.querySelector('input[type="color"]');if(X)X.remove();this.#w()})}#n(){return this.getAttribute("aria-label")||"Fill picker"}#w(){if(!this.#$)return;let Q=this.hasAttribute("disabled")&&this.getAttribute("disabled")!=="false",X=this.getAttribute("aria-labelledby");if(!this.#$.hasAttribute("role"))this.#$.setAttribute("role","button");if(this.#$.setAttribute("tabindex",Q?"-1":"0"),this.#$.setAttribute("aria-disabled",Q?"true":"false"),X)this.#$.setAttribute("aria-labelledby",X),this.#$.removeAttribute("aria-label");else if(this.hasAttribute("aria-label"))this.#$.setAttribute("aria-label",`Open ${this.#n()}`),this.#$.removeAttribute("aria-labelledby");else if(this.#$.removeAttribute("aria-labelledby"),!this.#$.hasAttribute("aria-label"))this.#$.setAttribute("aria-label",`Open ${this.#n()}`);let Y=this.getAttribute("aria-describedby");if(Y)this.#$.setAttribute("aria-describedby",Y);else this.#$.removeAttribute("aria-describedby")}#WQ(Q){if(this.hasAttribute("disabled")&&this.getAttribute("disabled")!=="false")return;Q.stopPropagation(),Q.preventDefault(),this.#h()}#UQ(Q){if(Q.key!=="Enter"&&Q.key!==" ")return;if(this.hasAttribute("disabled")&&this.getAttribute("disabled")!=="false")return;Q.preventDefault(),Q.stopPropagation(),this.#h()}#r(){let Q=this.getAttribute("value");if(!Q)return;let X=["solid","gradient","image","video","webcam"];try{let Y=JSON.parse(Q);if(Y.type)this.#O=Y.type;if(Y.color){if(typeof Y.color==="string")this.#Y=this.#m(Y.color);else if(typeof Y.color==="object"&&Y.color.h!==void 0)this.#Y=Y.color}if(Y.opacity!==void 0)this.#Y.a=Y.opacity/100;if(Y.colorSpace==="display-p3"||Y.colorSpace==="srgb")this.#q=Y.colorSpace;if(Y.gradient)this.#X=F({...this.#X,...Y.gradient});if(Y.image)this.#J={...this.#J,...Y.image};if(Y.video)this.#K={...this.#K,...Y.video};if(Y.type&&!X.includes(Y.type)){let{type:Z,...$}=Y;this.#x[Y.type]=$}}catch(Y){if(Q.startsWith("#"))this.#O="solid",this.#Y=this.#m(Q)}}#U(){if(!this.#j)return;let Q,X="cover",Y="center";switch(this.#O){case"solid":Q=this.#B(this.#Y);break;case"gradient":Q=this.#ZQ();break;case"image":if(this.#J.url){Q=`url(${this.#J.url})`;let $=this.#o(this.#J.scaleMode,this.#J.scale);X=$.size,Y=$.position}else Q="";break;case"video":if(this.#K.url){Q=`url(${this.#K.url})`;let $=this.#o(this.#K.scaleMode,this.#K.scale);X=$.size,Y=$.position}else Q="";break;default:Q=this.#_[this.#O]?.element?.getAttribute("swatch-background")||"#D9D9D9"}if(this.#j.setAttribute("background",Q),this.#j.style.setProperty("--swatch-bg-size",X),this.#j.style.setProperty("--swatch-bg-position",Y),this.#O==="solid")this.#j.setAttribute("alpha",this.#Y.a);else this.#j.removeAttribute("alpha")}#o(Q,X){switch(Q){case"fill":return{size:"cover",position:"center"};case"fit":return{size:"contain",position:"center"};case"crop":return{size:"cover",position:"center"};case"tile":return{size:`${X}%`,position:"top left"};default:return{size:"cover",position:"center"}}}#h(){if(!this.#Q)this.#LQ();this.#y=JSON.stringify(this.value),this.#c(this.#O,{emit:!1});let Q=this.#Q.querySelector(".fig-fill-picker-gamut");if(Q)Q.value=this.#q;if(this.#j)this.#j.setAttribute("selected","true");this.#Q.open=!0,requestAnimationFrame(()=>{requestAnimationFrame(()=>{this.#H(),this.#z()})})}open(){this.#h()}close(){if(this.#Q)this.#Q.open=!1}#OQ(){if(!this.#Q)return;for(let[Q,{element:X}]of Object.entries(this.#_)){let Y=Array.from(this.#Q.querySelectorAll(".fig-fill-picker-tab")).find((Z)=>Z.dataset.tab===Q);if(!Y)continue;while(Y.firstChild)X.appendChild(Y.firstChild)}}#a(){if(this.#D)this.#D(),this.#D=null;if(this.#b(),!this.#Q)return;this.#OQ(),this.#Q.remove(),this.#Q=null,this.#s=null,this.#y=null}#b(){if(this.#A+=1,this.#W.stream)this.#W.stream.getTracks().forEach((X)=>X.stop()),this.#W.stream=null;let Q=this.#Q?.querySelector(".fig-fill-picker-webcam-video");if(Q)Q.srcObject=null}#LQ(){this.#_={},this.querySelectorAll('[slot^="mode-"]').forEach((q)=>{let z=q.getAttribute("slot").slice(5);this.#_[z]={element:q,label:q.getAttribute("label")||z.charAt(0).toUpperCase()+z.slice(1)}}),this.#Q=document.createElement("dialog",{is:"fig-popup"}),this.#Q.setAttribute("is","fig-popup"),this.#Q.setAttribute("drag","true"),this.#Q.setAttribute("handle","fig-header"),this.#Q.setAttribute("autoresize","false"),this.#Q.classList.add("fig-fill-picker-dialog"),this.#Q.anchor=this.anchorElement||this.#$;let Q=this.getAttribute("dialog-position")||"left";this.#Q.setAttribute("position",Q),this.#Q.setAttribute("offset",this.getAttribute("dialog-offset")||"8 8");let X=["solid","gradient","image","video","webcam"],Y={solid:"Solid",gradient:"Gradient",image:"Image",video:"Video",webcam:"Webcam"},Z=this.getAttribute("mode"),$;if(Z){if($=Z.split(",").map((z)=>z.trim().toLowerCase()).filter((z)=>X.includes(z)||this.#_[z]),$.length===0)$=[...X]}else $=[...X];let j={...Y};for(let[q,{label:z}]of Object.entries(this.#_))j[q]=z;if(!$.includes(this.#O))this.#O=$[0],this.#S=$[0];let J=this.getAttribute("experimental"),K=J?`experimental="${B(J)}"`:"",O;if($.length===1)O=`<h3 class="fig-fill-picker-type-label">${B(j[$[0]])}</h3>`;else{let q=$.map((z)=>`<option value="${B(z)}">${B(j[z])}</option>`).join(`
|
|
2
|
+
`);O=`<fig-dropdown class="fig-fill-picker-type" label="Fill type" ${K} value="${B(this.#O)}">
|
|
3
|
+
${q}
|
|
4
|
+
</fig-dropdown>`}let W=$.map((q)=>`<div class="fig-fill-picker-tab" data-tab="${B(q)}"></div>`).join(`
|
|
5
|
+
`),L=`<fig-dropdown class="fig-fill-picker-gamut" label="Color gamut" ${K} value="${this.#q}">
|
|
6
6
|
<option value="srgb">sRGB</option>
|
|
7
7
|
<option value="display-p3">Display P3</option>
|
|
8
|
-
</fig-dropdown>`;this.#
|
|
8
|
+
</fig-dropdown>`;this.#Q.innerHTML=`
|
|
9
9
|
<fig-header>
|
|
10
|
-
${
|
|
11
|
-
${
|
|
10
|
+
${O}
|
|
11
|
+
${L}
|
|
12
12
|
<fig-button icon variant="ghost" class="fig-fill-picker-close" aria-label="Close fill picker">
|
|
13
13
|
<fig-icon name="close"></fig-icon>
|
|
14
14
|
</fig-button>
|
|
@@ -16,13 +16,13 @@ var e=(f,X)=>()=>(f&&(X=f(f=0)),X);var ff={};var p=e(()=>{/*! Vendored from @ung
|
|
|
16
16
|
<fig-content>
|
|
17
17
|
${W}
|
|
18
18
|
</fig-content>
|
|
19
|
-
`,document.body.appendChild(this.#
|
|
19
|
+
`,document.body.appendChild(this.#Q);for(let[q,{element:z}]of Object.entries(this.#_)){let k=Array.from(this.#Q.querySelectorAll(".fig-fill-picker-tab")).find((N)=>N.dataset.tab===q);if(!k)continue;while(z.firstChild)k.appendChild(z.firstChild);this.dispatchEvent(new CustomEvent("modeready",{bubbles:!0,detail:{mode:q,container:k}}))}let U=this.#Q.querySelector(".fig-fill-picker-type");if(U)U.addEventListener("change",(q)=>{this.#c(q.target.value)});let _=this.#Q.querySelector(".fig-fill-picker-gamut");if(_){let q=(z)=>{let k=z.currentTarget?.value??z.target?.value??z.detail;if(k&&k!==this.#q)this.#q=k,this.#qQ()};_.addEventListener("change",q)}this.#Q.querySelector(".fig-fill-picker-close").addEventListener("click",()=>{this.#Q.open=!1});let M=()=>{if(this.#j)this.#j.removeAttribute("selected");if(this.#b(),this.#y!==null&&this.#y!==JSON.stringify(this.value))this.#M();this.#y=null,this.dispatchEvent(new CustomEvent("close"))};this.#Q.addEventListener("close",M);let R={solid:()=>this.#_Q(),gradient:()=>this.#kQ(),image:()=>this.#DQ(),video:()=>this.#HQ(),webcam:()=>this.#PQ()};for(let[q,z]of Object.entries(R))if(!this.#_[q]&&$.includes(q))z();for(let q of Object.keys(this.#_)){if(X.includes(q))continue;let z=Array.from(this.#Q.querySelectorAll(".fig-fill-picker-tab")).find((k)=>k.dataset.tab===q);if(!z)continue;z.addEventListener("input",(k)=>{if(k.target===this)return;if(k.stopPropagation(),k.detail)this.#x[q]=k.detail;this.#Z()}),z.addEventListener("change",(k)=>{if(k.target===this)return;if(k.stopPropagation(),k.detail)this.#x[q]=k.detail;this.#M()})}}#c(Q,{emit:X=!0}={}){let Y=Array.from(this.#Q?.querySelectorAll(".fig-fill-picker-tab")??[]).find((K)=>K.dataset.tab===Q);if(!Y)return;let Z=this.#S;if(this.#S=Q,this.#O=Q,Z==="webcam"&&Q!=="webcam")this.#b();let $=this.#Q.querySelector(".fig-fill-picker-type");if($&&$.value!==Q)$.value=Q;this.#Q.querySelectorAll(".fig-fill-picker-tab").forEach((K)=>{if(K.dataset.tab===Q)K.style.display="block";else K.style.display="none"});let J=this.#Q.querySelector("fig-content");if(J)J.style.padding=this.#_[Q]?"0":"";if(Q==="gradient")requestAnimationFrame(()=>{this.#G();let K=Y.querySelector(".fig-fill-picker-gradient-bar-input");K?.refreshLayout?.(),requestAnimationFrame(()=>{K?.refreshLayout?.()})});if(Q==="webcam")this.#s?.();if(this.#U(),X)this.#Z()}#_Q(){let Q=this.#Q.querySelector('[data-tab="solid"]'),X=this.getAttribute("alpha")!=="false",Y=this.getAttribute("experimental"),Z=Y?`experimental="${Y}"`:"";if(Q.innerHTML=`
|
|
20
20
|
<fig-preview class="fig-fill-picker-color-area">
|
|
21
21
|
<canvas width="200" height="200"></canvas>
|
|
22
22
|
<fig-handle
|
|
23
23
|
aria-label="Color saturation and brightness"
|
|
24
24
|
type="color"
|
|
25
|
-
color="${this.#
|
|
25
|
+
color="${this.#B({...this.#Y,a:1})}"
|
|
26
26
|
data-no-color-picker
|
|
27
27
|
drag
|
|
28
28
|
drag-surface=".fig-fill-picker-color-area"
|
|
@@ -32,11 +32,11 @@ var e=(f,X)=>()=>(f&&(X=f(f=0)),X);var ff={};var p=e(()=>{/*! Vendored from @ung
|
|
|
32
32
|
</fig-preview>
|
|
33
33
|
<div class="fig-fill-picker-sliders">
|
|
34
34
|
<fig-tooltip text="Sample color"><fig-button icon variant="ghost" class="fig-fill-picker-eyedropper" aria-label="Sample color"><fig-icon name="eyedropper"></fig-icon></fig-button></fig-tooltip>
|
|
35
|
-
<fig-slider type="hue" text="false" min="0" max="360" aria-label="Hue" value="${this.#
|
|
36
|
-
${X?`<fig-slider type="opacity" text="true" units="%" min="0" max="100" aria-label="Opacity" value="${this.#
|
|
35
|
+
<fig-slider type="hue" text="false" min="0" max="360" aria-label="Hue" value="${this.#Y.h}"></fig-slider>
|
|
36
|
+
${X?`<fig-slider type="opacity" text="true" units="%" min="0" max="100" aria-label="Opacity" value="${this.#Y.a*100}" color="${this.#B(this.#Y)}"></fig-slider>`:""}
|
|
37
37
|
</div>
|
|
38
38
|
<fig-field class="fig-fill-picker-inputs">
|
|
39
|
-
<fig-dropdown class="fig-fill-picker-input-mode" label="Color value format" ${
|
|
39
|
+
<fig-dropdown class="fig-fill-picker-input-mode" label="Color value format" ${Z} value="${this.#T}">
|
|
40
40
|
<option value="hex">Hex</option>
|
|
41
41
|
<option value="rgb">RGB</option>
|
|
42
42
|
<option value="hsl">HSL</option>
|
|
@@ -46,29 +46,29 @@ var e=(f,X)=>()=>(f&&(X=f(f=0)),X);var ff={};var p=e(()=>{/*! Vendored from @ung
|
|
|
46
46
|
</fig-dropdown>
|
|
47
47
|
<span class="fig-fill-picker-input-fields"></span>
|
|
48
48
|
</fig-field>
|
|
49
|
-
`,this.#
|
|
50
|
-
${X("Red",
|
|
51
|
-
${X("Green",
|
|
52
|
-
${X("Blue",
|
|
53
|
-
</div>`;break;case"hsl":
|
|
54
|
-
${X("Hue",
|
|
55
|
-
${X("Saturation",
|
|
56
|
-
${X("Lightness",
|
|
57
|
-
</div>`;break;case"hsb":
|
|
58
|
-
${X("Hue",
|
|
59
|
-
${X("Saturation",
|
|
60
|
-
${X("Brightness",
|
|
61
|
-
</div>`;break;case"lab":
|
|
62
|
-
${X("Lightness",
|
|
63
|
-
${X("Green-Red axis",
|
|
64
|
-
${X("Blue-Yellow axis",
|
|
65
|
-
</div>`;break;case"lch":
|
|
66
|
-
${X("Lightness",
|
|
67
|
-
${X("Chroma",
|
|
68
|
-
${X("Hue",
|
|
69
|
-
</div>`;break;default:
|
|
49
|
+
`,this.#L=Q.querySelector("canvas"),this.#k=Q.querySelector("fig-handle"),this.#H(),this.#z(),this.#t(),this.#N=Q.querySelector('fig-slider[type="hue"]'),this.#N.addEventListener("input",(J)=>{this.#Y.h=parseFloat(J.target.value),this.#H(),this.#z(),this.#E(),this.#Z()}),this.#N.addEventListener("change",()=>{this.#M()}),X)this.#F=Q.querySelector('fig-slider[type="opacity"]'),this.#F.addEventListener("input",(J)=>{this.#Y.a=parseFloat(J.target.value)/100,this.#E(),this.#Z()}),this.#F.addEventListener("change",()=>{this.#M()});Q.querySelector(".fig-fill-picker-input-mode").addEventListener("change",(J)=>{this.#T=J.target.value,this.#e()}),this.#e();let j=Q.querySelector(".fig-fill-picker-eyedropper");if("EyeDropper"in window)j.addEventListener("click",async()=>{try{let K=await new EyeDropper().open();this.#Y={...this.#m(K.sRGBHex),a:this.#Y.a},this.#H(),this.#z(),this.#E(),this.#Z()}catch(J){}});else j.setAttribute("disabled",""),j.title="EyeDropper not supported in this browser"}#qQ(){let Q=this.#Q?.querySelector('[data-tab="solid"]');if(Q){let X=Q.querySelector("canvas");if(X){let Y=document.createElement("canvas");Y.width=X.width,Y.height=X.height,X.replaceWith(Y),this.#L=Y,this.#t()}this.#H(),this.#z()}this.#R(),this.#Z()}#H(){if(!this.#L&&this.#Q)this.#L=this.#Q.querySelector('[data-tab="solid"] canvas');if(!this.#L)return;let Q=this.#q==="display-p3"?"display-p3":"srgb",X=this.#L.getContext("2d",{colorSpace:Q});if(!X)return;let Y=this.#L.width,Z=this.#L.height;X.clearRect(0,0,Y,Z);let $=this.#Y.h,j=this.#q==="display-p3",J=X.createLinearGradient(0,0,Y,0);if(j){J.addColorStop(0,"color(display-p3 1 1 1)");let[O,W,L]=hslToP3($,100,50);J.addColorStop(1,`color(display-p3 ${O} ${W} ${L})`)}else J.addColorStop(0,"#FFFFFF"),J.addColorStop(1,`hsl(${$}, 100%, 50%)`);X.fillStyle=J,X.fillRect(0,0,Y,Z);let K=X.createLinearGradient(0,0,0,Z);K.addColorStop(0,"rgba(0,0,0,0)"),K.addColorStop(1,"rgba(0,0,0,1)"),X.fillStyle=K,X.fillRect(0,0,Y,Z)}#z(Q=0){if(!this.#k||!this.#L)return;let X=this.#L.getBoundingClientRect();if((X.width===0||X.height===0)&&Q<5){requestAnimationFrame(()=>this.#z(Q+1));return}let Y=Math.max(0,Math.min(100,this.#Y.s)),Z=Math.max(0,Math.min(100,100-this.#Y.v));this.#k.setAttribute("value",`${Y}% ${Z}%`),this.#k.setAttribute("color",this.#B({...this.#Y,a:1}))}#g(Q,X,Y={}){let{updateHandle:Z=!0,emitInput:$=!0,emitChange:j=!1}=Y;if(this.#Y.s=Math.max(0,Math.min(100,Q*100)),this.#Y.v=Math.max(0,Math.min(100,(1-X)*100)),this.#k)this.#k.setAttribute("color",this.#B({...this.#Y,a:1}));if(Z)this.#z();if(this.#E(),$)this.#Z();if(j)this.#M()}#t(){if(this.#D)this.#D(),this.#D=null;if(!this.#L||!this.#k)return;let Q=this.#L.parentElement||this.#L,X=this.#k,Y=!1,Z=(W,L={})=>{let U=Q.getBoundingClientRect();if(U.width===0||U.height===0)return;let _=Math.max(0,Math.min(W.clientX-U.left,U.width)),M=Math.max(0,Math.min(W.clientY-U.top,U.height));this.#g(_/U.width,M/U.height,L)},$=(W)=>{if(W.button!==0)return;if(W.target===X||X.contains(W.target))return;Y=!0,this.#V=!0,Q.setPointerCapture(W.pointerId),Z(W,{updateHandle:!0,emitInput:!0})},j=(W)=>{if(!Y)return;if(W.buttons===0){J();return}Z(W,{updateHandle:!0,emitInput:!0})},J=()=>{if(!Y)return;Y=!1,this.#V=!1,this.#M()},K=(W)=>{this.#V=!0;let L=W.detail?.px,U=W.detail?.py;if(!Number.isFinite(L)||!Number.isFinite(U))return;X.setAttribute("value",`${L*100}% ${U*100}%`),this.#g(L,U,{updateHandle:!1,emitInput:!0})},O=(W)=>{let L=W.detail?.px,U=W.detail?.py;if(Number.isFinite(L)&&Number.isFinite(U))X.setAttribute("value",`${L*100}% ${U*100}%`),this.#g(L,U,{updateHandle:!1,emitInput:!1});this.#V=!1,this.#M()};Q.addEventListener("pointerdown",$),Q.addEventListener("pointermove",j),Q.addEventListener("pointerup",J),Q.addEventListener("pointercancel",J),Q.addEventListener("lostpointercapture",J),X.addEventListener("input",K),X.addEventListener("change",O),this.#D=()=>{Q.removeEventListener("pointerdown",$),Q.removeEventListener("pointermove",j),Q.removeEventListener("pointerup",J),Q.removeEventListener("pointercancel",J),Q.removeEventListener("lostpointercapture",J),X.removeEventListener("input",K),X.removeEventListener("change",O),this.#V=!1}}#e(){let Q=this.#Q?.querySelector(".fig-fill-picker-input-fields");if(!Q)return;let X=($,j)=>`<fig-tooltip text="${$}">${j}</fig-tooltip>`,Y=($,j,J,K,O)=>`<fig-input-number class="${$}" aria-label="${j}" min="${J}" max="${K}"${O!=null?` step="${O}"`:""}></fig-input-number>`,Z;switch(this.#T){case"rgb":Z=`<div class="input-combo">
|
|
50
|
+
${X("Red",Y("fig-fill-picker-ci-r","Red",0,255))}
|
|
51
|
+
${X("Green",Y("fig-fill-picker-ci-g","Green",0,255))}
|
|
52
|
+
${X("Blue",Y("fig-fill-picker-ci-b","Blue",0,255))}
|
|
53
|
+
</div>`;break;case"hsl":Z=`<div class="input-combo">
|
|
54
|
+
${X("Hue",Y("fig-fill-picker-ci-h","Hue",0,360))}
|
|
55
|
+
${X("Saturation",Y("fig-fill-picker-ci-s","Saturation",0,100))}
|
|
56
|
+
${X("Lightness",Y("fig-fill-picker-ci-l","Lightness",0,100))}
|
|
57
|
+
</div>`;break;case"hsb":Z=`<div class="input-combo">
|
|
58
|
+
${X("Hue",Y("fig-fill-picker-ci-h","Hue",0,360))}
|
|
59
|
+
${X("Saturation",Y("fig-fill-picker-ci-s","Saturation",0,100))}
|
|
60
|
+
${X("Brightness",Y("fig-fill-picker-ci-v","Brightness",0,100))}
|
|
61
|
+
</div>`;break;case"lab":Z=`<div class="input-combo">
|
|
62
|
+
${X("Lightness",Y("fig-fill-picker-ci-okl","Lightness",0,100))}
|
|
63
|
+
${X("Green-Red axis",Y("fig-fill-picker-ci-oka","Green-Red axis",-0.4,0.4,0.001))}
|
|
64
|
+
${X("Blue-Yellow axis",Y("fig-fill-picker-ci-okb","Blue-Yellow axis",-0.4,0.4,0.001))}
|
|
65
|
+
</div>`;break;case"lch":Z=`<div class="input-combo">
|
|
66
|
+
${X("Lightness",Y("fig-fill-picker-ci-okl","Lightness",0,100))}
|
|
67
|
+
${X("Chroma",Y("fig-fill-picker-ci-okc","Chroma",0,0.4,0.001))}
|
|
68
|
+
${X("Hue",Y("fig-fill-picker-ci-okh","Hue",0,360))}
|
|
69
|
+
</div>`;break;default:Z='<fig-input-text class="fig-fill-picker-ci-hex" aria-label="Hex color" placeholder="FFFFFF"></fig-input-text>';break}Q.innerHTML=Z,this.#zQ(),requestAnimationFrame(()=>this.#E())}#zQ(){let Q=this.#Q?.querySelector(".fig-fill-picker-input-fields");if(!Q)return;let X=()=>{if(this.#V)return;let $=this.#MQ();if(!$)return;if(this.#Y={...$,a:this.#Y.a},this.#H(),this.#z(),this.#N)this.#N.setAttribute("value",this.#Y.h);this.#Z()},Y=()=>this.#M();Q.querySelectorAll("fig-input-number, fig-input-text").forEach(($)=>{$.addEventListener("input",X),$.addEventListener("change",Y)})}#MQ(){let Q=(Y)=>this.#Q?.querySelector(`.${Y}`),X=(Y)=>parseFloat(Q(Y)?.value??0);switch(this.#T){case"rgb":return this.#C({r:X("fig-fill-picker-ci-r"),g:X("fig-fill-picker-ci-g"),b:X("fig-fill-picker-ci-b")});case"hsl":{let Y=this.#SQ({h:X("fig-fill-picker-ci-h"),s:X("fig-fill-picker-ci-s"),l:X("fig-fill-picker-ci-l")});return this.#C(Y)}case"hsb":return{h:X("fig-fill-picker-ci-h"),s:X("fig-fill-picker-ci-s"),v:X("fig-fill-picker-ci-v"),a:1};case"lab":{let Y=this.#jQ({l:X("fig-fill-picker-ci-okl")/100,a:X("fig-fill-picker-ci-oka"),b:X("fig-fill-picker-ci-okb")});return this.#C(Y)}case"lch":{let Y=this.#IQ({l:X("fig-fill-picker-ci-okl")/100,c:X("fig-fill-picker-ci-okc"),h:X("fig-fill-picker-ci-okh")});return this.#C(Y)}default:{let Y=Q("fig-fill-picker-ci-hex");if(!Y)return null;let Z=Y.value.replace(/^#/,"");if(Z.length===3)Z=Z[0]+Z[0]+Z[1]+Z[1]+Z[2]+Z[2];if(Z.length!==6||!/^[0-9a-fA-F]{6}$/.test(Z))return null;return this.#m(`#${Z}`)}}}#E(){if(!this.#Q)return;let Q=this.#B(this.#Y),X=this.#$Q(this.#Y),Y=($)=>this.#Q.querySelector(`.${$}`),Z=($,j)=>{let J=Y($);if(J)J.setAttribute("value",j)};switch(this.#T){case"rgb":Z("fig-fill-picker-ci-r",X.r),Z("fig-fill-picker-ci-g",X.g),Z("fig-fill-picker-ci-b",X.b);break;case"hsl":{let $=this.#CQ(X);Z("fig-fill-picker-ci-h",Math.round($.h)),Z("fig-fill-picker-ci-s",Math.round($.s)),Z("fig-fill-picker-ci-l",Math.round($.l));break}case"hsb":Z("fig-fill-picker-ci-h",Math.round(this.#Y.h)),Z("fig-fill-picker-ci-s",Math.round(this.#Y.s)),Z("fig-fill-picker-ci-v",Math.round(this.#Y.v));break;case"lab":{let $=this.#JQ(X);Z("fig-fill-picker-ci-okl",Math.round($.l*100)),Z("fig-fill-picker-ci-oka",+$.a.toFixed(3)),Z("fig-fill-picker-ci-okb",+$.b.toFixed(3));break}case"lch":{let $=this.#xQ(X);Z("fig-fill-picker-ci-okl",Math.round($.l*100)),Z("fig-fill-picker-ci-okc",+$.c.toFixed(3)),Z("fig-fill-picker-ci-okh",Math.round($.h));break}default:Z("fig-fill-picker-ci-hex",Q.replace(/^#/,"").toUpperCase());break}if(this.#F)this.#F.setAttribute("color",Q);this.#U()}#kQ(){let Q=this.#Q.querySelector('[data-tab="gradient"]'),X=this.getAttribute("experimental"),Y=X?`experimental="${X}"`:"";Q.innerHTML=`
|
|
70
70
|
<fig-field class="fig-fill-picker-gradient-header">
|
|
71
|
-
<fig-dropdown class="fig-fill-picker-gradient-type" label="Gradient type" ${
|
|
71
|
+
<fig-dropdown class="fig-fill-picker-gradient-type" label="Gradient type" ${Y} value="${this.#X.type}">
|
|
72
72
|
<option value="linear" selected>Linear</option>
|
|
73
73
|
<option value="radial">Radial</option>
|
|
74
74
|
<option value="angular">Angular</option>
|
|
@@ -87,26 +87,8 @@ var e=(f,X)=>()=>(f&&(X=f(f=0)),X);var ff={};var p=e(()=>{/*! Vendored from @ung
|
|
|
87
87
|
</fig-tooltip>
|
|
88
88
|
</fig-field>
|
|
89
89
|
<fig-preview class="fig-fill-picker-gradient-preview">
|
|
90
|
-
<fig-input-gradient class="fig-fill-picker-gradient-bar-input" aria-label="Gradient stops" edit="true" mode="tip" size="large" value='${JSON.stringify({type:"gradient",gradient:
|
|
90
|
+
<fig-input-gradient class="fig-fill-picker-gradient-bar-input" aria-label="Gradient stops" edit="true" mode="tip" size="large" value='${JSON.stringify({type:"gradient",gradient:f(this.#X)})}'></fig-input-gradient>
|
|
91
91
|
</fig-preview>
|
|
92
|
-
<fig-field class="fig-fill-picker-gradient-interpolation">
|
|
93
|
-
<label>Mixing</label>
|
|
94
|
-
<fig-dropdown class="fig-fill-picker-gradient-space" label="Gradient mixing" full ${J} value="${this.#X.interpolationSpace==="oklch"?`oklch-${this.#X.hueInterpolation||"shorter"}`:this.#X.interpolationSpace}">
|
|
95
|
-
<optgroup label="sRGB">
|
|
96
|
-
<option value="srgb">Classic</option>
|
|
97
|
-
<option value="srgb-linear">Linear</option>
|
|
98
|
-
</optgroup>
|
|
99
|
-
<optgroup label="OKLab">
|
|
100
|
-
<option value="oklab">Perceptual</option>
|
|
101
|
-
</optgroup>
|
|
102
|
-
<optgroup label="OKLCH">
|
|
103
|
-
<option value="oklch-shorter">Shorter hue</option>
|
|
104
|
-
<option value="oklch-longer">Longer hue</option>
|
|
105
|
-
<option value="oklch-increasing">Increasing hue</option>
|
|
106
|
-
<option value="oklch-decreasing">Decreasing hue</option>
|
|
107
|
-
</optgroup>
|
|
108
|
-
</fig-dropdown>
|
|
109
|
-
</fig-field>
|
|
110
92
|
<div class="fig-fill-picker-gradient-stops">
|
|
111
93
|
<fig-header class="fig-fill-picker-gradient-stops-header" borderless>
|
|
112
94
|
<span>Stops</span>
|
|
@@ -114,33 +96,57 @@ var e=(f,X)=>()=>(f&&(X=f(f=0)),X);var ff={};var p=e(()=>{/*! Vendored from @ung
|
|
|
114
96
|
<fig-icon name="add"></fig-icon>
|
|
115
97
|
</fig-button>
|
|
116
98
|
</fig-header>
|
|
117
|
-
<div class="fig-fill-picker-gradient-stops-list"
|
|
99
|
+
<div class="fig-fill-picker-gradient-stops-list">
|
|
100
|
+
<fig-reorder></fig-reorder>
|
|
101
|
+
</div>
|
|
102
|
+
</div>
|
|
103
|
+
<div class="fig-fill-picker-gradient-interpolation">
|
|
104
|
+
<fig-header class="fig-fill-picker-gradient-interpolation-header" borderless>
|
|
105
|
+
<span>Color interpolation</span>
|
|
106
|
+
</fig-header>
|
|
107
|
+
<fig-field class="fig-fill-picker-gradient-interpolation-field">
|
|
108
|
+
<fig-dropdown class="fig-fill-picker-gradient-space" label="Color interpolation" full ${Y} value="${this.#X.interpolationSpace==="oklch"?`oklch-${this.#X.hueInterpolation||"shorter"}`:this.#X.interpolationSpace}">
|
|
109
|
+
<optgroup label="sRGB">
|
|
110
|
+
<option value="srgb">Classic</option>
|
|
111
|
+
<option value="srgb-linear">Linear</option>
|
|
112
|
+
</optgroup>
|
|
113
|
+
<optgroup label="OKLab">
|
|
114
|
+
<option value="oklab">Perceptual</option>
|
|
115
|
+
</optgroup>
|
|
116
|
+
<optgroup label="OKLCH">
|
|
117
|
+
<option value="oklch-shorter">Shorter hue</option>
|
|
118
|
+
<option value="oklch-longer">Longer hue</option>
|
|
119
|
+
<option value="oklch-increasing">Increasing hue</option>
|
|
120
|
+
<option value="oklch-decreasing">Decreasing hue</option>
|
|
121
|
+
</optgroup>
|
|
122
|
+
</fig-dropdown>
|
|
123
|
+
</fig-field>
|
|
118
124
|
</div>
|
|
119
|
-
`,this.#
|
|
120
|
-
<fig-field class="fig-fill-picker-gradient-stop-row" data-index="${
|
|
121
|
-
<fig-input-number class="fig-fill-picker-stop-position" aria-label="Gradient stop position" min="0" max="100" value="${
|
|
122
|
-
<fig-input-color class="fig-fill-picker-stop-color" aria-label="Gradient stop color" text="true" alpha="true" picker="figma" picker-dialog-position="right" value="${
|
|
125
|
+
`,this.#G(),this.#FQ(Q)}#FQ(Q){let X=Q.querySelector(".fig-fill-picker-gradient-type"),Y=(U)=>U.currentTarget?.value??U.target?.value??U.detail,Z=(U)=>{this.#X.type=Y(U),this.#G(),this.#Z()};X.addEventListener("change",Z);let $=Q.querySelector(".fig-fill-picker-gradient-space"),j=(U)=>{let _=Y(U),M=_,R="shorter";if(_.startsWith("oklch-"))M="oklch",R=_.slice(6);this.#X=F({...this.#X,interpolationSpace:M,hueInterpolation:R}),this.#G(),this.#Z()};$?.addEventListener("change",j),Q.querySelector(".fig-fill-picker-gradient-angle").addEventListener("input",(U)=>{let _=parseFloat(U.target.value)||0;this.#X.angle=(_+90)%360,this.#R(),this.#Z()});let K=Q.querySelector(".fig-fill-picker-gradient-cx"),O=Q.querySelector(".fig-fill-picker-gradient-cy");K?.addEventListener("input",(U)=>{let _=Number.parseFloat(U.target.value);this.#X.centerX=Number.isFinite(_)?_:50,this.#R(),this.#Z()}),O?.addEventListener("input",(U)=>{let _=Number.parseFloat(U.target.value);this.#X.centerY=Number.isFinite(_)?_:50,this.#R(),this.#Z()}),Q.querySelector(".fig-fill-picker-gradient-flip").addEventListener("click",()=>{this.#X.stops.forEach((U)=>{U.position=100-U.position}),this.#X.stops.sort((U,_)=>U.position-_.position),this.#G(),this.#Z()}),Q.querySelector(".fig-fill-picker-gradient-add").addEventListener("click",()=>{this.#X.stops.push({position:50,color:"#888888",opacity:100}),this.#X.stops.sort((_,M)=>_.position-M.position),this.#G(),this.#Z()});let W=Q.querySelector(".fig-fill-picker-gradient-bar-input");if(W){let U=(_)=>{if(_.stopPropagation(),this.#f)return;let M=_.detail;if(!M?.gradient)return;this.#X=F({...this.#X,...M.gradient}),this.#U(),this.#QQ()};W.addEventListener("input",(_)=>{U(_),this.#Z()}),W.addEventListener("change",(_)=>{U(_),this.#M()})}Q.querySelector(".fig-fill-picker-gradient-stops-list > fig-reorder")?.addEventListener("reorder",(U)=>{this.#VQ(U)})}#p(Q){let X=String(Q.color||"#888888").replace(/^#/,"").slice(0,6),Y=Q.opacity??100;if(Y>=100)return`#${X}`;let Z=Math.round(Y/100*255).toString(16).padStart(2,"0");return`#${X}${Z}`}#RQ(Q){if(!(Q instanceof HTMLElement))return"#888888";if(Q.hexOpaque)return this.#d(Q.hexOpaque);let X=Q.value;if(typeof X==="string"&&X.startsWith("#"))return this.#d(X.length>7?X.slice(0,7):X);let Y=Q.querySelector('fig-input-text:not([type="number"])'),Z=String(Y?.value??Y?.getAttribute("value")??"").replace(/#/g,"").slice(0,6);if(/^[0-9A-Fa-f]{6}$/.test(Z))return`#${Z.toUpperCase()}`;let $=Q.getAttribute("value");if(typeof $==="string"&&$.startsWith("#"))return this.#d($.length>7?$.slice(0,7):$);return"#888888"}#d(Q){let X=String(Q||"#888888").replace(/^#/,"").slice(0,6);if(!/^[0-9A-Fa-f]{6}$/.test(X))return"#888888";return`#${X.toUpperCase()}`}#BQ(Q){let X=Q.querySelector(".fig-fill-picker-stop-position"),Y=Q.querySelector(".fig-fill-picker-stop-color"),Z=parseFloat(X?.value??X?.getAttribute("value")??"0")||0,$=this.#RQ(Y),j=100;if(Y instanceof HTMLElement&&Y.rgba?.a!==void 0)j=Math.round(Y.rgba.a*100);else{let J=parseInt(Q.dataset.index,10);if(!isNaN(J)&&this.#X.stops[J])j=this.#X.stops[J].opacity??100}return{position:Z,color:$,opacity:j}}#l(Q){let X=parseInt(Q.dataset.index,10);if(isNaN(X)||X<0||X>=this.#X.stops.length)return;let Y={...this.#X.stops[X],...this.#BQ(Q)};this.#X.stops[X]=Y,this.#NQ(Q,Y)}#NQ(Q,X){let Y=Q.querySelector(".fig-fill-picker-stop-position");if(Y)Y.setAttribute("value",String(X.position));let Z=Q.querySelector(".fig-fill-picker-stop-color");if(Z)Z.setAttribute("value",this.#p(X))}#VQ(Q){let{oldIndex:X,newIndex:Y}=Q.detail??{};if(X==null||Y==null||X===Y||X<0||Y<0||X>=this.#X.stops.length||Y>=this.#X.stops.length)return;let $=Q.currentTarget.querySelectorAll(".fig-fill-picker-gradient-stop-row");$.forEach((J)=>this.#l(J));let[j]=this.#X.stops.splice(X,1);this.#X.stops.splice(Y,0,j),$.forEach((J,K)=>{J.dataset.index=String(K)}),this.#f=!0;try{this.#R(),this.#Z()}finally{this.#f=!1}}#G(){if(!this.#Q)return;let Q=this.#Q.querySelector('[data-tab="gradient"]');if(!Q)return;this.#X=F(this.#X);let X=Q.querySelector(".fig-fill-picker-gradient-angle"),Y=Q.querySelector(".fig-fill-picker-gradient-center");if(this.#X.type==="radial")X.style.display="none",Y.style.display="flex";else{X.style.display="block",Y.style.display="none";let $=(this.#X.angle-90+360)%360;X.setAttribute("value",$)}let Z=Q.querySelector(".fig-fill-picker-gradient-space");if(Z)Z.value=this.#X.interpolationSpace==="oklch"?`oklch-${this.#X.hueInterpolation||"shorter"}`:this.#X.interpolationSpace;this.#R(),this.#QQ()}#R(){if(!this.#Q)return;let Q=this.#Q.querySelector(".fig-fill-picker-gradient-bar-input");if(Q)this.#f=!0,Q.setAttribute("value",JSON.stringify({type:"gradient",gradient:f(this.#X)})),this.#f=!1;this.#U()}#QQ(){if(!this.#Q)return;let Q=this.#Q.querySelector(".fig-fill-picker-gradient-stops-list"),X=Q?.querySelector("fig-reorder");if(!Q||!X)return;let Y=X.querySelectorAll(".fig-fill-picker-gradient-stop-row");if(Y.length===this.#X.stops.length){this.#X.stops.forEach((Z,$)=>{let j=Y[$];j.dataset.index=$;let J=j.querySelector(".fig-fill-picker-stop-position");if(J)J.setAttribute("value",Z.position);let K=j.querySelector(".fig-fill-picker-stop-color");if(K)K.setAttribute("value",this.#p(Z));let O=j.querySelector(".fig-fill-picker-stop-remove");if(O)if(this.#X.stops.length<=2)O.setAttribute("disabled","");else O.removeAttribute("disabled")});return}this.#fQ(Q)}#fQ(Q){let X=Q.querySelector("fig-reorder");if(!X)return;X.innerHTML=this.#X.stops.map((Y,Z)=>`
|
|
126
|
+
<fig-field class="fig-fill-picker-gradient-stop-row" data-index="${Z}">
|
|
127
|
+
<fig-input-number class="fig-fill-picker-stop-position" aria-label="Gradient stop position" min="0" max="100" value="${Y.position}" units="%"></fig-input-number>
|
|
128
|
+
<fig-input-color class="fig-fill-picker-stop-color" aria-label="Gradient stop color" text="true" alpha="true" picker="figma" picker-dialog-position="right" value="${this.#p(Y)}"></fig-input-color>
|
|
123
129
|
<fig-button icon variant="ghost" class="fig-fill-picker-stop-remove" ${this.#X.stops.length<=2?"disabled":""} aria-label="Remove gradient stop">
|
|
124
130
|
<fig-icon name="minus"></fig-icon>
|
|
125
131
|
</fig-button>
|
|
126
132
|
</fig-field>
|
|
127
|
-
`).join(""),
|
|
133
|
+
`).join(""),X.querySelectorAll(".fig-fill-picker-gradient-stop-row").forEach((Y)=>{Y.querySelector(".fig-fill-picker-stop-position").addEventListener("input",()=>{this.#l(Y),this.#R(),this.#Z()});let Z=Y.querySelector(".fig-fill-picker-stop-color"),$=Z.querySelector("fig-fill-picker");if($)$.anchorElement=this.#Q;else requestAnimationFrame(()=>{let J=Z.querySelector("fig-fill-picker");if(J)J.anchorElement=this.#Q});let j=()=>{this.#l(Y),this.#f=!0;try{this.#R(),this.#Z()}finally{this.#f=!1}};Z.addEventListener("input",j),Z.addEventListener("change",j),Y.querySelector(".fig-fill-picker-stop-remove").addEventListener("click",()=>{let J=parseInt(Y.dataset.index,10);if(this.#X.stops.length>2)this.#X.stops.splice(J,1),this.#G(),this.#Z()})})}#i(Q,X=!0){let Y=F({...this.#X,interpolationSpace:Q??this.#X.interpolationSpace}),Z=this.#q==="display-p3",$=Y.stops.map((K)=>{let O=(K.opacity??100)/100;return`${Z?this.#AQ(K.color,O):this.#yQ(K.color,O)} ${K.position}%`}).join(", "),j=H(Y),J=X&&j?` ${j}`:"";switch(Y.type){case"linear":return`linear-gradient(${Y.angle}deg${J}, ${$})`;case"radial":return`radial-gradient(circle at ${Y.centerX}% ${Y.centerY}%${J}, ${$})`;case"angular":return`conic-gradient(from ${Y.angle}deg${J}, ${$})`;default:return`linear-gradient(${Y.angle}deg${J}, ${$})`}}static#XQ=new Map;#YQ(Q){let X=V.#XQ.get(Q);if(X!==void 0)return X;let Y=document.createElement("div");Y.style.background=Q;let Z=!!Y.style.background;return V.#XQ.set(Q,Z),Z}#ZQ(){let Q=this.#i(void 0,!0);if(this.#YQ(Q))return Q;let X=this.#i("oklab",!0);if(this.#YQ(X))return X;return this.#i("oklab",!1)}#DQ(){let Q=this.#Q.querySelector('[data-tab="image"]'),X=this.getAttribute("experimental"),Y=X?`experimental="${X}"`:"";Q.innerHTML=`
|
|
128
134
|
<fig-field class="fig-fill-picker-media-header">
|
|
129
|
-
<fig-dropdown class="fig-fill-picker-scale-mode" label="Image scale mode" ${
|
|
135
|
+
<fig-dropdown class="fig-fill-picker-scale-mode" label="Image scale mode" ${Y} value="${this.#J.scaleMode}">
|
|
130
136
|
<option value="fill" selected>Fill</option>
|
|
131
137
|
<option value="fit">Fit</option>
|
|
132
138
|
<option value="crop">Crop</option>
|
|
133
139
|
<option value="tile">Tile</option>
|
|
134
140
|
</fig-dropdown>
|
|
135
|
-
<fig-input-number class="fig-fill-picker-scale" aria-label="Image tile scale" min="1" max="200" value="${this
|
|
141
|
+
<fig-input-number class="fig-fill-picker-scale" aria-label="Image tile scale" min="1" max="200" value="${this.#J.scale}" units="%" ${this.#J.scaleMode==="tile"?"":'style="display: none;"'}></fig-input-number>
|
|
136
142
|
<fig-button class="fig-fill-picker-media-rotate" icon variant="ghost" aria-label="Rotate">
|
|
137
143
|
<fig-icon name="rotate"></fig-icon>
|
|
138
144
|
</fig-button>
|
|
139
145
|
</fig-field>
|
|
140
146
|
<fig-image class="fig-fill-picker-media-preview fig-fill-picker-image-preview" upload="true" label="Upload from computer" alt="Image fill preview" size="auto" aspect-ratio="1/1" fit="cover" checkerboard="true"></fig-image>
|
|
141
|
-
`,this.#
|
|
147
|
+
`,this.#GQ(Q)}#GQ(Q){let X=Q.querySelector(".fig-fill-picker-scale-mode"),Y=Q.querySelector(".fig-fill-picker-scale"),Z=Q.querySelector(".fig-fill-picker-image-preview");X.addEventListener("change",($)=>{this.#J.scaleMode=$.target.value,Y.style.display=$.target.value==="tile"?"block":"none",this.#P(Z),this.#U(),this.#Z()}),Y.addEventListener("input",($)=>{this.#J.scale=parseFloat($.target.value)||100,this.#P(Z),this.#U(),this.#Z()}),Z.addEventListener("loaded",($)=>{let j=$.detail?.src||Z.src;if(!j)return;this.#J.url=j,this.#P(Z),this.#U(),this.#Z()}),Z.addEventListener("change",()=>{if(Z.src)return;this.#J.url=null,this.#P(Z),this.#U(),this.#Z()}),this.#P(Z)}#P(Q){if(!this.#J.url){Q.removeAttribute("src"),Q.classList.remove("has-media","is-tiled"),Q.style.backgroundImage="",Q.style.backgroundPosition="",Q.style.backgroundRepeat="",Q.style.backgroundSize="";return}Q.setAttribute("src",this.#J.url),Q.classList.add("has-media"),Q.style.backgroundImage="",Q.style.backgroundPosition="",Q.style.backgroundRepeat="",Q.style.backgroundSize="",Q.mediaEl?.style.removeProperty("opacity");let X=Q.querySelector("fig-input-file[data-generated]");if(X)X.setAttribute("label","Replace"),X.removeAttribute("url");switch(this.#J.scaleMode){case"fill":Q.classList.remove("is-tiled"),Q.setAttribute("fit","cover");break;case"crop":Q.classList.remove("is-tiled"),Q.setAttribute("fit","cover");break;case"fit":Q.classList.remove("is-tiled"),Q.setAttribute("fit","contain");break;case"tile":if(Q.classList.add("is-tiled"),Q.setAttribute("fit","none"),Q.style.backgroundImage=`url(${this.#J.url})`,Q.style.backgroundPosition="top left",Q.style.backgroundSize=`${this.#J.scale}%`,Q.style.backgroundRepeat="repeat",Q.mediaEl)Q.mediaEl.style.opacity="0";break}}#u(Q){if(Q.tagName==="FIG-MEDIA"){if(!this.#K.url){Q.removeAttribute("src"),Q.classList.remove("has-media");return}Q.setAttribute("src",this.#K.url),Q.classList.add("has-media");let X=Q.querySelector("fig-input-file[data-generated]");if(X)X.setAttribute("label","Replace"),X.removeAttribute("url");switch(this.#K.scaleMode){case"fill":case"crop":Q.setAttribute("fit","cover");break;case"fit":Q.setAttribute("fit","contain");break}return}switch(Q.style.objectPosition="center",Q.style.width="100%",Q.style.height="100%",this.#K.scaleMode){case"fill":case"crop":Q.style.objectFit="cover";break;case"fit":Q.style.objectFit="contain";break}}#HQ(){let Q=this.#Q.querySelector('[data-tab="video"]'),X=this.getAttribute("experimental"),Y=X?`experimental="${X}"`:"";Q.innerHTML=`
|
|
142
148
|
<fig-field class="fig-fill-picker-media-header">
|
|
143
|
-
<fig-dropdown class="fig-fill-picker-scale-mode" label="Video scale mode" ${
|
|
149
|
+
<fig-dropdown class="fig-fill-picker-scale-mode" label="Video scale mode" ${Y} value="${this.#K.scaleMode}">
|
|
144
150
|
<option value="fill" selected>Fill</option>
|
|
145
151
|
<option value="fit">Fit</option>
|
|
146
152
|
<option value="crop">Crop</option>
|
|
@@ -150,9 +156,9 @@ var e=(f,X)=>()=>(f&&(X=f(f=0)),X);var ff={};var p=e(()=>{/*! Vendored from @ung
|
|
|
150
156
|
</fig-button>
|
|
151
157
|
</fig-field>
|
|
152
158
|
<fig-media class="fig-fill-picker-media-preview fig-fill-picker-video-preview" type="video" upload="true" label="Upload from computer" aria-label="Video fill preview" size="auto" aspect-ratio="1/1" fit="cover" checkerboard="true" autoplay="true" controls muted="true" loop="true"></fig-media>
|
|
153
|
-
`,this.#
|
|
159
|
+
`,this.#EQ(Q)}#EQ(Q){let X=Q.querySelector(".fig-fill-picker-scale-mode"),Y=Q.querySelector(".fig-fill-picker-video-preview");X.addEventListener("change",(Z)=>{this.#K.scaleMode=Z.target.value,this.#u(Y),this.#U(),this.#Z()}),Y.addEventListener("loaded",(Z)=>{let $=Z.detail?.src||Y.src;if(!$)return;this.#K.url=$,this.#u(Y),Y.play?.(),this.#U(),this.#Z()}),Y.addEventListener("change",()=>{if(Y.src)return;this.#K.url=null,this.#u(Y),this.#U(),this.#Z()}),this.#u(Y)}#PQ(){let Q=this.#Q.querySelector('[data-tab="webcam"]'),X=this.getAttribute("experimental"),Y=X?`experimental="${X}"`:"";Q.innerHTML=`
|
|
154
160
|
<fig-field class="fig-fill-picker-webcam-camera" style="display: none;">
|
|
155
|
-
<fig-dropdown class="fig-fill-picker-camera-select" label="Camera" full ${
|
|
161
|
+
<fig-dropdown class="fig-fill-picker-camera-select" label="Camera" full ${Y}>
|
|
156
162
|
</fig-dropdown>
|
|
157
163
|
</fig-field>
|
|
158
164
|
<fig-video class="fig-fill-picker-webcam-preview" aria-label="Webcam preview" aspect-ratio="1/1" fit="cover" checkerboard="true" autoplay="true" muted="true">
|
|
@@ -166,4 +172,4 @@ var e=(f,X)=>()=>(f&&(X=f(f=0)),X);var ff={};var p=e(()=>{/*! Vendored from @ung
|
|
|
166
172
|
Capture
|
|
167
173
|
</fig-button>
|
|
168
174
|
</div>
|
|
169
|
-
`,this.#
|
|
175
|
+
`,this.#TQ(Q)}#TQ(Q){let X=Q.querySelector(".fig-fill-picker-webcam-video"),Y=Q.querySelector(".fig-fill-picker-webcam-status"),Z=Q.querySelector(".fig-fill-picker-webcam-capture"),$=Q.querySelector(".fig-fill-picker-webcam-camera"),j=Q.querySelector(".fig-fill-picker-camera-select"),J=async(K=null)=>{this.#b();let O=this.#A;try{let W={video:K?{deviceId:{exact:K}}:!0},L=await navigator.mediaDevices.getUserMedia(W);if(O!==this.#A||!this.isConnected||this.#S!=="webcam"){L.getTracks().forEach((M)=>M.stop());return}this.#W.stream=L,X.srcObject=L,X.style.display="block",Y.style.display="none";let U=await navigator.mediaDevices.enumerateDevices();if(O!==this.#A)return;let _=U.filter((M)=>M.kind==="videoinput");if(_.length>1){if($.style.display="",j.querySelectorAll(":scope > option, :scope > optgroup").forEach((M)=>M.remove()),_.forEach((M,R)=>{let q=document.createElement("option");q.value=M.deviceId;let z=M.label||(_.length>1?`Camera ${R+1}`:"Camera");q.textContent=z.replace(/\s*\((?:[0-9a-f]{4}:)*([0-9a-f]{4})\)$/i,(k,N)=>{return` ${/^\d+$/.test(N)?Number.parseInt(N,10).toString():N.replace(/^0+/,"")||"0"}`}),j.append(q)}),K)j.value=K}else $.style.display="none",j.querySelectorAll(":scope > option, :scope > optgroup").forEach((M)=>M.remove())}catch(W){if(O!==this.#A)return;console.error("Webcam error:",W.name,W.message);let L="Camera access denied";if(W.name==="NotAllowedError")L="Camera permission denied";else if(W.name==="NotFoundError")L="No camera found";else if(W.name==="NotReadableError")L="Camera in use by another app";else if(W.name==="OverconstrainedError")L="Camera constraints not supported";else if(!window.isSecureContext)L="Camera requires secure context";Y.replaceChildren();let U=document.createElement("span");U.textContent=L,Y.appendChild(U),Y.style.display="flex",X.style.display="none"}};this.#s=J,j.addEventListener("change",(K)=>{J(K.target.value)}),Z.addEventListener("click",async()=>{if(!this.#W.stream)return;if(!X.videoWidth||!X.videoHeight)return;let K=document.createElement("canvas");K.width=X.videoWidth,K.height=X.videoHeight,K.getContext("2d").drawImage(X,0,0,K.width,K.height);let O=await new Promise((L)=>K.toBlob(L,"image/png"));if(!O)return;if(this.#W.snapshot?.startsWith("blob:"))URL.revokeObjectURL(this.#W.snapshot);this.#W.snapshot=URL.createObjectURL(O),this.#J.url=this.#W.snapshot;let W=this.#Q.querySelector(".fig-fill-picker-image-preview");if(W)this.#P(W);this.#c("image")})}#$Q(Q){let X=Q.h/360,Y=Q.s/100,Z=Q.v/100,$,j,J,K=Math.floor(X*6),O=X*6-K,W=Z*(1-Y),L=Z*(1-O*Y),U=Z*(1-(1-O)*Y);switch(K%6){case 0:$=Z,j=U,J=W;break;case 1:$=L,j=Z,J=W;break;case 2:$=W,j=Z,J=U;break;case 3:$=W,j=L,J=Z;break;case 4:$=U,j=W,J=Z;break;case 5:$=Z,j=W,J=L;break}return{r:Math.round($*255),g:Math.round(j*255),b:Math.round(J*255)}}#C(Q){let X=Q.r/255,Y=Q.g/255,Z=Q.b/255,$=Math.max(X,Y,Z),j=Math.min(X,Y,Z),J=$-j,K=0,O=$===0?0:J/$,W=$;if($!==j){switch($){case X:K=(Y-Z)/J+(Y<Z?6:0);break;case Y:K=(Z-X)/J+2;break;case Z:K=(X-Y)/J+4;break}K/=6}return{h:K*360,s:O*100,v:W*100,a:1}}#B(Q){if(!Q||typeof Q.h!=="number"||typeof Q.s!=="number"||typeof Q.v!=="number")return"#D9D9D9";let X=this.#$Q(Q),Y=(Z)=>{return(isNaN(Z)?217:Math.max(0,Math.min(255,Math.round(Z)))).toString(16).padStart(2,"0")};return`#${Y(X.r)}${Y(X.g)}${Y(X.b)}`}#m(Q){let X=parseInt(Q.slice(1,3),16),Y=parseInt(Q.slice(3,5),16),Z=parseInt(Q.slice(5,7),16);return this.#C({r:X,g:Y,b:Z})}#yQ(Q,X=1){let Y=parseInt(Q.slice(1,3),16),Z=parseInt(Q.slice(3,5),16),$=parseInt(Q.slice(5,7),16);return`rgba(${Y}, ${Z}, ${$}, ${X})`}#AQ(Q,X=1){let Y=+(parseInt(Q.slice(1,3),16)/255).toFixed(4),Z=+(parseInt(Q.slice(3,5),16)/255).toFixed(4),$=+(parseInt(Q.slice(5,7),16)/255).toFixed(4);return`color(display-p3 ${Y} ${Z} ${$} / ${X})`}#CQ(Q){let X=Q.r/255,Y=Q.g/255,Z=Q.b/255,$=Math.max(X,Y,Z),j=Math.min(X,Y,Z),J,K,O=($+j)/2;if($===j)J=K=0;else{let W=$-j;switch(K=O>0.5?W/(2-$-j):W/($+j),$){case X:J=((Y-Z)/W+(Y<Z?6:0))/6;break;case Y:J=((Z-X)/W+2)/6;break;case Z:J=((X-Y)/W+4)/6;break}}return{h:J*360,s:K*100,l:O*100}}#SQ(Q){let X=Q.h/360,Y=Q.s/100,Z=Q.l/100,$,j,J;if(Y===0)$=j=J=Z;else{let K=(L,U,_)=>{if(_<0)_+=1;if(_>1)_-=1;if(_<0.16666666666666666)return L+(U-L)*6*_;if(_<0.5)return U;if(_<0.6666666666666666)return L+(U-L)*(0.6666666666666666-_)*6;return L},O=Z<0.5?Z*(1+Y):Z+Y-Z*Y,W=2*Z-O;$=K(W,O,X+0.3333333333333333),j=K(W,O,X),J=K(W,O,X-0.3333333333333333)}return{r:Math.round($*255),g:Math.round(j*255),b:Math.round(J*255)}}#JQ(Q){let X=(U)=>{return U=U/255,U<=0.04045?U/12.92:Math.pow((U+0.055)/1.055,2.4)},Y=X(Q.r),Z=X(Q.g),$=X(Q.b),j=0.4122214708*Y+0.5363325363*Z+0.0514459929*$,J=0.2119034982*Y+0.6806995451*Z+0.1073969566*$,K=0.0883024619*Y+0.2817188376*Z+0.6299787005*$,O=Math.cbrt(j),W=Math.cbrt(J),L=Math.cbrt(K);return{l:0.2104542553*O+0.793617785*W-0.0040720468*L,a:1.9779984951*O-2.428592205*W+0.4505937099*L,b:0.0259040371*O+0.7827717662*W-0.808675766*L}}#xQ(Q){let X=this.#JQ(Q);return{l:X.l,c:Math.sqrt(X.a*X.a+X.b*X.b),h:(Math.atan2(X.b,X.a)*180/Math.PI+360)%360}}#jQ(Q){let X=Q.l+0.3963377774*Q.a+0.2158037573*Q.b,Y=Q.l-0.1055613458*Q.a-0.0638541728*Q.b,Z=Q.l-0.0894841775*Q.a-1.291485548*Q.b,$=X*X*X,j=Y*Y*Y,J=Z*Z*Z,K=(O)=>{let W=O<=0.0031308?12.92*O:1.055*Math.pow(O,0.4166666666666667)-0.055;return Math.round(Math.max(0,Math.min(1,W))*255)};return{r:K(4.0767416621*$-3.3077115913*j+0.2309699292*J),g:K(-1.2684380046*$+2.6097574011*j-0.3413193965*J),b:K(-0.0041960863*$-0.7034186147*j+1.707614701*J)}}#IQ(Q){let X=Q.h*Math.PI/180;return this.#jQ({l:Q.l,a:Q.c*Math.cos(X),b:Q.c*Math.sin(X)})}#Z(){this.#U(),this.dispatchEvent(new CustomEvent("input",{bubbles:!0,detail:this.value}))}#M(){this.dispatchEvent(new CustomEvent("change",{bubbles:!0,detail:this.value}))}get value(){let Q={type:this.#O,colorSpace:this.#q};switch(this.#O){case"solid":return{...Q,color:this.#B(this.#Y),alpha:this.#Y.a,hsv:{...this.#Y}};case"gradient":return{...Q,gradient:f(this.#X),css:this.#ZQ()};case"image":return{...Q,image:{...this.#J}};case"video":return{...Q,video:{...this.#K}};case"webcam":return{...Q,image:{url:this.#W.snapshot,scaleMode:"fill",scale:50}};default:return{...Q,...this.#x[this.#O]}}}set value(Q){if(typeof Q==="string")this.setAttribute("value",Q);else this.setAttribute("value",JSON.stringify(Q))}attributeChangedCallback(Q,X,Y){if(X===Y)return;switch(Q){case"value":if(this.#r(),this.#U(),this.#Q){if(!this.#V){if(this.#z(),this.#E(),this.#N)this.#N.setAttribute("value",this.#Y.h);if(this.#F)this.#F.setAttribute("value",this.#Y.a*100),this.#F.setAttribute("color",this.#B(this.#Y))}}break;case"disabled":this.#w();break;case"alpha":case"mode":case"experimental":{if(!this.#Q)break;let Z=this.#Q.open;if(this.#a(),Z&&this.isConnected)this.#h();break}case"aria-label":case"aria-labelledby":case"aria-describedby":this.#w();break}}}customElements.define("fig-fill-picker",V);
|