1/******* Do not edit this file ******* 2Simple Custom CSS and JS - by Silkypress.com 3Saved: Sep 08 2026 | 10:37:42 */ 4(function () { 5 "use strict"; 6 7 const MOBILE_BREAKPOINT = 767; 8 9 let fiboState = null; 10 let resizeTimer = null; 11 let retryCount = 0; 12 13 /* ========================================================== 14 HELPERS 15 ========================================================== */ 16 17 function isMobile() { 18 return window.innerWidth <= MOBILE_BREAKPOINT; 19 } 20 21 function getMobileContainer() { 22 return document.querySelector(".shoptimizer-mobile-menu"); 23 } 24 25 26 /* ========================================================== 27 BUILD DSM MOBILE MENU 28 ========================================================== */ 29 30 function buildMobileMenu() { 31 32 const container = getMobileContainer(); 33 34 if (!container) { 35 return null; 36 } 37 38 const existing = container.querySelector(".dsm-mobile-menu-ui"); 39 40 if (existing) { 41 return existing; 42 } 43 44 const menu = document.createElement("div"); 45 46 menu.className = "dsm-mobile-menu-ui"; 47 48 menu.innerHTML = ` 49 50 <!-- =============================================== 51 CONTACT BAR 52 ================================================ --> 53 54 <div class="dsm-mobile-topbar"> 55 56 <a 57 class="dsm-contact-number" 58 href="tel:+971555873714" 59 aria-label="Call +971 555 873 714" 60 > 61 62 <svg viewBox="0 0 24 24" aria-hidden="true"> 63 <path d="M5.5 3.5h3l1.4 4.1-2 1.6c1.2 2.5 3.2 4.5 5.7 5.7l1.6-2 4.1 1.4v3c0 .9-.7 1.7-1.6 1.8C10 20 4 14 3.7 6.3c0-.9.8-1.7 1.8-1.8Z"/> 64 </svg> 65 66 <span>+971 555 873 714</span> 67 68 </a> 69 70 71 <a 72 class="dsm-contact-number" 73 href="tel:+97125844433" 74 aria-label="Call +971 2 584 4433" 75 > 76 77 <svg viewBox="0 0 24 24" aria-hidden="true"> 78 <path d="M5.5 3.5h3l1.4 4.1-2 1.6c1.2 2.5 3.2 4.5 5.7 5.7l1.6-2 4.1 1.4v3c0 .9-.7 1.7-1.6 1.8C10 20 4 14 3.7 6.3c0-.9.8-1.7 1.8-1.8Z"/> 79 </svg> 80 81 <span>+971 2 584 4433</span> 82 83 </a> 84 85 </div> 86 87 88 <!-- =============================================== 89 HEADER 90 ================================================ --> 91 92 <div class="dsm-mobile-header"> 93 94 <button 95 type="button" 96 class="dsm-mobile-close" 97 aria-label="Close menu" 98 > 99 100 <svg viewBox="0 0 24 24" aria-hidden="true"> 101 <path d="M6 6L18 18M18 6L6 18"></path> 102 </svg> 103 104 </button> 105 106 107 <a 108 class="dsm-mobile-logo" 109 href="https://digitalsoftwaremarkett.com/" 110 aria-label="Digital Software Market" 111 > 112 113 <img 114 src="https://digitalsoftwaremarkett.com/wp-content/uploads/2025/08/cropped-DSM-logo-02-2-1.webp" 115 alt="Digital Software Market" 116 > 117 118 </a> 119 120 121 <a 122 class="dsm-mobile-cart" 123 href="https://digitalsoftwaremarkett.com/cart/" 124 aria-label="Shopping cart" 125 > 126 127 <svg viewBox="0 0 24 24" aria-hidden="true"> 128 129 <path d="M3 4H5L7.2 15.1C7.35 15.85 8 16.4 8.8 16.4H17.4C18.2 16.4 18.9 15.85 19.1 15.1L21 7.5H6"/> 130 131 <circle cx="9.5" cy="20" r="1.15"/> 132 <circle cx="18" cy="20" r="1.15"/> 133 134 </svg> 135 136 </a> 137 138 </div> 139 140 141 <!-- =============================================== 142 REAL FIBOSEARCH 143 ================================================ --> 144 145 <div class="dsm-mobile-search"> 146 147 <div class="dsm-fibo-search-slot"></div> 148 149 </div> 150 151 152 <!-- =============================================== 153 NAVIGATION 154 ================================================ --> 155 156 <nav 157 class="dsm-mobile-navigation" 158 aria-label="DSM Mobile Navigation" 159 > 160 161 162 <!-- =========================================== 163 SIGN IN 164 ============================================ --> 165 166 <a 167 href="https://digitalsoftwaremarkett.com/my-account/" 168 class="dsm-mobile-row" 169 > 170
171 <span class="dsm-menu-label"> 172 173 <span class="dsm-menu-icon"> 174 175 <svg viewBox="0 0 24 24"> 176 177 <circle cx="12" cy="8" r="4"/> 178 179 <path d="M4.5 20c.7-4 3.3-6 7.5-6s6.8 2 7.5 6"/> 180 181 </svg> 182 183 </span> 184 185 <span>Sign In</span> 186 187 </span> 188 189 </a> 190 191 192 <!-- =========================================== 193 PRODUCTS 194 ============================================ --> 195 196 <div class="dsm-mobile-accordion"> 197 198 <button 199 type="button" 200 class="dsm-mobile-accordion-button" 201 aria-expanded="false" 202 > 203 204 <span class="dsm-menu-label"> 205 206 <span class="dsm-menu-icon"> 207 208 <svg viewBox="0 0 24 24"> 209 210 <path d="M4 7.5 12 3l8 4.5-8 4.5-8-4.5Z"/> 211 212 <path d="M4 7.5V16l8 5 8-5V7.5"/> 213 214 <path d="M12 12v9"/> 215 216 </svg> 217 218 </span> 219 220 <span>Products</span> 221 222 </span> 223 224 225 <svg 226 class="dsm-menu-chevron"
227 viewBox="0 0 24 24" 228 > 229 230 <path d="M7 9L12 14L17 9"/> 231 232 </svg> 233 234 </button> 235 236 237 <div class="dsm-mobile-accordion-panel"> 238 239 240 <!-- =================================== 241 WINDOWS 242 ==================================== --> 243 244 <div class="dsm-mobile-subgroup"> 245 246 <button 247 type="button" 248 class="dsm-mobile-sub-button" 249 aria-expanded="false" 250 > 251 252 <span class="dsm-menu-label"> 253 254 <span class="dsm-sub-icon dsm-fill-svg"> 255 256 <svg viewBox="0 0 24 24"> 257 258 <path d="M3 4.5 10.5 3v8H3V4.5Zm9 6.5V2.7L21 1v10h-9ZM3 12.5h7.5v8L3 19v-6.5Zm9 0h9v10l-9-1.8v-8.2Z"/> 259 260 </svg> 261 262 </span> 263 264 <span>Microsoft Windows</span> 265 266 </span> 267 268 269 <svg 270 class="dsm-menu-chevron"
271 viewBox="0 0 24 24" 272 > 273 274 <path d="M7 9L12 14L17 9"/> 275 276 </svg> 277 278 </button> 279 280 281 <div class="dsm-mobile-sub-panel"> 282 283 284 <a 285 href="https://digitalsoftwaremarkett.com/microsoft-windows-11/" 286 class="dsm-product-link" 287 > 288 289 <span class="dsm-product-icon dsm-fill-svg"> 290 291 <svg viewBox="0 0 24 24"> 292 293 <path d="M3 4h8v8H3V4Zm10 0h8v8h-8V4ZM3 14h8v8H3v-8Zm10 0h8v8h-8v-8Z"/> 294 295 </svg> 296 297 </span> 298 299 <span>Windows 11</span> 300 301 </a> 302 303 304 <a 305 href="https://digitalsoftwaremarkett.com/microsoft-windows-10/" 306 class="dsm-product-link" 307 > 308 309 <span class="dsm-product-icon dsm-fill-svg"> 310 311 <svg viewBox="0 0 24 24"> 312 313 <path d="M3 5.2 10.5 4v7H3V5.2ZM12 3.8 21 2.5V11h-9V3.8ZM3 12.5h7.5v7L3 18.3v-5.8Zm9 0h9V21l-9-1.3v-7.2Z"/> 314 315 </svg> 316 317 </span> 318 319 <span>Windows 10</span> 320 321 </a> 322 323 324 </div> 325 326 </div> 327 328 329 <!-- =================================== 330 OFFICE 331 ==================================== --> 332 333 <div class="dsm-mobile-subgroup"> 334 335 <button 336 type="button" 337 class="dsm-mobile-sub-button" 338 aria-expanded="false" 339 > 340 341 <span class="dsm-menu-label"> 342 343 <span class="dsm-sub-icon"> 344 345 <svg viewBox="0 0 24 24"> 346 347 <path d="M6 5.5 13.5 3 19 6v12l-5.5 3L6 18.5v-13Z"/> 348 349 <ellipse 350 cx="12.5" 351 cy="12" 352 rx="3" 353 ry="4" 354 /> 355 356 </svg> 357 358 </span> 359 360 <span>Microsoft Office</span> 361 362 </span> 363 364 365 <svg 366 class="dsm-menu-chevron"
367 viewBox="0 0 24 24" 368 > 369 370 <path d="M7 9L12 14L17 9"/> 371 372 </svg> 373 374 </button> 375 376 377 <div class="dsm-mobile-sub-panel"> 378 379 380 <a 381 href="https://digitalsoftwaremarkett.com/microsoft-office-365/" 382 class="dsm-product-link" 383 > 384 385 <span class="dsm-product-icon"> 386 387 <svg viewBox="0 0 24 24"> 388 389 <path d="M7.4 4.5 13 2l4.6 2.7L21 10v5l-5.6 6H9l-6-4V8l4.4-3.5Z"/> 390 391 <path d="M8 7.5 13 5l3.5 2v9L12 19l-4-2.3V7.5Z"/> 392 393 </svg> 394 395 </span> 396 397 <span>Microsoft 365</span> 398 399 </a> 400 401 402 <a 403 href="https://digitalsoftwaremarkett.com/microsoft-office-2024/" 404 class="dsm-product-link" 405 > 406 407 <span class="dsm-product-icon"> 408 409 <svg viewBox="0 0 24 24"> 410 411 <path d="M6 5 13 2.5 19 6v12l-6 3.5L6 19V5Z"/> 412 413 <ellipse 414 cx="12.5" 415 cy="12" 416 rx="3.2" 417 ry="4.5" 418 /> 419 420 </svg> 421 422 </span> 423 424 <span>Microsoft Office 2024</span> 425 426 </a> 427 428 429 <a 430 href="https://digitalsoftwaremarkett.com/microsoft-office-2021/" 431 class="dsm-product-link" 432 > 433 434 <span class="dsm-product-icon"> 435 436 <svg viewBox="0 0 24 24"> 437 438 <path d="M6 5 13 2.5 19 6v12l-6 3.5L6 19V5Z"/> 439 440 <ellipse 441 cx="12.5" 442 cy="12" 443 rx="3.2" 444 ry="4.5" 445 /> 446 447 </svg> 448 449 </span> 450 451 <span>Microsoft Office 2021</span> 452 453 </a> 454 455 456 </div> 457 458 </div> 459 460 461 <!-- =================================== 462 SERVERS 463 ==================================== --> 464 465 <div class="dsm-mobile-subgroup"> 466 467 <button 468 type="button" 469 class="dsm-mobile-sub-button" 470 aria-expanded="false" 471 > 472 473 <span class="dsm-menu-label"> 474 475 <span class="dsm-sub-icon"> 476 477 <svg viewBox="0 0 24 24"> 478 479 <rect 480 x="4" 481 y="4" 482 width="16" 483 height="6" 484 rx="1" 485 /> 486 487 <rect 488 x="4" 489 y="14" 490 width="16" 491 height="6" 492 rx="1" 493 /> 494 495 <circle cx="7.5" cy="7" r=".7"/> 496 497 <circle cx="7.5" cy="17" r=".7"/> 498 499 </svg> 500 501 </span> 502
503 <span>Microsoft Servers</span> 504 505 </span> 506 507 508 <svg 509 class="dsm-menu-chevron" 510 viewBox="0 0 24 24" 511 > 512 513 <path d="M7 9L12 14L17 9"/> 514 515 </svg> 516 517 </button> 518 519 520 <div class="dsm-mobile-sub-panel"> 521 522 523 <a 524 href="https://digitalsoftwaremarkett.com/windows-server/" 525 class="dsm-product-link" 526 > 527 528 <span class="dsm-product-icon"> 529 530 <svg viewBox="0 0 24 24"> 531 532 <rect 533 x="4" 534 y="3.5" 535 width="16" 536 height="7" 537 rx="1.5" 538 /> 539 540 <rect 541 x="4" 542 y="13.5" 543 width="16" 544 height="7" 545 rx="1.5" 546 /> 547 548 <circle cx="7.5" cy="7" r=".7"/> 549 550 <circle cx="7.5" cy="17" r=".7"/> 551 552 <path d="M11 7h6"/> 553 554 <path d="M11 17h6"/> 555 556 </svg> 557 558 </span> 559 560 <span>Windows Server</span> 561 562 </a> 563 564 565 <a 566 href="https://digitalsoftwaremarkett.com/sql-server/" 567 class="dsm-product-link" 568 > 569 570 <span class="dsm-product-icon"> 571 572 <svg viewBox="0 0 24 24"> 573 574 <ellipse 575 cx="12" 576 cy="5" 577 rx="7" 578 ry="3" 579 /> 580 581 <path d="M5 5v6c0 1.7 3.1 3 7 3s7-1.3 7-3V5"/> 582 583 <path d="M5 11v6c0 1.7 3.1 3 7 3s7-1.3 7-3v-6"/> 584 585 </svg> 586 587 </span> 588 589 <span>SQL Server</span> 590 591 </a> 592 593 594 <a 595 href="https://digitalsoftwaremarkett.com/exchange-server/" 596 class="dsm-product-link" 597 > 598 599 <span class="dsm-product-icon"> 600 601 <svg viewBox="0 0 24 24"> 602 603 <rect 604 x="3" 605 y="5" 606 width="18" 607 height="14" 608 rx="2" 609 /> 610 611 <path d="m4 7 8 6 8-6"/> 612 613 <path d="M7.5 9.5 4 16"/> 614 615 <path d="m16.5 9.5 3.5 6.5"/> 616 617 </svg> 618 619 </span> 620
621 <span>Exchange Server</span> 622 623 </a> 624 625 626 <a 627 href="https://digitalsoftwaremarkett.com/share-point-server/" 628 class="dsm-product-link" 629 > 630 631 <span class="dsm-product-icon"> 632 633 <svg viewBox="0 0 24 24"> 634 635 <circle cx="8" cy="12" r="4"/> 636 637 <circle cx="15.5" cy="7" r="3"/> 638 639 <circle cx="16" cy="17" r="3"/> 640 641 <path d="M11 9.5 13 8"/> 642 643 <path d="m11 14.5 2.3 1.3"/> 644 645 </svg> 646 647 </span> 648 649 <span>SharePoint Server</span> 650 651 </a> 652 653 654 </div> 655 656 </div> 657 658 659 <!-- =================================== 660 MICROSOFT BUSINESS 661 ==================================== --> 662 663 <div class="dsm-mobile-subgroup"> 664 665 <button 666 type="button" 667 class="dsm-mobile-sub-button" 668 aria-expanded="false" 669 > 670 671 <span class="dsm-menu-label"> 672 673 <span class="dsm-sub-icon"> 674 675 <svg viewBox="0 0 24 24"> 676 677 <rect 678 x="3" 679 y="7" 680 width="18" 681 height="12" 682 rx="2" 683 /> 684 685 <path d="M9 7V5h6v2"/> 686 687 <path d="M3 12h18"/> 688 689 <path d="M10 12v2h4v-2"/> 690 691 </svg> 692 693 </span> 694 695 <span>Microsoft Business</span> 696 697 </span> 698 699 700 <svg 701 class="dsm-menu-chevron"
702 viewBox="0 0 24 24" 703 > 704 705 <path d="M7 9L12 14L17 9"/> 706 707 </svg> 708 709 </button> 710 711 712 <div class="dsm-mobile-sub-panel"> 713 714 715 <a 716 href="https://digitalsoftwaremarkett.com/dynamics-365/" 717 class="dsm-product-link" 718 > 719 720 <span class="dsm-product-icon"> 721 722 <svg viewBox="0 0 24 24"> 723 724 <path d="M5 3 19 8v8L8 21l4-8L5 3Z"/> 725 726 <path d="m12 13 7-5"/> 727 728 </svg> 729 730 </span> 731 732 <span>Dynamics 365</span> 733 734 </a> 735 736 737 <a 738 href="https://digitalsoftwaremarkett.com/microsoft-power-bi/" 739 class="dsm-product-link" 740 > 741 742 <span class="dsm-product-icon dsm-fill-svg"> 743 744 <svg viewBox="0 0 24 24"> 745 746 <rect x="4" y="12" width="3" height="8" rx="1"/> 747 748 <rect x="8.5" y="8" width="3" height="12" rx="1"/> 749 750 <rect x="13" y="4" width="3" height="16" rx="1"/> 751 752 <rect x="17.5" y="2" width="3" height="18" rx="1"/> 753 754 </svg> 755 756 </span> 757 758 <span>Microsoft Power BI</span> 759 760 </a> 761 762 763 </div> 764 765 </div> 766 767 768 <!-- =================================== 769 OFFICE APPLICATIONS 770 ==================================== --> 771 772 <div class="dsm-mobile-subgroup"> 773 774 <button 775 type="button" 776 class="dsm-mobile-sub-button" 777 aria-expanded="false" 778 > 779 780 <span class="dsm-menu-label"> 781 782 <span class="dsm-sub-icon"> 783 784 <svg viewBox="0 0 24 24"> 785 786 <rect x="4" y="4" width="6" height="6" rx="1"/> 787 788 <rect x="14" y="4" width="6" height="6" rx="1"/> 789 790 <rect x="4" y="14" width="6" height="6" rx="1"/> 791 792 <rect x="14" y="14" width="6" height="6" rx="1"/> 793 794 </svg> 795 796 </span> 797 798 <span>Office Applications</span> 799 800 </span> 801 802 803 <svg 804 class="dsm-menu-chevron"
805 viewBox="0 0 24 24" 806 > 807 808 <path d="M7 9L12 14L17 9"/> 809 810 </svg> 811 812 </button> 813 814 815 <div class="dsm-mobile-sub-panel"> 816 817 818 <a 819 href="https://digitalsoftwaremarkett.com/microsoft-visio/" 820 class="dsm-product-link" 821 > 822 823 <span class="dsm-product-icon"> 824 825 <svg viewBox="0 0 24 24"> 826 827 <rect 828 x="3" 829 y="5" 830 width="8" 831 height="14" 832 rx="1.5" 833 /> 834 835 <circle cx="16.5" cy="7" r="2"/> 836 837 <rect 838 x="14" 839 y="13" 840 width="5" 841 height="4" 842 rx="1" 843 /> 844 845 <path d="m6 9 2 6 2-6"/> 846 847 <path d="M11 10h3.5"/> 848 849 </svg> 850 851 </span> 852 853 <span>Microsoft Visio</span> 854 855 </a> 856 857 858 <a 859 href="https://digitalsoftwaremarkett.com/microsoft-project/" 860 class="dsm-product-link" 861 > 862 863 <span class="dsm-product-icon"> 864 865 <svg viewBox="0 0 24 24"> 866 867 <rect 868 x="3" 869 y="4" 870 width="8" 871 height="16" 872 rx="1.5" 873 /> 874 875 <path d="M6 8h2.2a2.3 2.3 0 0 1 0 4.6H6V8Z"/> 876 877 <path d="M11 7h9"/> 878 879 <path d="M11 12h7"/> 880 881 <path d="M11 17h5"/> 882 883 </svg> 884 885 </span> 886 887 <span>Microsoft Project</span> 888 889 </a> 890 891 892 <a 893 href="https://digitalsoftwaremarkett.com/microsoft-visual-studio/" 894 class="dsm-product-link" 895 > 896 897 <span class="dsm-product-icon"> 898 899 <svg viewBox="0 0 24 24"> 900 901 <path d="m4 8 4-3 5 4 5-4 2 1v12l-2 1-5-4-5 4-4-3 5-4-5-4Z"/> 902 903 <path d="M13 9v6"/> 904 905 </svg> 906 907 </span> 908 909 <span>Microsoft Visual Studio</span> 910 911 </a> 912 913 914 </div> 915 916 </div> 917 918 919 <!-- =================================== 920 AUTODESK 921 ==================================== --> 922 923 <div class="dsm-mobile-subgroup"> 924 925 <button 926 type="button" 927 class="dsm-mobile-sub-button" 928 aria-expanded="false" 929 > 930
931 <span class="dsm-menu-label"> 932 933 <span class="dsm-sub-icon"> 934 935 <svg viewBox="0 0 24 24"> 936 937 <path d="M12 3 4.5 20h4l2-4.5h5L17.5 20h4L12 3Z"/> 938 939 <path d="M12 9.5 14.2 14H9.8L12 9.5Z"/> 940 941 </svg> 942 943 </span> 944 945 <span>Autodesk</span> 946 947 </span> 948 949 950 <svg 951 class="dsm-menu-chevron" 952 viewBox="0 0 24 24" 953 > 954 955 <path d="M7 9L12 14L17 9"/> 956 957 </svg> 958 959 </button> 960 961 962 <div class="dsm-mobile-sub-panel"> 963 964 965 <a 966 href="https://digitalsoftwaremarkett.com/autodesk-2027/" 967 class="dsm-product-link" 968 > 969 970 <span class="dsm-product-icon"> 971 972 <svg viewBox="0 0 24 24"> 973 974 <path d="M12 3 4 20h4.3l1.8-4h5l1.8 4H21L12 3Z"/> 975 976 <path d="M12 9.5 14.2 14H9.8L12 9.5Z"/> 977 978 </svg> 979 980 </span> 981 982 <span>Autodesk 2027</span> 983 984 </a> 985 986 987 <a 988 href="https://digitalsoftwaremarkett.com/autodesk-2026/" 989 class="dsm-product-link" 990 > 991 992 <span class="dsm-product-icon"> 993 994 <svg viewBox="0 0 24 24"> 995 996 <path d="M12 3 4 20h4.3l1.8-4h5l1.8 4H21L12 3Z"/> 997 998 <path d="M12 9.5 14.2 14H9.8L12 9.5Z"/> 999 1000 </svg> 1001 1002 </span> 1003 1004 <span>Autodesk 2026</span> 1005 1006 </a> 1007 1008 1009 <a 1010 href="https://digitalsoftwaremarkett.com/autodesk-2025/" 1011 class="dsm-product-link" 1012 > 1013 1014 <span class="dsm-product-icon"> 1015 1016 <svg viewBox="0 0 24 24"> 1017 1018 <path d="M12 3 4 20h4.3l1.8-4h5l1.8 4H21L12 3Z"/> 1019 1020 <path d="M12 9.5 14.2 14H9.8L12 9.5Z"/> 1021 1022 </svg> 1023 1024 </span> 1025 1026 <span>Autodesk 2025</span> 1027 1028 </a> 1029 1030 1031 </div> 1032 1033 </div> 1034 1035 1036 <!-- =================================== 1037 CREATIVE TOOLS 1038 ==================================== --> 1039 1040 <div class="dsm-mobile-subgroup"> 1041 1042 <button 1043 type="button" 1044 class="dsm-mobile-sub-button" 1045 aria-expanded="false" 1046 > 1047 1048 <span class="dsm-menu-label"> 1049 1050 <span class="dsm-sub-icon"> 1051 1052 <svg viewBox="0 0 24 24"> 1053 1054 <path d="M4 20 15.5 8.5"/> 1055 1056 <path d="M14 4 15 7l3 1-3 1-1 3-1-3-3-1 3-1 1-3Z"/> 1057 1058 <path d="M6 14l.8 2.2L9 17l-2.2.8L6 20l-.8-2.2L3 17l2.2-.8L6 14Z"/> 1059 1060 </svg> 1061 1062 </span> 1063
1064 <span>Creative Tools</span> 1065 1066 </span> 1067 1068 1069 <svg 1070 class="dsm-menu-chevron" 1071 viewBox="0 0 24 24" 1072 > 1073 1074 <path d="M7 9L12 14L17 9"/> 1075 1076 </svg> 1077 1078 </button> 1079 1080 1081 <div class="dsm-mobile-sub-panel"> 1082 1083 1084 <a 1085 href="https://digitalsoftwaremarkett.com/product/adobe-creative-cloud-all-apps-1-year-subscription/" 1086 class="dsm-product-link" 1087 > 1088 1089 <span class="dsm-product-icon"> 1090 1091 <svg viewBox="0 0 24 24"> 1092 1093 <path d="M4 19 10 4h4l6 15"/> 1094 1095 <path d="m8 15 8-11"/> 1096 1097 <path d="M9.5 15h5"/> 1098 1099 </svg> 1100 1101 </span> 1102 1103 <span>Adobe Creative Cloud</span> 1104 1105 </a> 1106 1107 1108 <a 1109 href="https://digitalsoftwaremarkett.com/pointblank/" 1110 class="dsm-product-link" 1111 > 1112 1113 <span class="dsm-product-icon"> 1114 1115 <svg viewBox="0 0 24 24"> 1116 1117 <path d="M12 3 20 6v5c0 5-3.2 8.3-8 10-4.8-1.7-8-5-8-10V6l8-3Z"/> 1118 1119 <path d="m8.5 12 2.2 2.2 4.8-5"/> 1120 1121 </svg> 1122 1123 </span> 1124 1125 <span>PointBlank</span> 1126 1127 </a> 1128 1129 1130 <a 1131 href="https://digitalsoftwaremarkett.com/workflo/" 1132 class="dsm-product-link" 1133 > 1134 1135 <span class="dsm-product-icon"> 1136 1137 <svg viewBox="0 0 24 24"> 1138 1139 <circle cx="6" cy="6" r="2.5"/> 1140 1141 <circle cx="18" cy="6" r="2.5"/> 1142 1143 <circle cx="12" cy="18" r="2.5"/> 1144 1145 <path d="M8.5 6h7"/> 1146 1147 <path d="m7.5 8 3.3 7.6"/> 1148 1149 <path d="m16.5 8-3.3 7.6"/> 1150 1151 </svg> 1152 1153 </span> 1154 1155 <span>Workflo</span> 1156 1157 </a> 1158 1159 1160 </div> 1161 1162 </div> 1163 1164 1165 </div> 1166 1167 </div> 1168 1169 1170 <!-- =========================================== 1171 RESOURCES 1172 ============================================ --> 1173 1174 <div class="dsm-mobile-accordion dsm-resources-accordion"> 1175 1176 <button 1177 type="button" 1178 class="dsm-mobile-accordion-button" 1179 aria-expanded="false" 1180 > 1181 1182 <span class="dsm-menu-label"> 1183 1184 <span class="dsm-menu-icon"> 1185 1186 <svg viewBox="0 0 24 24"> 1187 1188 <path d="M5 4h11a3 3 0 0 1 3 3v13H8a3 3 0 0 1-3-3V4Z"/> 1189 1190 <path d="M8 20a3 3 0 0 1 3-3h8"/> 1191 1192 <path d="M9 8h6"/> 1193 1194 <path d="M9 11h6"/> 1195 1196 </svg> 1197 1198 </span> 1199
1200 <span>Resources</span> 1201 1202 </span> 1203 1204 1205 <svg 1206 class="dsm-menu-chevron" 1207 viewBox="0 0 24 24" 1208 > 1209 1210 <path d="M7 9L12 14L17 9"/> 1211 1212 </svg> 1213 1214 </button> 1215 1216 1217 <div class="dsm-mobile-accordion-panel dsm-resource-panel"> 1218 1219 1220 <!-- ABOUT --> 1221 1222 <a 1223 href="https://digitalsoftwaremarkett.com/about/" 1224 class="dsm-resource-link" 1225 > 1226 1227 <span class="dsm-resource-icon"> 1228 1229 <svg viewBox="0 0 24 24"> 1230 1231 <circle cx="12" cy="12" r="9"/> 1232 1233 <path d="M12 10v6"/> 1234 1235 <path d="M12 7h.01"/> 1236 1237 </svg> 1238 1239 </span> 1240 1241 <span>About DSM</span> 1242 1243 </a> 1244 1245 1246 <!-- CONTACT --> 1247 1248 <a 1249 href="https://digitalsoftwaremarkett.com/contact-us/" 1250 class="dsm-resource-link" 1251 > 1252 1253 <span class="dsm-resource-icon"> 1254 1255 <svg viewBox="0 0 24 24"> 1256 1257 <rect 1258 x="3" 1259 y="5" 1260 width="18" 1261 height="14" 1262 rx="2" 1263 /> 1264 1265 <path d="m4 7 8 6 8-6"/> 1266 1267 </svg> 1268 1269 </span> 1270 1271 <span>Contact Us</span> 1272 1273 </a> 1274 1275 1276 <!-- CREATIVE PORTFOLIO --> 1277 1278 <a 1279 href="https://creative.digitalsoftwaremarkett.com/" 1280 class="dsm-resource-link" 1281 > 1282 1283 <span class="dsm-resource-icon"> 1284 1285 <svg viewBox="0 0 24 24"> 1286 1287 <path d="M4 20 15 9"/> 1288 1289 <path d="M14 4l1 3 3 1-3 1-1 3-1-3-3-1 3-1 1-3Z"/> 1290 1291 <path d="M6 14l.8 2.2L9 17l-2.2.8L6 20l-.8-2.2L3 17l2.2-.8L6 14Z"/> 1292 1293 </svg> 1294 1295 </span> 1296 1297 <span>Creative Portfolio</span> 1298 1299 </a> 1300 1301 1302 <!-- MARKETING PORTFOLIO --> 1303 1304 <a 1305 href="https://marketing.digitalsoftwaremarkett.com/" 1306 class="dsm-resource-link" 1307 > 1308 1309 <span class="dsm-resource-icon"> 1310 1311 <svg viewBox="0 0 24 24"> 1312 1313 <path d="M4 19V9"/> 1314 1315 <path d="M10 19V5"/> 1316 1317 <path d="M16 19v-7"/> 1318 1319 <path d="M22 19V3"/> 1320 1321 <path d="M3 19h19"/> 1322 1323 </svg> 1324 1325 </span> 1326 1327 <span>Marketing Portfolio</span> 1328 1329 </a> 1330 1331 1332 <!-- PARTNER --> 1333 1334 <a 1335 href="https://digitalsoftwaremarkett.com/partner-with-us/" 1336 class="dsm-resource-link" 1337 > 1338 1339 <span class="dsm-resource-icon"> 1340 1341 <svg viewBox="0 0 24 24"> 1342 1343 <circle cx="8" cy="8" r="3"/> 1344 1345 <circle cx="17" cy="8" r="3"/> 1346 1347 <path d="M2.5 19c.5-4 2.4-6 5.5-6 2 0 3.5.8 4.5 2.2"/> 1348 1349 <path d="M12 19c.5-3.4 2.2-5.2 5-5.2s4.5 1.8 5 5.2"/> 1350 1351 </svg> 1352 1353 </span> 1354
1355 <span>Partner With Us</span> 1356 1357 </a> 1358 1359 1360 </div> 1361 1362 </div> 1363 1364 1365 <!-- =========================================== 1366 REQUEST QUOTE 1367 ============================================ --> 1368 1369 <a 1370 href="https://digitalsoftwaremarkett.com/contact-us/" 1371 class="dsm-mobile-row" 1372 > 1373 1374 <span class="dsm-menu-label"> 1375 1376 <span class="dsm-menu-icon"> 1377 1378 <svg viewBox="0 0 24 24"> 1379 1380 <path d="M6 3h9l4 4v14H6V3Z"/> 1381 1382 <path d="M15 3v5h4"/> 1383 1384 <path d="M9 12h7"/> 1385 1386 <path d="M9 16h5"/> 1387 1388 </svg> 1389 1390 </span> 1391 1392 <span>Request a Quote</span> 1393 1394 </span> 1395 1396 </a> 1397 1398 1399 </nav> 1400 1401 `; 1402 1403 1404 container.prepend(menu); 1405 1406 bindAccordionEvents(menu); 1407 1408 bindCloseButton(menu); 1409 1410 return menu; 1411 } 1412 1413 1414 /* ========================================================== 1415 ACCORDIONS 1416 ========================================================== */ 1417 1418 function bindAccordionEvents(menu) { 1419 1420 menu.addEventListener("click", function (event) { 1421 1422 const mainButton = 1423 event.target.closest(".dsm-mobile-accordion-button"); 1424 1425 if (mainButton) { 1426 1427 const accordion = 1428 mainButton.closest(".dsm-mobile-accordion"); 1429 1430 const open = 1431 accordion.classList.contains("is-open"); 1432 1433 1434 menu 1435 .querySelectorAll(".dsm-mobile-accordion") 1436 .forEach(function (item) { 1437 1438 if (item !== accordion) { 1439 1440 item.classList.remove("is-open"); 1441 1442 const button = 1443 item.querySelector( 1444 ".dsm-mobile-accordion-button" 1445 ); 1446 1447 if (button) { 1448 1449 button.setAttribute( 1450 "aria-expanded", 1451 "false" 1452 ); 1453 1454 } 1455 1456 } 1457 1458 }); 1459 1460 1461 accordion.classList.toggle( 1462 "is-open", 1463 !open 1464 ); 1465 1466 1467 mainButton.setAttribute( 1468 "aria-expanded", 1469 open ? "false" : "true" 1470 ); 1471 1472 return; 1473 } 1474 1475 1476 const subButton = 1477 event.target.closest(".dsm-mobile-sub-button"); 1478 1479 if (subButton) { 1480 1481 const group = 1482 subButton.closest(".dsm-mobile-subgroup"); 1483 1484 const parent = 1485 group.parentElement; 1486 1487 const open = 1488 group.classList.contains("is-open"); 1489 1490 1491 parent 1492 .querySelectorAll(".dsm-mobile-subgroup") 1493 .forEach(function (item) { 1494 1495 if (item !== group) { 1496 1497 item.classList.remove("is-open"); 1498 1499 const button = 1500 item.querySelector( 1501 ".dsm-mobile-sub-button" 1502 ); 1503 1504 if (button) { 1505 1506 button.setAttribute( 1507 "aria-expanded", 1508 "false" 1509 ); 1510 1511 } 1512 1513 } 1514 1515 }); 1516 1517 1518 group.classList.toggle( 1519 "is-open", 1520 !open 1521 ); 1522 1523 1524 subButton.setAttribute( 1525 "aria-expanded", 1526 open ? "false" : "true" 1527 ); 1528 1529 } 1530 1531 }); 1532 1533 } 1534 1535 1536 /* ========================================================== 1537 CLOSE MENU 1538 ========================================================== */ 1539 1540 function bindCloseButton(menu) { 1541 1542 const closeButton = 1543 menu.querySelector(".dsm-mobile-close"); 1544 1545 if (!closeButton) { 1546 return; 1547 } 1548 1549 1550 closeButton.addEventListener("click", function () { 1551 1552 const closeSelectors = [ 1553 1554 ".close-drawer", 1555 1556 ".mobile-menu-close", 1557 1558 ".shoptimizer-mobile-menu-close", 1559 1560 ".drawer-close" 1561 1562 ]; 1563 1564 1565 for ( 1566 let i = 0; 1567 i < closeSelectors.length; 1568 i++ 1569 ) { 1570 1571 const nativeClose = 1572 document.querySelector( 1573 closeSelectors[i] 1574 ); 1575 1576 1577 if ( 1578 nativeClose && 1579 nativeClose !== closeButton 1580 ) { 1581 1582 nativeClose.click(); 1583 1584 return; 1585 1586 } 1587 1588 } 1589 1590 1591 const toggles = 1592 document.querySelectorAll(".menu-toggle"); 1593 1594 1595 for ( 1596 let i = 0; 1597 i < toggles.length; 1598 i++ 1599 ) { 1600 1601 if ( 1602 toggles[i].offsetParent !== null 1603 ) { 1604 1605 toggles[i].click(); 1606 1607 return; 1608 1609 } 1610 1611 } 1612 1613 1614 if (toggles.length) { 1615 1616 toggles[0].click(); 1617 1618 } 1619 1620 }); 1621 1622 } 1623 1624 1625 /* ========================================================== 1626 FIND EXISTING FIBOSEARCH 1627 ========================================================== */ 1628 1629 function findOriginalFibo() { 1630 1631 const preferred = 1632 document.querySelector( 1633 ".shoptimizer-primary-navigation .site-search .dgwt-wcas-search-wrapp" 1634 ); 1635 1636 1637 if (preferred) { 1638 return preferred; 1639 } 1640 1641 1642 const allSearches = 1643 document.querySelectorAll( 1644 ".dgwt-wcas-search-wrapp" 1645 ); 1646 1647 1648 for ( 1649 let i = 0; 1650 i < allSearches.length; 1651 i++ 1652 ) { 1653 1654 if ( 1655 !allSearches[i].closest( 1656 ".dsm-fibo-search-slot" 1657 ) 1658 ) { 1659 1660 return allSearches[i];
1661 1662 } 1663 1664 } 1665 1666 1667 return null; 1668 } 1669 1670 1671 /* ========================================================== 1672 SETUP FIBOSEARCH 1673 ========================================================== */ 1674 1675 function setupFibo(menu) { 1676 1677 if (!menu) { 1678 return false; 1679 } 1680 1681 1682 const slot = 1683 menu.querySelector( 1684 ".dsm-fibo-search-slot" 1685 ); 1686 1687 1688 if (!slot) { 1689 return false; 1690 } 1691 1692 1693 let fibo = null; 1694 1695 1696 if ( 1697 fiboState && 1698 fiboState.wrapper && 1699 document.documentElement.contains( 1700 fiboState.wrapper 1701 ) 1702 ) { 1703 1704 fibo = 1705 fiboState.wrapper; 1706 1707 } else { 1708 1709 fibo = 1710 findOriginalFibo(); 1711 1712 } 1713 1714 1715 if (!fibo) { 1716 return false; 1717 } 1718 1719 1720 if (!fiboState) { 1721 1722 fiboState = { 1723 1724 wrapper: 1725 fibo, 1726 1727 originalParent: 1728 fibo.parentNode, 1729 1730 originalNextSibling: 1731 fibo.nextSibling, 1732 1733 overlayEnabled: 1734 fibo.classList.contains( 1735 "js-dgwt-wcas-mobile-overlay-enabled" 1736 ), 1737 1738 overlayTrigger: 1739 fibo.classList.contains( 1740 "dgwt-wcas-mobile-overlay-trigger-active" 1741 ), 1742 1743 eventsBound: 1744 false 1745 1746 }; 1747 1748 } 1749 1750 1751 positionFibo(menu); 1752 1753 bindFiboEvents(); 1754 1755 return true; 1756 } 1757 1758 1759 /* ========================================================== 1760 MOVE FIBOSEARCH 1761 ========================================================== */ 1762 1763 function positionFibo(menu) { 1764 1765 if (!fiboState) { 1766 return; 1767 } 1768 1769 1770 const fibo = 1771 fiboState.wrapper; 1772 1773 1774 const slot = 1775 menu.querySelector( 1776 ".dsm-fibo-search-slot" 1777 ); 1778 1779 1780 if (isMobile()) { 1781 1782 1783 if ( 1784 slot && 1785 fibo.parentNode !== slot 1786 ) { 1787 1788 slot.appendChild(fibo); 1789 1790 } 1791 1792 1793 /* 1794 * Disable full screen Fibo mobile overlay 1795 */ 1796 1797 fibo.classList.remove( 1798 "js-dgwt-wcas-mobile-overlay-enabled" 1799 ); 1800 1801 1802 fibo.classList.remove( 1803 "dgwt-wcas-mobile-overlay-trigger-active" 1804 ); 1805 1806 1807 const overlayTrigger = 1808 fibo.querySelector( 1809 ".js-dgwt-wcas-enable-mobile-form" 1810 ); 1811 1812 1813 if (overlayTrigger) { 1814 1815 overlayTrigger.style.setProperty( 1816 "display", 1817 "none", 1818 "important" 1819 ); 1820 1821 overlayTrigger.style.setProperty( 1822 "pointer-events", 1823 "none", 1824 "important" 1825 ); 1826 1827 } 1828 1829 1830 const input = 1831 fibo.querySelector( 1832 ".dgwt-wcas-search-input" 1833 ); 1834 1835 1836 if (input) { 1837 1838 input.placeholder = 1839 "Search our store"; 1840 1841 input.removeAttribute( 1842 "readonly" 1843 ); 1844 1845 input.removeAttribute( 1846 "disabled" 1847 ); 1848 1849 } 1850 1851 1852 requestAnimationFrame( 1853 refreshFiboLayout 1854 ); 1855 1856 1857 } else { 1858 1859 1860 /* 1861 * Restore desktop search 1862 */ 1863 1864 if ( 1865 fiboState.originalParent && 1866 fibo.parentNode !== 1867 fiboState.originalParent 1868 ) { 1869 1870 1871 if ( 1872 fiboState.originalNextSibling && 1873 fiboState.originalNextSibling.parentNode === 1874 fiboState.originalParent 1875 ) { 1876 1877 fiboState.originalParent.insertBefore( 1878 fibo, 1879 fiboState.originalNextSibling 1880 ); 1881 1882 } else { 1883 1884 fiboState.originalParent.appendChild( 1885 fibo 1886 ); 1887 1888 } 1889 1890 } 1891 1892 1893 if (fiboState.overlayEnabled) { 1894 1895 fibo.classList.add( 1896 "js-dgwt-wcas-mobile-overlay-enabled" 1897 ); 1898 1899 } 1900 1901 1902 if (fiboState.overlayTrigger) { 1903 1904 fibo.classList.add( 1905 "dgwt-wcas-mobile-overlay-trigger-active" 1906 ); 1907 1908 } 1909 1910 1911 const overlayTrigger = 1912 fibo.querySelector( 1913 ".js-dgwt-wcas-enable-mobile-form" 1914 ); 1915 1916 1917 if (overlayTrigger) { 1918 1919 overlayTrigger.style.removeProperty( 1920 "display" 1921 ); 1922 1923 overlayTrigger.style.removeProperty( 1924 "pointer-events" 1925 ); 1926 1927 } 1928 1929 } 1930 1931 } 1932 1933 1934 /* ========================================================== 1935 FIBO EVENTS 1936 ========================================================== */ 1937 1938 function bindFiboEvents() { 1939 1940 if ( 1941 !fiboState || 1942 fiboState.eventsBound 1943 ) { 1944 1945 return; 1946 1947 } 1948 1949 1950 const fibo = 1951 fiboState.wrapper; 1952 1953 1954 const input = 1955 fibo.querySelector( 1956 ".dgwt-wcas-search-input" 1957 ); 1958 1959 1960 if (input) { 1961 1962 [ 1963 "focus", 1964 "input", 1965 "keyup", 1966 "click" 1967 ].forEach(function (eventName) { 1968 1969 1970 input.addEventListener( 1971 eventName, 1972 function () { 1973 1974 1975 requestAnimationFrame( 1976 refreshFiboLayout 1977 ); 1978 1979 1980 setTimeout( 1981 refreshFiboLayout, 1982 50 1983 ); 1984 1985 1986 setTimeout( 1987 refreshFiboLayout, 1988 150 1989 ); 1990 1991 1992 } 1993 ); 1994 1995 1996 }); 1997 1998 } 1999 2000 2001 const observer = 2002 new MutationObserver( 2003 function () { 2004 2005 if (isMobile()) { 2006 2007 requestAnimationFrame( 2008 refreshFiboLayout 2009 ); 2010 2011 } 2012 2013 } 2014 ); 2015 2016 2017 observer.observe( 2018 fibo, 2019 { 2020 2021 attributes: 2022 true, 2023 2024 subtree: 2025 true, 2026 2027 attributeFilter: [ 2028 "class", 2029 "style" 2030 ] 2031 2032 } 2033 ); 2034 2035 2036 fiboState.eventsBound = 2037 true; 2038 2039 } 2040 2041 2042 /* ========================================================== 2043 FIX FIBO SEARCH ALIGNMENT 2044 ========================================================== */ 2045 2046 function refreshFiboLayout() { 2047 2048 if ( 2049 !isMobile() || 2050 !fiboState 2051 ) { 2052 2053 return; 2054 2055 } 2056 2057 2058 const fibo = 2059 fiboState.wrapper; 2060 2061 2062 const preloader = 2063 fibo.querySelector( 2064 ".dgwt-wcas-preloader" 2065 ); 2066 2067 2068 const submit = 2069 fibo.querySelector( 2070 ".dgwt-wcas-search-submit" 2071 ); 2072 2073 2074 if (preloader) { 2075 2076 preloader.style.setProperty( 2077 "right", 2078 "44px", 2079 "important" 2080 ); 2081 2082 2083 preloader.style.setProperty( 2084 "left", 2085 "auto", 2086 "important" 2087 ); 2088 2089 2090 preloader.style.setProperty( 2091 "top", 2092 "0px", 2093 "important" 2094 ); 2095 2096 } 2097 2098 2099 if (submit) { 2100 2101 submit.style.setProperty( 2102 "right", 2103 "0px", 2104 "important" 2105 ); 2106 2107 2108 submit.style.setProperty( 2109 "left", 2110 "auto", 2111 "important" 2112 ); 2113 2114 2115 submit.style.setProperty( 2116 "top", 2117 "0px", 2118 "important" 2119 ); 2120 2121 } 2122 2123 } 2124 2125 2126 /* ========================================================== 2127 RETRY FIBO 2128 ========================================================== */ 2129 2130 function retryFibo(menu) { 2131 2132 if ( 2133 setupFibo(menu) 2134 ) { 2135 2136 return; 2137 2138 } 2139 2140 2141 retryCount++; 2142 2143 2144 if ( 2145 retryCount < 40 2146 ) { 2147 2148 setTimeout( 2149 function () { 2150 2151 retryFibo(menu); 2152 2153 }, 2154 250 2155 ); 2156 2157 } 2158 2159 } 2160 2161 2162 /* ========================================================== 2163 RESIZE 2164 ========================================================== */ 2165 2166 function bindResize(menu) { 2167 2168 window.addEventListener( 2169 "resize", 2170 function () { 2171 2172 2173 clearTimeout( 2174 resizeTimer 2175 ); 2176 2177 2178 resizeTimer = 2179 setTimeout( 2180 function () { 2181 2182 2183 if (fiboState) { 2184 2185 positionFibo(menu); 2186 2187 refreshFiboLayout(); 2188 2189 } else { 2190 2191 setupFibo(menu); 2192 2193 } 2194 2195 2196 }, 2197 120 2198 ); 2199 2200 2201 } 2202 ); 2203 2204 } 2205 2206 2207 /* ========================================================== 2208 INIT 2209 ========================================================== */ 2210
2211 function init() { 2212 2213 const menu = 2214 buildMobileMenu(); 2215 2216 2217 if (!menu) { 2218 2219 setTimeout( 2220 init, 2221 250 2222 ); 2223 2224 return; 2225 2226 } 2227 2228 2229 retryFibo(menu); 2230 2231 bindResize(menu); 2232 2233 } 2234 2235 2236 if ( 2237 document.readyState === 2238 "loading" 2239 ) { 2240 2241 document.addEventListener( 2242 "DOMContentLoaded", 2243 init 2244 ); 2245 2246 } else { 2247 2248 init(); 2249 2250 } 2251 2252})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.