PageSourceSearch

https://meiner.de/

html meiner.de collected 2026-09-27 20:56:56 UTC 4,000,000 bytes, 52,506 lines download raw bytes

1<!doctype html>
2<html lang="de">
3<head >
4    <meta charset="utf-8"/>
5<meta name="title" content="Felix Meiner Verlag"/>
6<meta name="description" content="Felix Meiner Verlag"/>
7<meta name="keywords" content="Felix Meiner Verlag"/>
8<meta name="robots" content="INDEX,FOLLOW"/>
9<meta name="viewport" content="width=device-width, initial-scale=1"/>
10<title>Felix Meiner Verlag</title>
11<link  rel="stylesheet" type="text/css"  media="all" href="https://meiner.de/static/version1789027969/frontend/FMV/hyvaShop/de_DE/css/styles.css" />
12<link  rel="stylesheet" type="text/css"  media="all" href="https://meiner.de/static/version1789027969/frontend/FMV/hyvaShop/de_DE/CleverReach_CleverReachIntegration/css/cr-form.css" />
13<link  rel="stylesheet" type="text/css"  media="all" href="https://meiner.de/static/version1789027969/frontend/FMV/hyvaShop/de_DE/FMV_PageBuilderAccordion/css/accordion.css" />
14<link  rel="stylesheet" type="text/css"  rel="stylesheet" type="text/css" href="https://meiner.de/static/version1789027969/frontend/FMV/hyvaShop/de_DE/Junicom_ElasticsuitePersons/css/style.css" />
15<script  type="text/javascript"  src="https://meiner.de/static/version1789027969/frontend/FMV/hyvaShop/de_DE/FMV_PageBuilderAccordion/js/accordion.js"></script>
vendor: 1 bytes, line 15
15
16<script  type="text/javascript"  src="https://meiner.de/static/version1789027969/frontend/FMV/hyvaShop/de_DE/Smile_ElasticsuiteTracker/js/tracking.js"></script>
vendor: 1 bytes, line 16
16
17<script  type="text/javascript"  src="https://meiner.de/static/version1789027969/frontend/FMV/hyvaShop/de_DE/js/script.js"></script>
17
18<link  rel="icon" type="image/x-icon" href="https://meiner.de/media/favicon/stores/1/Meiner_32x32.ico" />
19<link  rel="shortcut icon" type="image/x-icon" href="https://meiner.de/media/favicon/stores/1/Meiner_32x32.ico" />
20            
21    <!-- Usercentrics -->
22        <link
23        rel="preconnect"
24        href="//privacy-proxy.usercentrics.eu">
25    <link
26        rel="preload"
27        href="//privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js"
28        as="script">
29            
29<script id="usercentrics-cmp" data-settings-id="HzlSV4Iqv"
30                        src="https://web.cmp.usercentrics.eu/ui/loader.js" async></script>
30
31        
31<script type="application/javascript" src="https://privacy-proxy.usercentrics.eu/latest/uc-block.bundle.js"></script>
31
32        <!-- End Usercentrics -->
33    
33<script>
34        //<![CDATA[
35        function userConsentEsTraking(config)
36        {
37            return config.cookieRestrictionEnabled == false || hyva.getCookie(config.cookieRestrictionName) !== null;
38        }
39
40        try {
41            smileTracker.setConfig({
42                beaconUrl     : 'https://meiner.de/fmv_de/elasticsuite/tracker/hit/image/h.png',
43                telemetryUrl     : 'https://t.elasticsuite.io/track',
44                telemetryEnabled : '',
45                sessionConfig : {"visit_cookie_name":"STUID","visit_cookie_lifetime":"3600","visitor_cookie_lifetime":"365","visitor_cookie_name":"STVID","domain":"meiner.de","path":"\/"},
46                endpointUrl : 'https://meiner.de/fmv_de/rest/V1/elasticsuite-tracker/hit'
47            });
48
49            smileTracker.addPageVar('store_id', '1');
50
51            document.addEventListener('DOMContentLoaded', function () {
52                if (userConsentEsTraking({"cookieRestrictionEnabled":"0","cookieRestrictionName":"user_allowed_save_cookie"})) {
53                    smileTracker.sendTag();
54                }
55            });
56        } catch (err) {
57            ;
58        }
59        //]]>
60    </script>
60
61    
61<script>
62    var BASE_URL = 'https://meiner.de/fmv_de/';
63    var THEME_PATH = 'https://meiner.de/static/version1789027969/frontend/FMV/hyvaShop/de_DE';
64    var COOKIE_CONFIG = {
65        "expires": null,
66        "path": "\u002F",
67        "domain": ".meiner.de",
68        "secure": true,
69        "lifetime": "3600",
70        "cookie_restriction_enabled": false    };
71    var CURRENT_STORE_CODE = 'fmv_de';
72    var CURRENT_WEBSITE_ID = '1';
73
74    window.hyva = window.hyva || {}
75
76    window.cookie_consent_groups = window.cookie_consent_groups || {}
77    window.cookie_consent_groups['necessary'] = true;
78
79    window.cookie_consent_config = window.cookie_consent_config || {};
80    window.cookie_consent_config['necessary'] = [].concat(
81        window.cookie_consent_config['necessary'] || [],
82        [
83            'user_allowed_save_cookie',
84            'form_key',
85            'mage-messages',
86            'private_content_version',
87            'mage-cache-sessid',
88            'last_visited_store',
89            'section_data_ids'
90        ]
91    );
92</script>
vendor: 1 bytes, line 92
92
93<script>
94    'use strict';
95    (function( hyva, undefined ) {
96
97        function lifetimeToExpires(options, defaults) {
98
99            const lifetime = options.lifetime || defaults.lifetime;
100
101            if (lifetime) {
102                const date = new Date;
103                date.setTime(date.getTime() + lifetime * 1000);
104                return date;
105            }
106
107            return null;
108        }
109
110        function generateRandomString() {
111
112            const allowedCharacters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
113                length = 16;
114
115            let formKey = '',
116                charactersLength = allowedCharacters.length;
117
118            for (let i = 0; i < length; i++) {
119                formKey += allowedCharacters[Math.round(Math.random() * (charactersLength - 1))]
120            }
121
122            return formKey;
123        }
124
125        const sessionCookieMarker = {noLifetime: true}
126
127        const cookieTempStorage = {};
128
129        const internalCookie = {
130            get(name) {
131                const v = document.cookie.match('(^|;) ?' + name + '=([^;]*)(;|$)');
132                return v ? v[2] : null;
133            },
134            set(name, value, days, skipSetDomain) {
135                let expires,
136                    path,
137                    domain,
138                    secure,
139                    samesite;
140
141                const defaultCookieConfig = {
142                    expires: null,
143                    path: '/',
144                    domain: null,
145                    secure: false,
146                    lifetime: null,
147                    samesite: 'lax'
148                };
149
150                const cookieConfig = window.COOKIE_CONFIG || {};
151
152                expires = days && days !== sessionCookieMarker
153                    ? lifetimeToExpires({lifetime: 24 * 60 * 60 * days, expires: null}, defaultCookieConfig)
154                    : lifetimeToExpires(window.COOKIE_CONFIG, defaultCookieConfig) || defaultCookieConfig.expires;
155
156                path = cookieConfig.path || defaultCookieConfig.path;
157                domain = !skipSetDomain && (cookieConfig.domain || defaultCookieConfig.domain);
158                secure = cookieConfig.secure || defaultCookieConfig.secure;
159                samesite = cookieConfig.samesite || defaultCookieConfig.samesite;
160
161                document.cookie = name + "=" + encodeURIComponent(value) +
162                    (expires && days !== sessionCookieMarker ? '; expires=' + expires.toGMTString() : '') +
163                    (path ? '; path=' + path : '') +
164                    (domain ? '; domain=' + domain : '') +
165                    (secure ? '; secure' : '') +
166                    (samesite ? '; samesite=' + samesite : 'lax');
167            },
168            isWebsiteAllowedToSaveCookie() {
169                const allowedCookies = this.get('user_allowed_save_cookie');
170                if (allowedCookies) {
171                    const allowedWebsites = JSON.parse(unescape(allowedCookies));
172
173                    return allowedWebsites[CURRENT_WEBSITE_ID] === 1;
174                }
175                return false;
176            },
177            getGroupByCookieName(name) {
178                const cookieConsentConfig = window.cookie_consent_config || {};
179                let group = null;
180                for (let prop in cookieConsentConfig) {
181                    if (!cookieConsentConfig.hasOwnProperty(prop)) continue;
182                    if (cookieConsentConfig[prop].includes(name)) {
183                        group = prop;
184                        break;
185                    }
186                }
187                return group;
188            },
189            isCookieAllowed(name) {
190                const cookieGroup = this.getGroupByCookieName(name);
191                return cookieGroup
192                    ? window.cookie_consent_groups[cookieGroup]
193                    : this.isWebsiteAllowedToSaveCookie();
194            },
195            saveTempStorageCookies() {
196                for (const [name, data] of Object.entries(cookieTempStorage)) {
197                    if (this.isCookieAllowed(name)) {
198                        this.set(name, data['value'], data['days'], data['skipSetDomain']);
199                        delete cookieTempStorage[name];
200                    }
201                }
202            }
203        };
204
205        hyva.getCookie = (name) => {
206            const cookieConfig = window.COOKIE_CONFIG || {};
207
208            if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) {
209                return cookieTempStorage[name] ? cookieTempStorage[name]['value'] : null;
210            }
211
212            return internalCookie.get(name);
213        }
214
215        hyva.setCookie = (name, value, days, skipSetDomain) => {
216            const cookieConfig = window.COOKIE_CONFIG || {};
217
218            if (cookieConfig.cookie_restriction_enabled && ! internalCookie.isCookieAllowed(name)) {
219                cookieTempStorage[name] = {value, days, skipSetDomain};
220                return;
221            }
222            return internalCookie.set(name, value, days, skipSetDomain);
223        }
224
225
226        hyva.setSessionCookie = (name, value, skipSetDomain) => {
227            return hyva.setCookie(name, value, sessionCookieMarker, skipSetDomain)
228        }
229
230        hyva.getBrowserStorage = () => {
231            const browserStorage = window.localStorage || window.sessionStorage;
232            if (!browserStorage) {
233                console.warn('Browser Storage is unavailable');
234                return false;
235            }
236            try {
237                browserStorage.setItem('storage_test', '1');
238                browserStorage.removeItem('storage_test');
239            } catch (error) {
240                console.warn('Browser Storage is not accessible', error);
241                return false;
242            }
243            return browserStorage;
244        }
245
246        hyva.postForm = (postParams) => {
247            const form = document.createElement("form");
248
249            let data = postParams.data;
250
251            if (! postParams.skipUenc && ! data.uenc) {
252                data.uenc = btoa(window.location.href);
253            }
254            form.method = "POST";
255            form.action = postParams.action;
256
257            Object.keys(postParams.data).map(key => {
258                const field = document.createElement("input");
259                field.type = 'hidden'
260                field.value = postParams.data[key];
261                field.name = key;
262                form.appendChild(field);
263            });
264
265            const form_key = document.createElement("input");
266            form_key.type = 'hidden';
267            form_key.value = hyva.getFormKey();
268            form_key.name="form_key";
269            form.appendChild(form_key);
270
271            document.body.appendChild(form);
272
273            form.submit();
274        }
275
276        hyva.getFormKey = function () {
277            let formKey = hyva.getCookie('form_key');
278
279            if (!formKey) {
280                formKey = generateRandomString();
281                hyva.setCookie('form_key', formKey);
282            }
283
284            return formKey;
285        }
286
287        hyva.formatPrice = (value, showSign, options = {}) => {
288            const groupSeparator = options.groupSeparator;
289            const decimalSeparator = options.decimalSeparator
290            delete options.groupSeparator;
291            delete options.decimalSeparator;
292            const formatter = new Intl.NumberFormat(
293                'de\u002DDE',
294                Object.assign({
295                    style: 'currency',
296                    currency: 'EUR',
297                    signDisplay: showSign ? 'always' : 'auto'
298                }, options)
299            );
300            return (typeof Intl.NumberFormat.prototype.formatToParts === 'function') ?
301                formatter.formatToParts(value).map(({type, value}) => {
302                    switch (type) {
303                        case 'currency':
304                            return '\u20AC' || value;
305                        case 'minusSign':
306                            return '- ';
307                        case 'plusSign':
308                            return '+ ';
309                        case 'group':
310                            return groupSeparator !== undefined ? groupSeparator : value;
311                        case 'decimal':
312                            return decimalSeparator !== undefined ? decimalSeparator : value;
313                        default :
314                            return value;
315                    }
316                }).reduce((string, part) => string + part) :
317                formatter.format(value);
318        }
319
320        const formatStr = function (str, nStart) {
321            const args = Array.from(arguments).slice(2);
322
323            return str.replace(/(%+)([0-9]+)/g, (m, p, n) => {
324                const idx = parseInt(n) - nStart;
325
326                if (args[idx] === null || args[idx] === void 0) {
327                    return m;
328                }
329                return p.length % 2
330                    ? p.slice(0, -1).replace('%%', '%') + args[idx]
331                    : p.replace('%%', '%') + n;
332            })
333        }
334
335        hyva.str = function (string) {
336            const args = Array.from(arguments);
337            args.splice(1, 0, 1);
338
339            return formatStr.apply(undefined, args);
340        }
341
342        hyva.strf = function () {
343            const args = Array.from(arguments);
344            args.splice(1, 0, 0);
345
346            return formatStr.apply(undefined, args);
347        }
348
349        /**
350         * Take a html string as `content` parameter and
351         * extract an element from the DOM to replace in
352         * the current page under the same selector,
353         * defined by `targetSelector`
354         */
355        hyva.replaceDomElement = (targetSelector, content) => {
356            // Parse the content and extract the DOM node using the `targetSelector`
357            const parser = new DOMParser();
358            const doc = parser.parseFromString(content, 'text/html');
359            const contentNode = doc.querySelector(targetSelector);
360
361            // Bail if content or target can't be found
362            if (!contentNode || !document.querySelector(targetSelector)) {
363                return;
364            }
365
366                        hyva.activateScripts(contentNode);
367            
368            // Replace the old DOM node with the new content
369            document.querySelector(targetSelector).replaceWith(contentNode);
370
371            // Reload customerSectionData and display cookie-messages if present
372            window.dispatchEvent(new CustomEvent("reload-customer-section-data"));
373            hyva.initMessages();
374        }
375
376        hyva.removeScripts = (contentNode) => {
377            const scripts = contentNode.getElementsByTagName('script');
378            for (let i = 0; i < scripts.length; i++) {
379                scripts[i].parentNode.removeChild(scripts[i]);
380            }
381            const templates = contentNode.getElementsByTagName('template');
382            for (let i = 0; i < templates.length; i++) {
383                const container = document.createElement('div');
384                container.innerHTML = templates[i].innerHTML;
385                hyva.removeScripts(container);
386                templates[i].innerHTML = container.innerHTML;
387            }
388        }
389
390        hyva.activateScripts = (contentNode) => {
391            // Create new array from HTMLCollection to avoid mutation of collection while manipulating the DOM.
392            const scripts = Array.from(contentNode.getElementsByTagName('script'));
393
394            // Iterate over all script tags to duplicate+inject each into the head
395            for (const original of scripts) {
396                const script = document.createElement('script');
397                original.type && (script.type = original.type);
398                script.innerHTML = original.innerHTML;
399
400                // Remove the original (non-executing) script from the contentNode
401                original.parentNode.removeChild(original)
402
403                // Add script to head
404                document.head.appendChild(script);
405            }
406
407            return contentNode;
408        }
409
410        const replace = {['+']: '-', ['/']: '_', ['=']: ','};
411        hyva.getUenc = () => btoa(window.location.href).replace(/[+/=]/g, match => replace[match]);
412
413        let currentTrap;
414
415        const focusableElements = (rootElement) => {
416            const selector = 'button, [href], input, select, textarea, details, [tabindex]:not([tabindex="-1"]';
417            return Array.from(rootElement.querySelectorAll(selector))
418                .filter(el => {
419                    return el.style.display !== 'none'
420                        && !el.disabled
421                        && el.tabIndex !== -1
422                        && (el.offsetWidth || el.offsetHeight || el.getClientRects().length)
423                })
424        }
425
426        const focusTrap = (e) => {
427            const isTabPressed = e.key === 'Tab' || e.keyCode === 9;
428            if (!isTabPressed) return;
429
430            const focusable = focusableElements(currentTrap)
431            const firstFocusableElement = focusable[0]
432            const lastFocusableElement = focusable[focusable.length - 1]
433
434            e.shiftKey
435                ? document.activeElement === firstFocusableElement && (lastFocusableElement.focus(), e.preventDefault())
436                : document.activeElement === lastFocusableElement && (firstFocusableElement.focus(), e.preventDefault())
437        };
438
439        hyva.releaseFocus = (rootElement) => {
440            if (currentTrap && (!rootElement || rootElement === currentTrap)) {
441                currentTrap.removeEventListener('keydown', focusTrap)
442                currentTrap = null
443            }
444        }
445        hyva.trapFocus = (rootElement) => {
446            if (!rootElement) return;
447            hyva.releaseFocus()
448            currentTrap = rootElement
449            rootElement.addEventListener('keydown', focusTrap)
450            const firstElement = focusableElements(rootElement)[0]
451            firstElement && firstElement.focus()
452        }
453
454        hyva.safeParseNumber = (rawValue) => {
455            const number = rawValue ? parseFloat(rawValue) : null;
456
457            return Array.isArray(number) || isNaN(number) ? rawValue : number;
458        }
459
460        const toCamelCase = s => s.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join('');
461        hyva.createBooleanObject = (name, value = false, additionalMethods = {}) => {
462
463            const camelCase = toCamelCase(name);
464            const key = '__hyva_bool_' + name
465
466            return new Proxy(Object.assign(
467                additionalMethods,
468                {
469                    [key]: !!value,
470                    [name]() {return !!this[key]},
471                    ['!' + name]() {return !this[key]},
472                    ['toggle' + camelCase]() {this[key] = !this[key]},
473                    [`set${camelCase}True`]() {this[key] = true},
474                    [`set${camelCase}False`]() {this[key] = false},
475                }
476            ), {
477                set(target, prop, value) {
478                    return prop === name
479                        ? (target[key] = !!value)
480                        : Reflect.set(...arguments);
481                }
482            })
483        }
484
485                hyva.alpineInitialized = (fn) => window.addEventListener('alpine:initialized', fn, {once: true})
486        window.addEventListener('alpine:init', () => Alpine.data('{}', () => ({})), {once: true});
487                window.addEventListener('user-allowed-save-cookie', () => internalCookie.saveTempStorageCookies())
488
489    }( window.hyva = window.hyva || {} ));
490</script>
vendor: 1 bytes, line 490
490
491<script>
492    if (!window.IntersectionObserver) {
493        window.IntersectionObserver = function (callback) {
494            this.observe = el => el && callback(this.takeRecords());
495            this.takeRecords = () => [{isIntersecting: true, intersectionRatio: 1}];
496            this.disconnect = () => {};
497            this.unobserve = () => {};
498        }
499    }
500</script>
vendor: 1 bytes, line 500
500
501<script>
502    'use strict';
503
504    function amXnotifSubscribeComponentFactory(config) {
505        return {
506            productId: config.productId || null,
507            isAvailable: config.isAvailable || false,
508            isShowAlert: config.isShowAlert || false,
509            isAvailableConfigurableSimple: true,
510            isShowAlertConfigurableSimple: false,
511            isOutofstockConfigurable: config.isOutofstockConfigurable || false,
512            title: config.title || 'Verfügbarkeit',
513            attributesCount: config.attributesCount || 0,
514            options: {},
515            productIndex: config.productId || null,
516            hideAddToCartBtn: "",
517            addToCartButton: "",
518            inStockLabel: 'Auf&#x20;Lager',
519            outOfStockLabel: 'Nicht&#x20;lieferbar',
520            notificationLabel: 'Benachrichtigen&#x20;Sie&#x20;mich,&#x20;wenn&#x20;dieses&#x20;Produkt&#x20;auf&#x20;Lager&#x20;ist',
521            containerClass: '.product-item, .product-item-info, .product-info-main, .item.product',
522            openAccessContainer: "",
523            openAccessExternalLink: "",
524
525            init() {
526                                if (config.childProducts.length === 0) {
527                    this.inStockLabel = config.availabilityMessages[this.productId];
528                    this.outOfStockLabel = config.availabilityMessages[this.productId];
529                    this.isAvailableConfigurableSimple = this.isAvailable;
530                }
531                this.updateOptions();
532
533                if (typeof this.$watch === 'function') {
534                    this.$watch('isAvailable', (value) => {
535                        this.toggleElements(value);
536                    });
537                }
538                this.$nextTick(() => {
539                    this.toggleElements(this.isAvailable);
540                });
541            },
542
543            toggleElements(isAvailable) {
544                const container = this.$el ? this.$el.closest(this.containerClass) : null;
545                if (!container) return;
546
547                const selectors = [
548                    '.product-info-price',
549                    'button[data-addto="cart"]',
550                    '.action.tocart',
551                    'form[data-role="tocart-form"]',
552                    '[x-data="initQtyField"]',
553                    '[x-data="initQtyField()"]'
554                ];
555
556                selectors.forEach(selector => {
557                    const elements = container.querySelectorAll(selector);
558                    elements.forEach(el => {
559                        if (el.closest(this.containerClass) === container) {
560                            el.style.display = isAvailable ? '' : 'none';
561                        }
562                    });
563                });
564            },
565
566            toggleOpenAccessElements(isOpenAccess) {
567                const container = this.$el ? this.$el.closest(this.containerClass) : null;
568                if (!container) return;
569
570                const selectors = [
571                    'button[data-addto="cart"]',
572                    '.action.tocart',
573                    'form[data-role="tocart-form"]',
574                    '[x-data="initQtyField"]',
575                    '[x-data="initQtyField()"]'
576                ];
577
578                selectors.forEach(selector => {
579                    const elements = container.querySelectorAll(selector);
580
581                    elements.forEach(el => {
582                        if (el.closest(this.containerClass) === container) {
583                            //  el.style.display = isOpenAccess ? 'none' : '';
584
585                            if (isOpenAccess) {
586                                el.classList.add('hidden');
587
588                            } else {
589                                el.classList.remove('hidden');
590
591                            }
592                        }
593                    });
594                });
595            },
596
597            getSubscriptionUrl(productIndex, type) {
598                const urlParts = [
599                    'xnotif/email/',
600                    type,
601                    '/product_id/',
602                    productIndex,
603                    (parseInt(productIndex) !== parseInt(this.productId)) ? '/parent_id/' + this.productId : '',
604                    '/uenc/',
605                    config.encodedUrl || ''
606                ];
607                return BASE_URL + urlParts.join('');
608            },
609
610            isEventFromSameProduct(event, element) {
611                const source = (event.detail ? event.detail.sourceElement : null) || window.__amxnotifLastSourceElement;
612                if (!source || !(source instanceof Element) || !(element instanceof Element)) {
613                    return true;
614                }
615
616                let sourceContainer = source.closest('.product-item, .item.product, .cart.item, .cart-item');
617                let targetContainer = element.closest('.product-item, .item.product, .cart.item, .cart-item');
618
619                if (!sourceContainer) sourceContainer = source.closest('.product-item-info, .product-info-main');
620                if (!targetContainer) targetContainer = element.closest('.product-item-info, .product-info-main');
621
622                return (sourceContainer || targetContainer) ? (sourceContainer === targetContainer) : true;
623            },
624
625            getSimpleProduct(data, el) {
626                if (parseInt(data.productId) !== parseInt(this.productId) || !data.selectedValues) return;
627                const children = config.childProducts || {};
628                const childrenAlertStatus = config.childProductsAlertStatus || {};
629                const swatchesCount = parseInt(config.attributesCount) || 0;
630                const selectedCount = Object.keys(data.selectedValues).length;
631                const allSelected = selectedCount >= swatchesCount;
632                const availabilityMessages = config.availabilityMessages;
633                const openAccessChildren = config.openAccess;
634
635                this.openAccessContainer = document.querySelector('.open-access-container-' + data.productId);
636
637                this.togglePriceLabel(allSelected);
638
639                if (!allSelected) {
640                    this.isAvailable = true;
641                    this.isAvailableConfigurableSimple = true;
642                    this.isShowAlertConfigurableSimple = false;
643                    this.updateOptions();
644                    return;
645                }
646
647                let resolvedIndex = data.productIndex || 0;
648                if (!resolvedIndex && data.selectedValues && config.indexMapping) {
649                    const keyParts = Object.keys(data.selectedValues).map(attrId => parseInt(attrId) + ':' + data.selectedValues[attrId]);
650                    keyParts.sort();
651                    const key = keyParts.join(',');
652                    if (config.indexMapping[key]) {
653                        resolvedIndex = config.indexMapping[key];
654                    }
655                }
656
657                this.productIndex = resolvedIndex;
658                const selectedChildState = children[this.productIndex];
659                const selectedChildAlertState = childrenAlertStatus[this.productIndex];
660                this.isAvailableConfigurableSimple = (typeof selectedChildState !== 'undefined') ? Boolean(Number(selectedChildState)) : true;
661                this.isShowAlertConfigurableSimple = (typeof selectedChildAlertState !== 'undefined') ? Boolean(Number(selectedChildAlertState)) : true;
662                this.inStockLabel = availabilityMessages[this.productIndex];
663                this.outOfStockLabel = availabilityMessages[this.productIndex];
664
665                if (this.productIndex != 0) {
666                    if (this.openAccessContainer) {
667                        let isOpenAccess = openAccessChildren[this.productIndex]['status'];
668                        if (isOpenAccess) {
669                            let openAccessExternalHref = this.openAccessContainer.querySelector('.open-access-external-link');
670                            this.openAccessExternalLink = openAccessChildren[this.productIndex]['openaccess_external_link'];
671                            openAccessExternalHref.setAttribute('href', this.openAccessExternalLink);
672                            this.openAccessContainer.classList.remove('hidden');
673                            this.toggleOpenAccessElements(isOpenAccess)
674                        } else {
675                            this.openAccessContainer.classList.add('hidden');
676                            this.toggleOpenAccessElements(isOpenAccess)
677                        }
678                    }
679                }
680
681                this.isAvailable = this.isAvailableConfigurableSimple;
682                this.isShowAlert = this.isShowAlertConfigurableSimple;
683                this.updateOptions();
684            },
685
686            togglePriceLabel(isFullSelection) {
687                const container = this.$el ? this.$el.closest(this.containerClass) : null;
688                if (!container) return;
689                const labels = container.querySelectorAll('.price-label');
690                labels.forEach(el => {
691                    if (isFullSelection) {
692                        el.classList.add('hidden');
693                        el.style.setProperty('display', 'none', 'important');
694                    } else {
695                        el.classList.remove('hidden', 'invisible');
696                        el.style.setProperty('display', 'inline-block', 'important');
697                    }
698                });
699            },
700
701            updateOptions() {
702                this.options = {
703                    additionalClass: this.isAvailableConfigurableSimple ? 'bg-green-500' : 'bg-red-500',
704                    label: this.isAvailableConfigurableSimple ? this.inStockLabel : this.outOfStockLabel,
705                    categoryNotificationLabel: this.isShowAlertConfigurableSimple ? this.notificationLabel : ''
706                };
707            },
708
709            getAvailable() {
710                this.updateOptions();
711                return this.isAvailable;
712            },
713
714            getShowAlert() {
715                this.updateOptions();
716                return this.isShowAlert;
717            }
718        };
719    }
720
721    (() => {
722        if (window.__amxnotifSafetyInjected) return;
723        window.__amxnotifSafetyInjected = true;
724
725        window.amxnotif_wrap_attributes = (attributes) => {
726            if (!attributes || typeof attributes !== 'object' || attributes.__amxnotifWrapped) {
727                return attributes;
728            }
729
730            const items = Array.isArray(attributes) ? attributes : Object.values(attributes);
731            const map = {};
732            items.forEach((item) => {
733                const id = item && (item.id || item.attributeId || item.attribute_id);
734                if (id) map[id] = item;
735            });
736
737            const wrapped = Object.assign(items, map);
738            Object.defineProperty(wrapped, '__amxnotifWrapped', {
739                value: true,
740                enumerable: false
741            });
742            return wrapped;
743        };
744
745
746        window.amxnotif_wrap_config = (component) => {
747            if (!component || typeof component !== 'object' || component.__amxnotifWrapped) return;
748            component.__amxnotifWrapped = true;
749
750            if (typeof component.calculatePriceLabelVisibility === 'function') {
751                const originalVisibility = component.calculatePriceLabelVisibility;
752                component.calculatePriceLabelVisibility = function() {
753                    originalVisibility.apply(this, arguments);
754
755                    this.showRegularPriceLabel = false;
756                };
757            }
758
759            if (!component.optionConfig && component.config) component.optionConfig = component.config;
760            if (!component.swatchConfig) {
761                for (let k in component) {
762                    if (k.toLowerCase().includes('swatch') && k.toLowerCase().includes('config')) {
763                        component.swatchConfig = component[k];
764                        break;
765                    }
766                }
767            }
768
769            if (component.optionConfig && component.optionConfig.attributes) {
770                component.optionConfig.attributes = window.amxnotif_wrap_attributes(component.optionConfig.attributes);
771            }
772
773            const scheduleInjectIds = (ctx) => {
774                const inject = () => {
775                    if (typeof ctx._injectAttributeIds === 'function') ctx._injectAttributeIds();
776                };
777                if (typeof ctx.$nextTick === 'function') ctx.$nextTick(inject);
778                else setTimeout(inject, 50);
779            };
780
781            const regularMethods = {
782                getOptions: function(attrId) {
783                    return window.amxnotif_get_options(this.optionConfig, attrId);
784                },
785                findAttributeId: function() {
786                    if (this.item && this.item._amxnotif_attribute_id) {
787                        return this.item._amxnotif_attribute_id;
788                    }
789                    const el = this.$el;
790                    if (!el) return null;
791                    let attrId = el.closest('[data-attribute-id]')?.dataset.attributeId;
792                    if (!attrId) {
793                        const input = (el.tagName === 'INPUT' && (el.name || '').includes('super_attribute')) ?
794                            el :
795                            el.querySelector('input[name*="super_attribute"]') ||
796                            el.parentElement?.querySelector('input[name*="super_attribute"]');
797                        const nameMatch = input?.name?.match(/super_attribute\[(\d+)\]/);
798                        if (nameMatch) attrId = nameMatch[1];
799                    }
800                    return attrId || null;
801                },
802                _injectAttributeIds: function() {
803                    const attrs = this.optionConfig?.attributes;
804                    if (!attrs || typeof attrs.forEach !== 'function') return;
805                    const root = this.$el || document;
806                    attrs.forEach(attr => {
807                        if (!attr) return;
808                        const id = attr.id || attr.attributeId || attr.attribute_id;
809                        if (!id) return;
810                        const code = attr.code || attr.attribute_code || '';
811                        const candidates = root.querySelectorAll ? root.querySelectorAll('.swatch-attribute') : [];
812                        candidates.forEach(div => {
813                            if (div.dataset.attributeId) return;
814                            if (code && (div.classList.contains(code) || div.className.includes(code))) {
815                                div.dataset.attributeId = id;
816                            }
817                        });
818                    });
819                },
820                init: function() {
821                    scheduleInjectIds(this);
822                    if (typeof this.$watch === 'function') {
823                        this.$watch('showSwatches', (val) => {
824                            if (val) scheduleInjectIds(this);
825                        });
826                    }
827                },
828                unsetActiveTooltipItem: function() {
829                    this.activeTooltipItem = false;
830                },
831                _getItemId: function() {
832                    if (this.item && this.item.id) return this.item.id;
833                    if (this.itemId) return this.itemId;
834                    const el = this.$el;
835                    if (!el) return null;
836                    const input = (el.tagName === 'INPUT' && el.name?.includes('super_attribute')) ? el : el.querySelector('input[name*="super_attribute"]');
837                    return el.dataset.optionId || (input ? input.value : el.closest('[data-option-id]')?.dataset.optionId);
838                }
839            };
840
841            // Standardize component methods for cross-theme compatibility
842            component.getOptionsByAttrId = function(attrId) {
843                const id = attrId || (this.$el ? this.$el.dataset.attributeId : null) || this.findAttributeId();
844                if (!id) return [];
845                const attributes = this.optionConfig?.attributes || [];
846                const attr = attributes[id] || (Array.isArray(attributes) ? attributes.find(a => a.id == id) : null);
847                return (attr && attr.options) ? attr.options : [];
848            };
849
850            component.getAllAttributeOptions = function() {
851                return this.getOptionsByAttrId();
852            };
853
854            // Apply helper methods to component if not already present
855            for (let name in regularMethods) {
856                if (typeof component[name] === 'undefined') {
857                    component[name] = regularMethods[name];
858                }
859            }
860
861            // Wrap the init method to inject data-attribute-id into DOM after Alpine renders
862            if (typeof component.init === 'function' && !component.__amxnotifInitWrapped) {
863                const originalInit = component.init;
864                component.init = function() {
865                    originalInit.apply(this, arguments);
866                    scheduleInjectIds(this);
867                    if (typeof this.$watch === 'function') {
868                        this.$watch('showSwatches', (val) => {
869                            if (val) scheduleInjectIds(this);
870                        });
871                    }
872                };
873                component.__amxnotifInitWrapped = true;
874            }
875
876            if (component.optionConfig && component.optionConfig.attributes) {
877                const attrs = component.optionConfig.attributes;
878                for (let attrId in attrs) {
879                    const attr = attrs[attrId];
880                    if (attr && attr.options) {
881                        attr.options.forEach(opt => {
882                            opt._amxnotif_attribute_id = attrId;
883                        });
884                    }
885                }
886            }
887        };
888    })();
889</script>
889
890</head>
891<body id="html-body" class="cms-home page-layout-1column cms-index-index page-layout-cms-full-width">
892
893<input name="form_key" type="hidden" value="aWz8bSEf3XRKW3EU" />
894    <noscript>
895        <section class="message global noscript border-b-2 border-blue-500 bg-blue-50 shadow-none m-0 px-0 rounded-none font-normal">
896            <div class="container text-center">
897                <p>
898                    <strong>JavaScript scheint in Ihrem Browser deaktiviert zu sein.</strong>
899                    <span>
900                        Um unsere Website in bester Weise zu erfahren, aktivieren Sie Javascript in Ihrem Browser.                    </span>
901                </p>
902            </div>
903        </section>
904    </noscript>
905
906
907<script>
908    document.body.addEventListener('touchstart', () => {}, {passive: true})
909</script>
vendor: 1 bytes, line 909
909
910<script>
911    window.addEventListener('DOMContentLoaded', () => {
912        if (hyva && hyva.formValidation) {
913            hyva.formValidation.addRule('postcode', function(value, options, field, context) {
914                return true;
915            })
916        }
917    })
918</script>
vendor: 1 bytes, line 918
918
919<script>
920    // https://github.com/Fischer-L/autoComplt
921    !function(t,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():t.autoComplt=t.returnExports=e()}(this,function(){"use strict";Array.prototype.indexOf||(Array.prototype.indexOf=function(t,e){if(void 0===this||null===this)throw new TypeError('"this" is null or not defined');var o=this.length>>>0;for(e=+e||0,Math.abs(e)===1/0&&(e=0),0>e&&(e+=o,0>e&&(e=0));o>e;e++)if(this[e]===t)return e;return-1});var t=function(){var t=-1;if("Microsoft Internet Explorer"==navigator.appName){var e=navigator.userAgent,o=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");null!=o.exec(e)&&(t=+RegExp.$1)}return-1===t?NaN:t},e=function(){var e=window.navigator.userAgent.toLowerCase();return e.search(/mobile|windows phone/)>=0?i.modeMobile:t()<=9?i.modePC:o().windowWidth>i.modeMobileW?i.modePC:i.modeMobile},o=function(){return window.innerWidth?{windowWidth:window.innerWidth,windowHeight:window.innerHeight}:document.documentElement.offsetHeight?{windowWidth:document.documentElement.offsetWidth,windowHeight:document.documentElement.offsetHeight}:document.body.offsetHeight?{windowWidth:document.body.offsetWidth,windowHeight:document.body.offsetHeight}:document.documentElement.clientHeight?{windowWidth:document.documentElement.clientWidth,windowHeight:document.documentElement.clientHeight}:document.body.clientHeight?{windowWidth:document.body.clientWidth,windowHeight:document.body.clientHeight}:{windowWidth:-1,windowHeight:-1}},i=function(t){return i=t,t.modePC="modePC",t.modeMobile="modeMobile",t.modeMobileW=768,t.autoCompltListClass="autoComplt-list",t.autoCompltHintClass="autoComplt-hint",t.autoCompltHintSelectedClass="autoComplt-hint-selected",t.maxHintNum=e()===i.modePC?10:5,t.autoCompltDelay=250,t.hiddenArg_close_list_n_make_final_selection="hiddenArg_close_list_n_make_final_selection",t.listStatus={attr:"data-listStatus",open:"open"},t.keyCode={up:38,down:40,esc:27,enter:13},t.defaultStyles={autoCompltList:{maxHeight:"none",border:"1px solid #aaa",padding:"0",margin:"0",zIndex:99,overflowX:"hidden",overflowY:"auto",display:"none",position:"absolute",backgroundColor:"#fff"},autoCompltHint:{height:"1.5em",padding:e()===i.modePC?"2px 6px 2px 10px":"6px 6px 6px 10px",margin:"6px 0",overflow:"hidden",listStyleType:"none",color:"#000",backgroundColor:"#fff",cursor:"default",fontSize:"1em"},autoCompltHintSelected:{color:"#fff",backgroundColor:"#3399ff"}},t.adjStyleAttrs={autoCompltList:["border","maxHeight","backgroundColor"],autoCompltHint:["height","padding","margin","color","backgroundColor","fontSize"],autoCompltHintSelected:["color","backgroundColor"]},t.listenersSupported=["select"],i}({}),n=function(t){return t||(t=window.event),t.target||(t.target=t.srcElement),t.stopBubble=function(){this.cancelBubble=!0,this.stopPropoagation&&this.stopPropoagation()},t.stopDefault=function(){return this.preventDefault&&this.preventDefault(),this.returnValue=!1,!1},t},l=function(t,e,o){t.addEventListener?t.addEventListener(e,o):t.attachEvent&&t.attachEvent("on"+e,o)},s=function(t,e,o){t.removeEventListener?t.removeEventListener(e,o):t.detachEvent&&t.detachEvent("on"+e,o)},u=function(t,e){var o=null;if(window.getComputedStyle)o=window.getComputedStyle(t)[e]||null;else if(t.currentStyle){o=t.currentStyle&&t.currentStyle[e];var i,n,l=t.style;null==o&&l&&l[e]&&(o=l[e]),i=l.left,n=t.runtimeStyle&&t.runtimeStyle.left,n&&(t.runtimeStyle.left=t.currentStyle.left),l.left="fontSize"===e?"1em":o,o=l.pixelLeft+"px",l.left=i,n&&(t.runtimeStyle.left=n)}return o},a={buildElem:function(t){var e=document.createElement("DIV");return e.innerHTML=t,e.firstChild.cloneNode(!0)},buildHint:function(t,e){return"string"==typeof t&&t?(t=this.buildElem('<li class="'+i.autoCompltHintClass+'">'+t+"</li>"),t.style.height=t.style.lineHeight=e.autoCompltHint.height,t.style.padding=e.autoCompltHint.padding,t.style.margin=e.autoCompltHint.margin,t.style.overflow=e.autoCompltHint.overflow,t.style.listStyleType=e.autoCompltHint.listStyleType,t.style.color=e.autoCompltHint.color,t.style.backgroundColor=e.autoCompltHint.backgroundColor,t.style.cursor=e.autoCompltHint.cursor,t.style.fontSize=e.autoCompltHint.fontSize,t):null},buildList:function(t){var e=this.buildElem('<ul class="'+i.autoCompltListClass+'"></ul>');return e.style.maxHeight=t.autoCompltList.maxHeight,e.style.border=t.autoCompltList.border,e.style.padding=t.autoCompltList.padding,e.style.margin=t.autoCompltList.margin,e.style.zIndex=t.autoCompltList.zIndex,e.style.overflowX=t.autoCompltList.overflowX,e.style.overflowY=t.autoCompltList.overflowY,e.style.display=t.autoCompltList.display,e.style.position=t.autoCompltList.position,e.style.backgroundColor=t.autoCompltList.backgroundColor,e}},r=function(t){this.uiElem=null,this.assocInput=t,this.mouseOnList=!1,this.onMouseSelectionListener=null,this.maxHintNum=i.maxHintNum,this.styles=JSON.parse(JSON.stringify(i.defaultStyles))};r.prototype.genList=function(){if(!this.uiElem){var t=this;this.uiElem=a.buildList(this.styles),l(this.uiElem,"mouseover",function(e){e=n(e),t.isHint(e.target)&&(t.pick(e.target),t.autoScroll())}),l(this.uiElem,"mouseout",function(e){t.unpick()}),l(this.uiElem,"mousedown",function(e){t.mouseOnList=!0,setTimeout(function(){t.assocInput.focus()},50)}),l(this.uiElem,"mouseup",function(e){e=n(e),t.isHint(e.target)&&(t.pick(e.target),"function"==typeof t.onMouseSelectionListener&&t.onMouseSelectionListener())}),document.body.appendChild(this.uiElem)}},r.prototype.isHint=function(t){if(t&&"object"==typeof t&&1===t.nodeType){var e=" "+t.className+" ";return e.indexOf(" "+i.autoCompltHintClass+" ")>=0}return!1},r.prototype.putHints=function(t){var e=0;if(t instanceof Array){var o,i,n=[];for(i=Math.min(t.length,this.maxHintNum),o=0;i>o;o++)n.push(a.buildHint(t[o],this.styles)),n[n.length-1]||n.pop();if(n.length>0){var l=document.createDocumentFragment();for(o=0,e=n.length;e>o;o++)l.appendChild(n[o]);this.clearHints(),this.genList(),this.uiElem.appendChild(l)}}return e},r.prototype.clearHints=function(){this.uiElem&&(this.uiElem.innerHTML="")},r.prototype.isOpen=function(){return this.uiElem?this.uiElem.getAttribute(i.listStatus.attr)==i.listStatus.open:!1},r.prototype.open=function(){var t;if(this.uiElem&&(t=this.uiElem.querySelectorAll("."+i.autoCompltHintClass))&&t.length){var e,o;for(o=this.assocInput.getBoundingClientRect(),this.uiElem.style.top=(document.documentElement&&document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop)+o.bottom+"px",this.uiElem.style.left=o.left+"px",o=o.right-o.left-parseFloat(u(this.uiElem,"borderLeftWidth"))-parseFloat(u(this.uiElem,"borderRightWidth")),this.uiElem.style.width=o+"px",e=0,o=0;e<t.length;
921e++)o+=parseFloat(u(t[e],"height"))+parseFloat(u(t[e],"paddingTop"))+parseFloat(u(t[e],"paddingBottom")),t[e+1]&&(o+=Math.max(parseFloat(u(t[e],"marginBottom")),parseFloat(u(t[e+1],"marginTop"))));o+=parseFloat(u(t[0],"marginTop"))+parseFloat(u(t[t.length-1],"marginBottom")),this.uiElem.style.height=o+1+"px",this.uiElem.setAttribute(i.listStatus.attr,i.listStatus.open),this.uiElem.style.display="block"}},r.prototype.close=function(){this.uiElem&&(this.mouseOnList=!1,this.uiElem.parentNode.removeChild(this.uiElem),this.uiElem=null)},r.prototype.autoScroll=function(){var t=this.getPicked();if(t){var e,o=0,i=0,n=t.clientHeight,l=parseFloat(u(t,"marginTop")),s=parseFloat(u(t,"marginBottom"));for(e=t.previousSibling,i=n+(e?Math.max(l,s):l);e;)o+=n,e=e.previousSibling,o+=e?Math.max(l,s):l;(this.uiElem.clientHeight+this.uiElem.scrollTop-o<i||o-this.uiElem.scrollTop<i)&&(this.uiElem.scrollTop=o)}},r.prototype.pick=function(t){if(this.uiElem){var e=null;if(this.isHint(t))e=t;else if("number"==typeof t&&(t>=0||-1===t)){var o=this.uiElem.querySelectorAll("."+i.autoCompltHintClass);o.length>0&&(e=+t,e=-1===e||e>o.length-1?o.length-1:e,e=o[e])}null!==e&&(this.unpick(),e.className+=" "+i.autoCompltHintSelectedClass,e.style.color=this.styles.autoCompltHintSelected.color,e.style.backgroundColor=this.styles.autoCompltHintSelected.backgroundColor)}},r.prototype.unpick=function(){if(this.uiElem){var t=this.getPicked();t&&(t.className=i.autoCompltHintClass,t.style.color=this.styles.autoCompltHint.color,t.style.backgroundColor=this.styles.autoCompltHint.backgroundColor)}},r.prototype.getPicked=function(){return this.uiElem?this.uiElem.querySelector("."+i.autoCompltHintSelectedClass)||null:null};var c={enable:function(t,o){if(t&&"object"==typeof t&&"string"==typeof t.tagName&&"input"==t.tagName.toLowerCase()&&"text"==t.type&&1===t.nodeType&&!t.autoComplt){t.autoComplt={};var u=i.autoCompltDelay,a=!0,c="",p=null,m=null,d=new r(t),f=function(){if(t.value.length>0&&a&&"function"==typeof p&&c!==t.value){var e={that:t,compltTarget:c=t.value,compltTargetMatchCurrentTarget:function(){return e.compltTarget===c},call:function(){e.compltTargetMatchCurrentTarget()&&p.call(e.that,e.compltTarget,e.openHint)},openHint:function(t){e.compltTargetMatchCurrentTarget()&&(d.putHints(t)?d.open():e.that.autoComplt.close())}};setTimeout(e.call,u)}},h=function(){if(a){var e=d.getPicked();e?t.value=e.innerHTML:t.value=c}},y=function(e){d.mouseOnList?(t.focus(),d.mouseOnList=!1):d.isOpen()&&t.autoComplt.close(i.hiddenArg_close_list_n_make_final_selection)},g=function(o){if(e()!==i.modeMobile&&(o=n(o),a))if("keydown"!=o.type||!d.isOpen()||o.keyCode!==i.keyCode.up&&o.keyCode!==i.keyCode.down){if("keyup"==o.type){var l=!1;switch(o.keyCode){case i.keyCode.up:case i.keyCode.down:d.isOpen()||(l=!0);break;case i.keyCode.esc:d.isOpen()&&(t.value=c,t.autoComplt.close(i.hiddenArg_close_list_n_make_final_selection));break;case i.keyCode.enter:d.isOpen()&&(h(),t.autoComplt.close(i.hiddenArg_close_list_n_make_final_selection));break;default:l=!0}l&&(t.value.length>0?f():t.autoComplt.close())}}else{var s=d.getPicked();o.keyCode===i.keyCode.up?s?s.previousSibling?d.pick(s.previousSibling):d.unpick():d.pick(-1):o.keyCode===i.keyCode.down&&(s?s.nextSibling?d.pick(s.nextSibling):d.unpick():d.pick(0)),d.autoScroll(),h()}},C=function(o){e()!==i.modePC&&(t.value.length>0?f():t.autoComplt.close())},H=function(e){null!=m&&"function"==typeof m[e]&&m[e].call(t)};return t.autoComplt.setHintsFetcher=function(t){return null===t||"function"==typeof t?(p=t,!0):!1},t.autoComplt.setListener=function(t,e){return(null===e||"function"==typeof e)&&i.listenersSupported.indexOf(t)>=0?(null==m&&(m={}),m[t]=e,!0):!1},t.autoComplt.setStyles=function(t,e){var o,n,l=!1;switch(t){case i.autoCompltListClass:o=d.styles.autoCompltList,n=i.adjStyleAttrs.autoCompltList;break;case i.autoCompltHintClass:o=d.styles.autoCompltHint,n=i.adjStyleAttrs.autoCompltHint;break;case i.autoCompltHintSelectedClass:o=d.styles.autoCompltHintSelected,n=i.adjStyleAttrs.autoCompltHintSelected}if(e instanceof Object&&o&&n)for(var s=0;s<n.length;s++)("string"==typeof e[n[s]]||"number"==typeof e[n[s]])&&(l||(l={}),l[n[s]]=o[n[s]]=e[n[s]]);return l},t.autoComplt.config=function(t){var e=!1;if(t instanceof Object){var o;void 0!==t.delay&&(o=Math.floor(t.delay))>0&&(e||(e={}),u=e.delay=o),void 0!==t.maxHintNum&&(o=Math.floor(t.maxHintNum))>0&&(e||(e={}),d.maxHintNum=e.maxHintNum=o)}return e},t.autoComplt.close=function(){c="",d.close(),a&&""!==t.value&&arguments[0]===i.hiddenArg_close_list_n_make_final_selection&&H("select")},t.autoComplt.enable=function(){a=!0},t.autoComplt.disable=function(){a=!1,this.close()},t.autoComplt.destroy=function(){s(t,"blur",y),s(t,"keyup",g),s(t,"keydown",g),this.disable(),delete t.autoComplt},d.onMouseSelectionListener=function(){h(),t.autoComplt.close(i.hiddenArg_close_list_n_make_final_selection)},l(t,"blur",y),l(t,"keyup",g),l(t,"keydown",g),l(t,"input",C),o instanceof Object&&(t.autoComplt.config(o),t.autoComplt.setHintsFetcher(o.hintsFetcher)),t}return null}};return c});
922</script>
922
923<div class="page-wrapper"><header class="page-header"><a class="action skip sr-only focus:not-sr-only focus:absolute focus:z-40 focus:bg-white
924   contentarea"
925   href="#contentarea">
926    <span>
927        Zum Inhalt springen    </span>
928</a>
929<script>
930    function initHeader () {
931        return {
932            searchOpen: false,
933            cart: {},
934            isCartOpen: false,
935            getData(data) {
936                if (data.cart) { this.cart = data.cart }
937            },
938            isCartEmpty() {
939                return !this.cart.summary_count
940            },
941            toggleCart(event) {
942                if (event.detail && event.detail.isOpen !== undefined) {
943                    this.isCartOpen = event.detail.isOpen
944                    if (!this.isCartOpen && this.$refs && this.$refs.cartButton) {
945                        this.$refs.cartButton.focus()
946                    }
947                } else {
948                                        this.isCartOpen = true
949                }
950            }
951        }
952    }
953    function initCompareHeader() {
954        return {
955            compareProducts: null,
956            itemCount: 0,
957            receiveCompareData(data) {
958                if (data['compare-products']) {
959                    this.compareProducts = data['compare-products'];
960                    this.itemCount = this.compareProducts.count;
961                }
962            }
963        }
964    }
965</script>
965
966<div id="header"
967     class="relative z-30 w-full border-b shadow bg-container-lighter border-container-lighter"
968     x-data="initHeader()"
969     @private-content-loaded.window="getData(event.detail.data)"
970>
971    <div class="container flex flex-wrap lg:flex-nowrap items-center justify-between w-full px-6 py-3 mx-auto mt-0">
972        <!--Logo-->
973        <div class="order-1 sm:order-2 lg:order-1 w-full pb-2 sm:w-auto sm:pb-0">
974    <a
975        class="flex items-center justify-center text-xl font-medium tracking-wide text-gray-800
976            no-underline hover:no-underline font-title"
977        href="https://meiner.de/fmv_de/"
978        aria-label="Go&#x20;to&#x20;Home&#x20;page"
979    >
980        <img
981            src="https://meiner.de/media/logo/websites/1/FMV_BW_quer_4c.png"
982            alt="Felix&#x20;Meiner&#x20;Verlag&#x20;GmbH"
983            width="325"            height="81"            loading="eager"
984        />
985            </a>
986</div>
987
988        <!--Main Navigation-->
989        
990<nav
991    class="z-20 order-2 sm:order-1 lg:order-2 navigation lg:hidden w-12 h-12"
992    aria-label="Site&#x20;navigation"
993    x-data="initMenuMobile_6ab96af40f1d4()"
994    @load.window="setActiveMenu($root)"
995    @keydown.window.escape="closeMenu()"
996>
997    <button
998        type="button"
999        class="block"
1000        aria-label="Open&#x20;menu"
1001        :aria-expanded="open"
1002        x-ref="mobileMenuTrigger"
1003        x-show="!open"
1004        @click="openMenu()"
1005    >
1006        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="28" height="28" aria-hidden="true">
1007  <path stroke-linecap="round" stroke-linejoin="round" d="M4 6h16M4 12h16M4 18h16"/>
1008</svg>
1009    </button>
1010    <div
1011        x-ref="mobileMenuNavLinks"
1012        class="
1013            z-50 fixed top-0 right-0 w-full h-full p-1 hidden
1014            flex-col border-t border-container bg-container-lighter
1015            overflow-y-auto overflow-x-hidden
1016        "
1017        :class="{ 'flex': open, 'hidden': !open }"
1018        :aria-hidden="open ? 'false' : 'true'"
1019        role="dialog"
1020        aria-modal="true"
1021    >
1022        <ul
1023            class="border-t flex flex-col gap-y-1 mt-16"
1024            aria-label="Site&#x20;navigation&#x20;links"
1025        >
1026                            <li
1027                    data-child-id="category-node-10-main"
1028                    class="level-0"
1029                >
1030                    <div
1031                        class="flex items-center transition-transform duration-150 ease-in-out transform"
1032                        :class="{
1033                            '-translate-x-full' : mobilePanelActiveId,
1034                            'translate-x-0' : !mobilePanelActiveId
1035                        }"
1036                    >
1037                        <a
1038                            class="flex items-center w-full px-8 py-4 border-b cursor-pointer
1039                                bg-container-lighter border-container level-0
1040                            "
1041                            href="https://meiner.de/fmv_de/programm"
1042                            title="Programm"
1043                        >
1044                            Programm                        </a>
1045                                                    <div
1046                                @click="openSubcategory('category-node-10')"
1047                                class="absolute right-0 flex items-center justify-center w-11 h-11 mr-8 cursor-pointer
1048                                bg-container-lighter border-container"
1049                                aria-label="Open&#x20;Programm&#x20;subcategories"
1050                                aria-haspopup="true"
1051                                :aria-expanded="mobilePanelActiveId === 'category-node-10'"
1052                            >
1053                                <div class="w-8 h-8 border rounded">
1054                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-full h-full p-1" width="24" height="24" aria-hidden="true">
1055  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
1056</svg>
1057                                </div>
1058                            </div>
1059                                            </div>
1060                                            <div
1061                            data-child-id="category-node-10"
1062                            class="absolute top-0 right-0 z-10 flex flex-col gap-1 w-full h-full p-1 bg-container-lighter"
1063                            :class="{
1064                                'hidden': mobilePanelActiveId !== 'category-node-10'
1065                            }"
1066                        >
1067                            <ul
1068                                class="mt-16 transition-transform duration-200 ease-in-out translate-x-full transform"
1069                                :class="{
1070                                    'translate-x-full' : mobilePanelActiveId !== 'category-node-10',
1071                                    'translate-x-0' : mobilePanelActiveId === 'category-node-10',
1072                                }"
1073                                aria-label="Subcategories"
1074                            >
1075                                <li>
1076                                    <button
1077                                        type="button"
1078                                        class="flex items-center px-8 py-4 border-b cursor-pointer bg-container border-container w-full border-t"
1079                                        @click="backToMainCategories('category-node-10-main')"
1080                                        aria-label="Back&#x20;to&#x20;main&#x20;categories"
1081                                    >
1082                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true">
1083  <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/>
1084</svg>
1085                                        <span class="ml-4">
1086                                            Programm                                        </span>
1087                                    </button>
1088                                </li>
1089                                <li>
1090                                    <a
1091                                        href="https://meiner.de/fmv_de/programm"
1092                                        title="Programm"
1093                                        class="flex items-center w-full px-8 py-4 border-b cursor-pointer
1094                                            bg-container-lighter border-container
1095                                        "
1096                                    >
1097                                        <span class="">
1098                                            Alle anzeigen                                        </span>
1099                                    </a>
1100                                </li>
1101                                                                    <li x-data="{ open: false }">
1102                                        <a
1103                                            href="https://meiner.de/fmv_de/programm/reihen"
1104                                            title="Reihen"
1105                                            class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1106                                                bg-container-lighter border-container min-h-[77px]"
1107                                        >
1108                                            <span class="text-base text-gray-700">
1109                                                Reihen                                            </span>
1110                                                                                            <button
1111                                                    @click.prevent="open = !open"
1112                                                    class="flex items-center justify-center w-11 h-11 cursor-pointer
1113                                                    bg-container-lighter border-container"
1114                                                    :class="{ 'rotate-90': open, 'rotate-0': !open }"
1115                                                    aria-label="Open&#x20;Reihen&#x20;subcategories"
1116                                                >
1117                                                    <div class="w-8 h-8 border rounded pointer-events-none">
1118                                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-full h-full p-1 pointer-events-none" width="24" height="24" aria-hidden="true">
1119  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
1120</svg>
1121                                                    </div>
1122                                                </button>
1123                                                                                    </a>
1124
1125                                                                                <ul class="subsubmenu overflow-hidden" x-show="open"
1126                                            x-transition:enter="transition-all ease-out duration-300"
1127                                            x-transition:enter-start="h-0 overflow-hidden"
1128                                            x-transition:enter-end="h-auto overflow-hidden"
1129                                            x-transition:leave="transition-all ease-in duration-200"
1130                                            x-transition:leave-start="h-auto overflow-hidden"
1131                                            x-transition:leave-end="h-0 overflow-hidden">
1132                                                                                    <li x-data="{ open2: false }">
1133                                                <a
1134                                                    href="https://meiner.de/fmv_de/programm/reihen/acta-cusana-beihefte"
1135                                                    title="Acta&#x20;Cusana&#x20;-&#x20;Beihefte"
1136                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1137                                                        bg-container-lighter border-container min-h-[77px]"
1138                                                >
1139                                                    <span class="ml-6 text-base text-gray-700">
1140                                                        Acta Cusana - Beihefte                                                    </span>
1141
1142                                                    <!----------------- 4te Ebene ------------------>
1143                                                                                                        <!----------------- ------------------>
1144
1145                                                </a>
1146
1147                                                <!----------------- 4te Ebene ------------------>
1148                                                                                                <!----------------- ------------------>
1149
1150                                            </li>
1151                                                                                    <li x-data="{ open2: false }">
1152                                                <a
1153                                                    href="https://meiner.de/fmv_de/programm/reihen/archiv-fur-begriffsgeschichte-sonderhefte"
1154                                                    title="Archiv&#x20;f&#xFC;r&#x20;Begriffsgeschichte&#x20;-&#x20;Sonderhefte"
1155                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1156                                                        bg-container-lighter border-container min-h-[77px]"
1157                                                >
1158                                                    <span class="ml-6 text-base text-gray-700">
1159                                                        Archiv für Begriffsgeschichte - Sonderhefte                                                    </span>
1160
1161                                                    <!----------------- 4te Ebene ------------------>
1162                                                                                                        <!----------------- ------------------>
1163
1164                                                </a>
1165
1166                                                <!----------------- 4te Ebene ------------------>
1167                                                                                                <!----------------- ------------------>
1168
1169                                            </li>
1170                                                                                    <li x-data="{ open2: false }">
1171                                                <a
1172                                                    href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe"
1173                                                    title="Blaue&#x20;Reihe"
1174                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1175                                                        bg-container-lighter border-container min-h-[77px]"
1176                                                >
1177                                                    <span class="ml-6 text-base text-gray-700">
1178                                                        Blaue Reihe                                                    </span>
1179
1180                                                    <!----------------- 4te Ebene ------------------>
1181                                                                                                        <!----------------- ------------------>
1182
1183                                                </a>
1184
1185                                                <!----------------- 4te Ebene ------------------>
1186                                                                                                <!----------------- ------------------>
1187
1188                                            </li>
1189                                                                                    <li x-data="{ open2: false }">
1190                                                <a
1191                                                    href="https://meiner.de/fmv_de/programm/reihen/cassirer-forschungen"
1192                                                    title="Cassirer-Forschungen"
1193                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1194                                                        bg-container-lighter border-container min-h-[77px]"
1195                                                >
1196                                                    <span class="ml-6 text-base text-gray-700">
1197                                                        Cassirer-Forschungen                                                    </span>
1198
1199                                                    <!----------------- 4te Ebene ------------------>
1200                                                                                                        <!----------------- ------------------>
1201
1202                                                </a>
1203
1204                                                <!----------------- 4te Ebene ------------------>
1205                                                                                                <!----------------- ------------------>
1206
1207                                            </li>
1208                                                                                    <li x-data="{ open2: false }">
1209                                                <a
1210                                                    href="https://meiner.de/fmv_de/programm/reihen/corpus-philosophorum-teutonicorum-medii-aevi-beihefte"
1211                                                    title="Corpus&#x20;Philosophorum&#x20;Teutonicorum&#x20;Medii&#x20;Aevi&#x20;-&#x20;Beihefte"
1212                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1213                                                        bg-container-lighter border-container min-h-[77px]"
1214                                                >
1215                                                    <span class="ml-6 text-base text-gray-700">
1216                                                        Corpus Philosophorum Teutonicorum Medii Aevi - Beihefte                                                    </span>
1217
1218                                                    <!----------------- 4te Ebene ------------------>
1219                                                                                                        <!----------------- ------------------>
1220
1221                                                </a>
1222
1223                                                <!----------------- 4te Ebene ------------------>
1224                                                                                                <!----------------- ------------------>
1225
1226                                            </li>
1227                                                                                    <li x-data="{ open2: false }">
1228                                                <a
1229                                                    href="https://meiner.de/fmv_de/programm/reihen/hegel-deutungen"
1230                                                    title="Hegel-Deutungen"
1231                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1232                                                        bg-container-lighter border-container min-h-[77px]"
1233                                                >
1234                                                    <span class="ml-6 text-base text-gray-700">
1235                                                        Hegel-Deutungen                                                    </span>
1236
1237                                                    <!----------------- 4te Ebene ------------------>
1238                                                                                                        <!----------------- ------------------>
1239
1240                                                </a>
1241
1242                                                <!----------------- 4te Ebene ------------------>
1243                                                                                                <!----------------- ------------------>
1244
1245                                            </li>
1246                                                                                    <li x-data="{ open2: false }">
1247                                                <a
1248                                                    href="https://meiner.de/fmv_de/programm/reihen/hegel-studien-beihefte"
1249                                                    title="Hegel&#x20;Studien&#x20;-&#x20;Beihefte"
1250                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1251                                                        bg-container-lighter border-container min-h-[77px]"
1252                                                >
1253                                                    <span class="ml-6 text-base text-gray-700">
1254                                                        Hegel Studien - Beihefte                                                    </span>
1255
1256                                                    <!----------------- 4te Ebene ------------------>
1257                                                                                                        <!----------------- ------------------>
1258
1259                                                </a>
1260
1261                                                <!----------------- 4te Ebene ------------------>
1262                                                                                                <!----------------- ------------------>
1263
1264                                            </li>
1265                                                                                    <li x-data="{ open2: false }">
1266                                                <a
1267                                                    href="https://meiner.de/fmv_de/programm/reihen/kant-forschungen"
1268                                                    title="Kant-Forschungen"
1269                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1270                                                        bg-container-lighter border-container min-h-[77px]"
1271                                                >
1272                                                    <span class="ml-6 text-base text-gray-700">
1273                                                        Kant-Forschungen                                                    </span>
1274
1275                                                    <!----------------- 4te Ebene ------------------>
1276                                                                                                        <!----------------- ------------------>
1277
1278                                                </a>
1279
1280                                                <!----------------- 4te Ebene ------------------>
1281                                                                                                <!----------------- ------------------>
1282
1283                                            </li>
1284                                                                                    <li x-data="{ open2: false }">
1285                                                <a
1286                                                    href="https://meiner.de/fmv_de/programm/reihen/methoden-im-philosophie-und-ethikunterricht"
1287                                                    title="Methoden&#x20;im&#x20;Philosophie-&#x20;und&#x20;Ethikunterricht"
1288                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1289                                                        bg-container-lighter border-container min-h-[77px]"
1290                                                >
1291                                                    <span class="ml-6 text-base text-gray-700">
1292                                                        Methoden im Philosophie- und Ethikunterricht                                                    </span>
1293
1294                                                    <!----------------- 4te Ebene ------------------>
1295                                                                                                        <!----------------- ------------------>
1296
1297                                                </a>
1298
1299                                                <!----------------- 4te Ebene ------------------>
1300                                                                                                <!----------------- ------------------>
1301
1302                                            </li>
1303                                                                                    <li x-data="{ open2: false }">
1304                                                <a
1305                                                    href="https://meiner.de/fmv_de/programm/reihen/paradeigmata"
1306                                                    title="Paradeigmata"
1307                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1308                                                        bg-container-lighter border-container min-h-[77px]"
1309                                                >
1310                                                    <span class="ml-6 text-base text-gray-700">
1311                                                        Paradeigmata                                                    </span>
1312
1313                                                    <!----------------- 4te Ebene ------------------>
1314                                                                                                        <!----------------- ------------------>
1315
1316                                                </a>
1317
1318                                                <!----------------- 4te Ebene ------------------>
1319                                                                                                <!----------------- ------------------>
1320
1321                                            </li>
1322                                                                                    <li x-data="{ open2: false }">
1323                                                <a
1324                                                    href="https://meiner.de/fmv_de/programm/reihen/phanomenologische
1324-forschungen-beiheft"
1325                                                    title="Ph&#xE4;nomenologische&#x20;Forschungen&#x20;-&#x20;Beihefte"
1326                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1327                                                        bg-container-lighter border-container min-h-[77px]"
1328                                                >
1329                                                    <span class="ml-6 text-base text-gray-700">
1330                                                        Phänomenologische Forschungen - Beihefte                                                    </span>
1331
1332                                                    <!----------------- 4te Ebene ------------------>
1333                                                                                                        <!----------------- ------------------>
1334
1335                                                </a>
1336
1337                                                <!----------------- 4te Ebene ------------------>
1338                                                                                                <!----------------- ------------------>
1339
1340                                            </li>
1341                                                                                    <li x-data="{ open2: false }">
1342                                                <a
1343                                                    href="https://meiner.de/fmv_de/programm/reihen/philosophische-bibliothek"
1344                                                    title="Philosophische&#x20;Bibliothek"
1345                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1346                                                        bg-container-lighter border-container min-h-[77px]"
1347                                                >
1348                                                    <span class="ml-6 text-base text-gray-700">
1349                                                        Philosophische Bibliothek                                                    </span>
1350
1351                                                    <!----------------- 4te Ebene ------------------>
1352                                                                                                        <!----------------- ------------------>
1353
1354                                                </a>
1355
1356                                                <!----------------- 4te Ebene ------------------>
1357                                                                                                <!----------------- ------------------>
1358
1359                                            </li>
1360                                                                                    <li x-data="{ open2: false }">
1361                                                <a
1362                                                    href="https://meiner.de/fmv_de/programm/reihen/philosophisch-literarische-streitsachen"
1363                                                    title="Philosophisch-literarische&#x20;Streitsachen"
1364                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1365                                                        bg-container-lighter border-container min-h-[77px]"
1366                                                >
1367                                                    <span class="ml-6 text-base text-gray-700">
1368                                                        Philosophisch-literarische Streitsachen                                                    </span>
1369
1370                                                    <!----------------- 4te Ebene ------------------>
1371                                                                                                        <!----------------- ------------------>
1372
1373                                                </a>
1374
1375                                                <!----------------- 4te Ebene ------------------>
1376                                                                                                <!----------------- ------------------>
1377
1378                                            </li>
1379                                                                                    <li x-data="{ open2: false }">
1380                                                <a
1381                                                    href="https://meiner.de/fmv_de/programm/reihen/schriften-zur-transzendentalphilosophie"
1382                                                    title="Schriften&#x20;zur&#x20;Transzendentalphilosophie"
1383                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1384                                                        bg-container-lighter border-container min-h-[77px]"
1385                                                >
1386                                                    <span class="ml-6 text-base text-gray-700">
1387                                                        Schriften zur Transzendentalphilosophie                                                    </span>
1388
1389                                                    <!----------------- 4te Ebene ------------------>
1390                                                                                                        <!----------------- ------------------>
1391
1392                                                </a>
1393
1394                                                <!----------------- 4te Ebene ------------------>
1395                                                                                                <!----------------- ------------------>
1396
1397                                            </li>
1398                                                                                    <li x-data="{ open2: false }">
1399                                                <a
1400                                                    href="https://meiner.de/fmv_de/programm/reihen/sino-philosophica"
1401                                                    title="Sino-philosophica"
1402                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1403                                                        bg-container-lighter border-container min-h-[77px]"
1404                                                >
1405                                                    <span class="ml-6 text-base text-gray-700">
1406                                                        Sino-philosophica                                                    </span>
1407
1408                                                    <!----------------- 4te Ebene ------------------>
1409                                                                                                        <!----------------- ------------------>
1410
1411                                                </a>
1412
1413                                                <!----------------- 4te Ebene ------------------>
1414                                                                                                <!----------------- ------------------>
1415
1416                                            </li>
1417                                                                                    <li x-data="{ open2: false }">
1418                                                <a
1419                                                    href="https://meiner.de/fmv_de/programm/reihen/studien-zu-den-quaestiones-disputatae-des-thomas-von-aquin"
1420                                                    title="Studien&#x20;zu&#x20;den&#x20;Quaestiones&#x20;Disputatae&#x20;des&#x20;Thomas&#x20;von&#x20;Aquin"
1421                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1422                                                        bg-container-lighter border-container min-h-[77px]"
1423                                                >
1424                                                    <span class="ml-6 text-base text-gray-700">
1425                                                        Studien zu den Quaestiones Disputatae des Thomas von Aquin                                                    </span>
1426
1427                                                    <!----------------- 4te Ebene ------------------>
1428                                                                                                        <!----------------- ------------------>
1429
1430                                                </a>
1431
1432                                                <!----------------- 4te Ebene ------------------>
1433                                                                                                <!----------------- ------------------>
1434
1435                                            </li>
1436                                                                                    <li x-data="{ open2: false }">
1437                                                <a
1438                                                    href="https://meiner.de/fmv_de/programm/reihen/studien-zum-achtzehnten-jahrhundert"
1439                                                    title="Studien&#x20;zum&#x20;achtzehnten&#x20;Jahrhundert"
1440                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1441                                                        bg-container-lighter border-container min-h-[77px]"
1442                                                >
1443                                                    <span class="ml-6 text-base text-gray-700">
1444                                                        Studien zum achtzehnten Jahrhundert                                                    </span>
1445
1446                                                    <!----------------- 4te Ebene ------------------>
1447                                                                                                        <!----------------- ------------------>
1448
1449                                                </a>
1450
1451                                                <!----------------- 4te Ebene ------------------>
1452                                                                                                <!----------------- ------------------>
1453
1454                                            </li>
1455                                                                                    <li x-data="{ open2: false }">
1456                                                <a
1457                                                    href="https://meiner.de/fmv_de/programm/reihen/topos-poietikos"
1458                                                    title="Topos&#x20;Poietikos"
1459                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1460                                                        bg-container-lighter border-container min-h-[77px]"
1461                                                >
1462                                                    <span class="ml-6 text-base text-gray-700">
1463                                                        Topos Poietikos                                                    </span>
1464
1465                                                    <!----------------- 4te Ebene ------------------>
1466                                                                                                        <!----------------- ------------------>
1467
1468                                                </a>
1469
1470                                                <!----------------- 4te Ebene ------------------>
1471                                                                                                <!----------------- ------------------>
1472
1473                                            </li>
1474                                                                                    <li x-data="{ open2: false }">
1475                                                <a
1476                                                    href="https://meiner.de/fmv_de/programm/reihen/zeitschrift-fur-asthetik-und-allgemeine-kunstwissenschaft-sonderhefte"
1477                                                    title="Zeitschrift&#x20;f&#xFC;r&#x20;&#xC4;sthetik&#x20;und&#x20;Allgemeine&#x20;Kunstwissenschaft&#x20;-&#x20;Sonderhefte"
1478                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1479                                                        bg-container-lighter border-container min-h-[77px]"
1480                                                >
1481                                                    <span class="ml-6 text-base text-gray-700">
1482                                                        Zeitschrift für Ästhetik und Allgemeine Kunstwissenschaft - Sonderhefte                                                    </span>
1483
1484                                                    <!----------------- 4te Ebene ------------------>
1485                                                                                                        <!----------------- ------------------>
1486
1487                                                </a>
1488
1489                                                <!----------------- 4te Ebene ------------------>
1490                                                                                                <!----------------- ------------------>
1491
1492                                            </li>
1493                                                                                </ul>
1494                                        
1495                                    </li>
1496                                                                    <li x-data="{ open: false }">
1497                                        <a
1498                                            href="https://meiner.de/fmv_de/programm/zeitschriften"
1499                                            title="Zeitschriften&#x20;&amp;&#x20;Jahrb&#xFC;cher"
1500                                            class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1501                                                bg-container-lighter border-container min-h-[77px]"
1502                                        >
1503                                            <span class="text-base text-gray-700">
1504                                                Zeitschriften &amp; Jahrbücher                                            </span>
1505                                                                                            <button
1506                                                    @click.prevent="open = !open"
1507                                                    class="flex items-center justify-center w-11 h-11 cursor-pointer
1508                                                    bg-container-lighter border-container"
1509                                                    :class="{ 'rotate-90': open, 'rotate-0': !open }"
1510                                                    aria-label="Open&#x20;Zeitschriften&#x20;&amp;&#x20;Jahrb&#xFC;cher&#x20;subcategories"
1511                                                >
1512                                                    <div class="w-8 h-8 border rounded pointer-events-none">
1513                                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-full h-full p-1 pointer-events-none" width="24" height="24" aria-hidden="true">
1514  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
1515</svg>
1516                                                    </div>
1517                                                </button>
1518                                                                                    </a>
1519
1520                                                                                <ul class="subsubmenu overflow-hidden" x-show="open"
1521                                            x-transition:enter="transition-all ease-out duration-300"
1522                                            x-transition:enter-start="h-0 overflow-hidden"
1523                                            x-transition:enter-end="h-auto overflow-hidden"
1524                                            x-transition:leave="transition-all ease-in duration-200"
1525                                            x-transition:leave-start="h-auto overflow-hidden"
1526                                            x-transition:leave-end="h-0 overflow-hidden">
1527                                                                                    <li x-data="{ open2: false }">
1528                                                <a
1529                                                    href="https://meiner.de/fmv_de/programm/zeitschriften/aufklarung"
1530                                                    title="Aufkl&#xE4;rung"
1531                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1532                                                        bg-container-lighter border-container min-h-[77px]"
1533                                                >
1534                                                    <span class="ml-6 text-base text-gray-700">
1535                                                        Aufklärung                                                    </span>
1536
1537                                                    <!----------------- 4te Ebene ------------------>
1538                                                                                                        <!----------------- ------------------>
1539
1540                                                </a>
1541
1542                                                <!----------------- 4te Ebene ------------------>
1543                                                                                                <!----------------- ------------------>
1544
1545                                            </li>
1546                                                                                    <li x-data="{ open2: false }">
1547                                                <a
1548                                                    href="https://meiner.de/fmv_de/programm/zeitschriften/archiv-fur-begriffsgeschichte"
1549                                                    title="Archiv&#x20;f&#xFC;r&#x20;Begriffsgeschichte"
1550                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1551                                                        bg-container-lighter border-container min-h-[77px]"
1552                                                >
1553                                                    <span class="ml-6 text-base text-gray-700">
1554                                                        Archiv für Begriffsgeschichte                                                    </span>
1555
1556                                                    <!----------------- 4te Ebene ------------------>
1557                                                                                                        <!----------------- ------------------>
1558
1559                                                </a>
1560
1561                                                <!----------------- 4te Ebene ------------------>
1562                                                                                                <!----------------- ------------------>
1563
1564                                            </li>
1565                                                                                    <li x-data="{ open2: false }">
1566                                                <a
1567                                                    href="https://meiner.de/fmv_de/programm/zeitschriften/deutsches-jahrbuch-philosophie"
1568                                                    title="Deutsches&#x20;Jahrbuch&#x20;Philosophie"
1569                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1570                                                        bg-container-lighter border-container min-h-[77px]"
1571                                                >
1572                                                    <span class="ml-6 text-base text-gray-700">
1573                                                        Deutsches Jahrbuch Philosophie                                                    </span>
1574
1575                                                    <!----------------- 4te Ebene ------------------>
1576                                                                                                        <!----------------- ------------------>
1577
1578                                                </a>
1579
1580                                                <!----------------- 4te Ebene ------------------>
1581                                                                                                <!----------------- ------------------>
1582
1583                                            </li>
1584                                                                                    <li x-data="{ open2: false }">
1585                                                <a
1586                                                    href="https://meiner.de/fmv_de/programm/zeitschriften/hegel-studien"
1587                                                    title="Hegel-Studien"
1588                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1589                                                        bg-container-lighter border-container min-h-[77px]"
1590                                                >
1591                                                    <span class="ml-6 text-base text-gray-700">
1592                                                        Hegel-Studien                                                    </span>
1593
1594                                                    <!----------------- 4te Ebene ------------------>
1595                                                                                                        <!----------------- ------------------>
1596
1597                                                </a>
1598
1599                                                <!----------------- 4te Ebene ------------------>
1600                                                                                                <!----------------- ------------------>
1601
1602                                            </li>
1603                                                                                    <li x-data="{ open2: false }">
1604                                                <a
1605                                                    href="https://meiner.de/fmv_de/programm/zeitschriften/kulturwissenschaftliche-zeitschrift"
1606                                                    title="Kulturwissenschaftliche&#x20;Zeitschrift"
1607                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1608                                                        bg-container-lighter border-container min-h-[77px]"
1609                                                >
1610                                                    <span class="ml-6 text-base text-gray-700">
1611                                                        Kulturwissenschaftliche Zeitschrift                                                    </span>
1612
1613                                                    <!----------------- 4te Ebene ------------------>
1614                                                                                                        <!----------------- ------------------>
1615
1616                                                </a>
1617
1618                                                <!----------------- 4te Ebene ------------------>
1619                                                                                                <!----------------- ------------------>
1620
1621                                            </li>
1622                                                                                    <li x-data="{ open2: false }">
1623                                                <a
1624                                                    href="https://meiner.de/fmv_de/programm/zeitschriften/phanomenologische
1624-forschungen"
1625                                                    title="Ph&#xE4;nomenologische&#x20;Forschungen"
1626                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1627                                                        bg-container-lighter border-container min-h-[77px]"
1628                                                >
1629                                                    <span class="ml-6 text-base text-gray-700">
1630                                                        Phänomenologische Forschungen                                                    </span>
1631
1632                                                    <!----------------- 4te Ebene ------------------>
1633                                                                                                        <!----------------- ------------------>
1634
1635                                                </a>
1636
1637                                                <!----------------- 4te Ebene ------------------>
1638                                                                                                <!----------------- ------------------>
1639
1640                                            </li>
1641                                                                                    <li x-data="{ open2: false }">
1642                                                <a
1643                                                    href="https://meiner.de/fmv_de/programm/zeitschriften/zeitschrift-fur-asthetik-und-allgemeine-kunstwissenschaft"
1644                                                    title="Zeitschrift&#x20;f&#xFC;r&#x20;&#xC4;sthetik&#x20;und&#x20;Allgemeine&#x20;Kunstwissenschaft"
1645                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1646                                                        bg-container-lighter border-container min-h-[77px]"
1647                                                >
1648                                                    <span class="ml-6 text-base text-gray-700">
1649                                                        Zeitschrift für Ästhetik und Allgemeine Kunstwissenschaft                                                    </span>
1650
1651                                                    <!----------------- 4te Ebene ------------------>
1652                                                                                                        <!----------------- ------------------>
1653
1654                                                </a>
1655
1656                                                <!----------------- 4te Ebene ------------------>
1657                                                                                                <!----------------- ------------------>
1658
1659                                            </li>
1660                                                                                    <li x-data="{ open2: false }">
1661                                                <a
1662                                                    href="https://meiner.de/fmv_de/programm/zeitschriften/zeitschrift-fur-kulturphilosophie"
1663                                                    title="Zeitschrift&#x20;f&#xFC;r&#x20;Kulturphilosophie"
1664                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1665                                                        bg-container-lighter border-container min-h-[77px]"
1666                                                >
1667                                                    <span class="ml-6 text-base text-gray-700">
1668                                                        Zeitschrift für Kulturphilosophie                                                    </span>
1669
1670                                                    <!----------------- 4te Ebene ------------------>
1671                                                                                                        <!----------------- ------------------>
1672
1673                                                </a>
1674
1675                                                <!----------------- 4te Ebene ------------------>
1676                                                                                                <!----------------- ------------------>
1677
1678                                            </li>
1679                                                                                    <li x-data="{ open2: false }">
1680                                                <a
1681                                                    href="https://meiner.de/fmv_de/programm/zeitschriften/zeitschrift-fur-medien-und-kulturforschung"
1682                                                    title="Zeitschrift&#x20;f&#xFC;r&#x20;Medien-&#x20;und&#x20;Kulturforschung"
1683                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1684                                                        bg-container-lighter border-container min-h-[77px]"
1685                                                >
1686                                                    <span class="ml-6 text-base text-gray-700">
1687                                                        Zeitschrift für Medien- und Kulturforschung                                                    </span>
1688
1689                                                    <!----------------- 4te Ebene ------------------>
1690                                                                                                        <!----------------- ------------------>
1691
1692                                                </a>
1693
1694                                                <!----------------- 4te Ebene ------------------>
1695                                                                                                <!----------------- ------------------>
1696
1697                                            </li>
1698                                                                                </ul>
1699                                        
1700                                    </li>
1701                                                                    <li x-data="{ open: false }">
1702                                        <a
1703                                            href="https://meiner.de/fmv_de/programm/editionen-werkausgaben"
1704                                            title="Werk-&#x20;&amp;&#x20;Gesamtausgaben"
1705                                            class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1706                                                bg-container-lighter border-container min-h-[77px]"
1707                                        >
1708                                            <span class="text-base text-gray-700">
1709                                                Werk- &amp; Gesamtausgaben                                            </span>
1710                                                                                            <button
1711                                                    @click.prevent="open = !open"
1712                                                    class="flex items-center justify-center w-11 h-11 cursor-pointer
1713                                                    bg-container-lighter border-container"
1714                                                    :class="{ 'rotate-90': open, 'rotate-0': !open }"
1715                                                    aria-label="Open&#x20;Werk-&#x20;&amp;&#x20;Gesamtausgaben&#x20;subcategories"
1716                                                >
1717                                                    <div class="w-8 h-8 border rounded pointer-events-none">
1718                                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-full h-full p-1 pointer-events-none" width="24" height="24" aria-hidden="true">
1719  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
1720</svg>
1721                                                    </div>
1722                                                </button>
1723                                                                                    </a>
1724
1725                                                                                <ul class="subsubmenu overflow-hidden" x-show="open"
1726                                            x-transition:enter="transition-all ease-out duration-300"
1727                                            x-transition:enter-start="h-0 overflow-hidden"
1728                                            x-transition:enter-end="h-auto overflow-hidden"
1729                                            x-transition:leave="transition-all ease-in duration-200"
1730                                            x-transition:leave-start="h-auto overflow-hidden"
1731                                            x-transition:leave-end="h-0 overflow-hidden">
1732                                                                                    <li x-data="{ open2: false }">
1733                                                <a
1734                                                    href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/acta-cusana-quellen-zur-lebensgeschichte-des-nikolaus-von-kues"
1735                                                    title="Acta&#x20;Cusana.&#x20;Quellen&#x20;zur&#x20;Lebensgeschichte&#x20;des&#x20;Nikolaus&#x20;von&#x20;Kues"
1736                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1737                                                        bg-container-lighter border-container min-h-[77px]"
1738                                                >
1739                                                    <span class="ml-6 text-base text-gray-700">
1740                                                        Acta Cusana. Quellen zur Lebensgeschichte des Nikolaus von Kues                                                    </span>
1741
1742                                                    <!----------------- 4te Ebene ------------------>
1743                                                                                                        <!----------------- ------------------>
1744
1745                                                </a>
1746
1747                                                <!----------------- 4te Ebene ------------------>
1748                                                                                                <!----------------- ------------------>
1749
1750                                            </li>
1751                                                                                    <li x-data="{ open2: false }">
1752                                                <a
1753                                                    href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/carnap-tagebucher"
1754                                                    title="Carnap&#x20;Tageb&#xFC;cher"
1755                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1756                                                        bg-container-lighter border-container min-h-[77px]"
1757                                                >
1758                                                    <span class="ml-6 text-base text-gray-700">
1759                                                        Carnap Tagebücher                                                    </span>
1760
1761                                                    <!----------------- 4te Ebene ------------------>
1762                                                                                                        <!----------------- ------------------>
1763
1764                                                </a>
1765
1766                                                <!----------------- 4te Ebene ------------------>
1767                                                                                                <!----------------- ------------------>
1768
1769                                            </li>
1770                                                                                    <li x-data="{ open2: false }">
1771                                                <a
1772                                                    href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/corpus-philosophorum-teutonicorum-medii-aevi"
1773                                                    title="Corpus&#x20;Philosophorum&#x20;Teutonicorum&#x20;Medii&#x20;Aevi"
1774                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1775                                                        bg-container-lighter border-container min-h-[77px]"
1776                                                >
1777                                                    <span class="ml-6 text-base text-gray-700">
1778                                                        Corpus Philosophorum Teutonicorum Medii Aevi                                                    </span>
1779
1780                                                    <!----------------- 4te Ebene ------------------>
1781                                                                                                        <!----------------- ------------------>
1782
1783                                                </a>
1784
1785                                                <!----------------- 4te Ebene ------------------>
1786                                                                                                <!----------------- ------------------>
1787
1788                                            </li>
1789                                                                                    <li x-data="{ open2: false }">
1790                                                <a
1791                                                    href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/ernst-cassirer-gesammelte-werke"
1792                                                    title="Ernst&#x20;Cassirer&#x20;-&#x20;Gesammelte&#x20;Werke"
1793                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1794                                                        bg-container-lighter border-container min-h-[77px]"
1795                                                >
1796                                                    <span class="ml-6 text-base text-gray-700">
1797                                                        Ernst Cassirer - Gesammelte Werke                                                    </span>
1798
1799                                                    <!----------------- 4te Ebene ------------------>
1800                                                                                                        <!----------------- ------------------>
1801
1802                                                </a>
1803
1804                                                <!----------------- 4te Ebene ------------------>
1805                                                                                                <!----------------- ------------------>
1806
1807                                            </li>
1808                                                                                    <li x-data="{ open2: false }">
1809                                                <a
1810                                                    href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/ernst-cassirer-nachlass"
1811                                                    title="Ernst&#x20;Cassirer&#x20;-&#x20;Nachlass"
1812                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1813                                                        bg-container-lighter border-container min-h-[77px]"
1814                                                >
1815                                                    <span class="ml-6 text-base text-gray-700">
1816                                                        Ernst Cassirer - Nachlass                                                    </span>
1817
1818                                                    <!----------------- 4te Ebene ------------------>
1819                                                                                                        <!----------------- ------------------>
1820
1821                                                </a>
1822
1823                                                <!----------------- 4te Ebene ------------------>
1824                                                                                                <!----------------- ------------------>
1825
1826                                            </li>
1827                                                                                    <li x-data="{ open2: false }">
1828                                                <a
1829                                                    href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/friedrich-heinrich-jacobi-werke"
1830                                                    title="Friedrich&#x20;Heinrich&#x20;Jacobi&#x20;-&#x20;Werke"
1831                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1832                                                        bg-container-lighter border-container min-h-[77px]"
1833                                                >
1834                                                    <span class="ml-6 text-base text-gray-700">
1835                                                        Friedrich Heinrich Jacobi - Werke                                                    </span>
1836
1837                                                    <!----------------- 4te Ebene ------------------>
1838                                                                                                        <!----------------- ------------------>
1839
1840                                                </a>
1841
1842                                                <!----------------- 4te Ebene ------------------>
1843                                                                                                <!----------------- ------------------>
1844
1845                                            </li>
1846                                                                                    <li x-data="{ open2: false }">
1847                                                <a
1848                                                    href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/f-w-j-schelling-philosophische-entwurfe-und-tagebucher"
1849                                                    title="F.W.J.&#x20;Schelling&#x20;-&#x20;Philosophische&#x20;Entw&#xFC;rfe&#x20;und&#x20;Tageb&#xFC;cher"
1850                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1851                                                        bg-container-lighter border-container min-h-[77px]"
1852                                                >
1853                                                    <span class="ml-6 text-base text-gray-700">
1854                                                        F.W.J. Schelling - Philosophische Entwürfe und Tagebücher                                                    </span>
1855
1856                                                    <!----------------- 4te Ebene ------------------>
1857                                                                                                        <!----------------- ------------------>
1858
1859                                                </a>
1860
1861                                                <!----------------- 4te Ebene ------------------>
1862                                                                                                <!----------------- ------------------>
1863
1864                                            </li>
1865                                                                                    <li x-data="{ open2: false }">
1866                                                <a
1867                                                    href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/giordano-bruno-werke"
1868                                                    title="Giordano&#x20;Bruno&#x20;-&#x20;Werke"
1869                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1870                                                        bg-container-lighter border-container min-h-[77px]"
1871                                                >
1872                                                    <span class="ml-6 text-base text-gray-700">
1873                                                        Giordano Bruno - Werke                                                    </span>
1874
1875                                                    <!----------------- 4te Ebene ------------------>
1876                                                                                                        <!----------------- ------------------>
1877
1878                                                </a>
1879
1880                                                <!----------------- 4te Ebene ------------------>
1881                                                                                                <!----------------- ------------------>
1882
1883                                            </li>
1884                                                                                    <li x-data="{ open2: false }">
1885                                                <a
1886                                                    href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/g-w-f-hegel-gesammelte-werke"
1887                                                    title="G.W.F.&#x20;Hegel&#x20;-&#x20;Gesammelte&#x20;Werke"
1888                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1889                                                        bg-container-lighter border-container min-h-[77px]"
1890                                                >
1891                                                    <span class="ml-6 text-base text-gray-700">
1892                                                        G.W.F. Hegel - Gesammelte Werke                                                    </span>
1893
1894                                                    <!----------------- 4te Ebene ------------------>
1895                                                                                                        <!----------------- ------------------>
1896
1897                                                </a>
1898
1899                                                <!----------------- 4te Ebene ------------------>
1900                                                                                                <!----------------- ------------------>
1901
1902                                            </li>
1903                                                                                    <li x-data="{ open2: false }">
1904                                                <a
1905                                                    href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/hegel-vorlesungen-ausgewahlte-nachschriften-und-manuskripte"
1906                                                    title="G.W.F.&#x20;Hegel,&#x20;Vorlesungen.&#x20;Ausgew&#xE4;hlte&#x20;Nachschriften&#x20;und&#x20;Manuskripte"
1907                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1908                                                        bg-container-lighter border-container min-h-[77px]"
1909                                                >
1910                                                    <span class="ml-6 text-base text-gray-700">
1911                                                        G.W.F. Hegel, Vorlesungen. Ausgewählte Nachschriften und Manuskripte                                                    </span>
1912
1913                                                    <!----------------- 4te Ebene ------------------>
1914                                                                                                        <!----------------- ------------------>
1915
1916                                                </a>
1917
1918                                                <!----------------- 4te Ebene ------------------>
1919                                                                                                <!----------------- ------------------>
1920
1921                                            </li>
1922                                                                                    <li x-data="{ open2: false }">
1923                                                <a
1924                                                    href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/josef-pieper-werke"
1925                                                    title="Josef&#x20;Pieper&#x20;-&#x20;Werke"
1926                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1927                                                        bg-container-lighter border-container min-h-[77px]"
1928                                                >
1929                                                    <span class="ml-6 text-base text-gray-700">
1930                                                        Josef Pieper - Werke                                                    </span>
1931
1932                                                    <!----------------- 4te Ebene ------------------>
1933                                                                                                        <!----------------- ------------------>
1934
1935                                                </a>
1936
1937                                                <!----------------- 4te Ebene ------------------>
1938                                                                                                <!----------------- ------------------>
1939
1940                                            </li>
1941                                                                                    <li x-data="{ open2: false }">
1942                                                <a
1943                                                    href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/leo-strauss-gesammelte-schriften"
1944                                                    title="Leo&#x20;Strauss&#x20;-&#x20;Gesammelte&#x20;Schriften"
1945                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1946                                                        bg-container-lighter border-container min-h-[77px]"
1947                                                >
1948                                                    <span class="ml-6 text-base text-gray-700">
1949                                                        Leo Strauss - Gesammelte Schriften                                                    </span>
1950
1951                                                    <!----------------- 4te Ebene ------------------>
1952                                                                                                        <!----------------- ------------------>
1953
1954                                                </a>
1955
1956                                                <!----------------- 4te Ebene ------------------>
1957                                                                                                <!----------------- ------------------>
1958
1959                                            </li>
1960                                                                                    <li x-data="{ open2: false }">
1961                                                <a
1962                                                    href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/leonard-nelson-gesammelte-schriften"
1963                                                    title="Leonard&#x20;Nelson&#x20;-&#x20;Gesammelte&#x20;Schriften"
1964                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1965                                                        bg-container-lighter border-container min-h-[77px]"
1966                                                >
1967                                                    <span class="ml-6 text-base text-gray-700">
1968                                                        Leonard Nelson - Gesammelte Schriften                                                    </span>
1969
1970                                                    <!----------------- 4te Ebene ------------------>
1971                                                                                                        <!----------------- ------------------>
1972
1973                                                </a>
1974
1975                                                <!----------------- 4te Ebene ------------------>
1976                                                                                                <!----------------- ------------------>
1977
1978                                            </li>
1979                                                                                    <li x-data="{ open2: false }">
1980                                                <a
1981                                                    href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/nikolaus-von-kues-opera-omnia"
1982                                                    title="Nikolaus&#x20;von&#x20;Kues&#x20;-&#x20;Opera&#x20;Omnia"
1983                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
1984                                                        bg-container-lighter border-container min-h-[77px]"
1985                                                >
1986                                                    <span class="ml-6 text-base text-gray-700">
1987                                                        Nikolaus von Kues - Opera Omnia                                                    </span>
1988
1989                                                    <!----------------- 4te Ebene ------------------>
1990                                                                                                        <!----------------- ------------------>
1991
1992                                                </a>
1993
1994                                                <!----------------- 4te Ebene ------------------>
1995                                                                                                <!----------------- ------------------>
1996
1997                                            </li>
1998                                                                                    <li x-data="{ open2: false }">
1999                                                <a
2000                                                    href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/thomas-von-aquin-quaestiones-disputatae"
2001                                                    title="&#x20;Thomas&#x20;von&#x20;Aquin&#x20;-&#x20;Quaestiones&#x20;disputatae"
2002                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
2003                                                        bg-container-lighter border-container min-h-[77px]"
2004                                                >
2005                                                    <span class="ml-6 text-base text-gray-700">
2006                                                         Thomas von Aquin - Quaestiones disputatae                                                    </span>
2007
2008                                                    <!----------------- 4te Ebene ------------------>
2009                                                                                                        <!----------------- ------------------>
2010
2011                                                </a>
2012
2013                                                <!----------------- 4te Ebene ------------------>
2014                                                                                                <!----------------- ------------------>
2015
2016                                            </li>
2017                                                                                </ul>
2018                                        
2019                                    </li>
2020                                                                    <li x-data="{ open: false }">
2021                                        <a
2022                                            href="https://meiner.de/fmv_de/programm/einzeltitel"
2023                                            title="Monographien"
2024                                            class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
2025                                                bg-container-lighter border-container min-h-[77px]"
2026                                        >
2027                                            <span class="text-base text-gray-700">
2028                                                Monographien                                            </span>
2029                                                                                            <button
2030                                                    @click.prevent="open = !open"
2031                                                    class="flex items-center justify-center w-11 h-11 cursor-pointer
2032                                                    bg-container-lighter border-container"
2033                                                    :class="{ 'rotate-90': open, 'rotate-0': !open }"
2034                                                    aria-label="Open&#x20;Monographien&#x20;subcategories"
2035                                                >
2036                                                    <div class="w-8 h-8 border rounded pointer-events-none">
2037                                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-full h-full p-1 pointer-events-none" width="24" height="24" aria-hidden="true">
2038  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
2039</svg>
2040                                                    </div>
2041                                                </button>
2042                                                                                    </a>
2043
2044                                                                                <ul class="subsubmenu overflow-hidden" x-show="open"
2045                                            x-transition:enter="transition-all ease-out duration-300"
2046                                            x-transition:enter-start="h-0 overflow-hidden"
2047                                            x-transition:enter-end="h-auto overflow-hidden"
2048                                            x-transition:leave="transition-all ease-in duration-200"
2049                                            x-transition:leave-start="h-auto overflow-hidden"
2050                                            x-transition:leave-end="h-0 overflow-hidden">
2051                                                                                    <li x-data="{ open2: false }">
2052                                                <a
2053                                                    href="https://meiner.de/fmv_de/programm/einzeltitel/grundrisse"
2054                                                    title="Grundrisse"
2055                                                    class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
2056                                                        bg-container-lighter border-container min-h-[77px]"
2057                                                >
2058                                                    <span class="ml-6 text-base text-gray-700">
2059                                                        Grundrisse                                                    </span>
2060
2061                                                    <!----------------- 4te Ebene ------------------>
2062                                                                                                        <!----------------- ------------------>
2063
2064                                                </a>
2065
2066                                                <!----------------- 4te Ebene ------------------>
2067                                                                                                <!----------------- ------------------>
2068
2069                                            </li>
2070                                                                                </ul>
2071                                        
2072                                    </li>
2073                                                                    <li x-data="{ open: false }">
2074                                        <a
2075                                            href="https://meiner.de/fmv_de/programm/lexika-und-nachschlagewerke"
2076                                            title="Lexika&#x20;&amp;&#x20;Nachschlagewerke"
2077                                            class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
2078                                                bg-container-lighter border-container min-h-[77px]"
2079                                        >
2080                                            <span class="text-base text-gray-700">
2081                                                Lexika &amp; Nachschlagewerke                                            </span>
2082                                                                                    </a>
2083
2084                                        
2085                                    </li>
2086                                                                    <li x-data="{ open: false }">
2087                                        <a
2088                                            href="https://meiner.de/fmv_de/programm/sonderausgaben"
2089                                            title="Sonderausgaben"
2090                                            class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
2091                                                bg-container-lighter border-container min-h-[77px]"
2092                                        >
2093                                            <span class="text-base text-gray-700">
2094                                                Sonderausgaben                                            </span>
2095                                                                                    </a>
2096
2097                                        
2098                                    </li>
2099                                                                    <li x-data="{ open: false }">
2100                                        <a
2101                                            href="https://meiner.de/fmv_de/programm/als-set-verfugbar"
2102                                            title="Als&#x20;Set&#x20;verf&#xFC;gbar"
2103                                            class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
2104                                                bg-container-lighter border-container min-h-[77px]"
2105                                        >
2106                                            <span class="text-base text-gray-700">
2107                                                Als Set verfügbar                                            </span>
2108                                                                                    </a>
2109
2110                                        
2111                                    </li>
2112                                                            </ul>
2113                            <button
2114                                @click="closeMenu()"
2115                                class="absolute flex justify-end w-16 self-end mb-1 transition-none"
2116                                aria-label="Close&#x20;menu"
2117                            >
2118                                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="hidden p-4" width="64" height="64" :class="{ 'hidden' : !open, 'block': open }" aria-hidden="true">
2119  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
2120</svg>
2121                            </button>
2122                        </div>
2123                                    </li>
2124                            <li
2125                    data-child-id="category-node-11-main"
2126                    class="level-0"
2127                >
2128                    <div
2129                        class="flex items-center transition-transform duration-150 ease-in-out transform"
2130                        :class="{
2131                            '-translate-x-full' : mobilePanelActiveId,
2132                            'translate-x-0' : !mobilePanelActiveId
2133                        }"
2134                    >
2135                        <a
2136                            class="flex items-center w-full px-8 py-4 border-b cursor-pointer
2137                                bg-container-lighter border-container level-0
2138                            "
2139                            href="https://meiner.de/fmv_de/programm/thema"
2140                            title="Themen"
2141                        >
2142                            Themen                        </a>
2143                                                    <div
2144                                @click="openSubcategory('category-node-11')"
2145                                class="absolute right-0 flex items-center justify-center w-11 h-11 mr-8 cursor-pointer
2146                                bg-container-lighter border-container"
2147                                aria-label="Open&#x20;Themen&#x20;subcategories"
2148                                aria-haspopup="true"
2149                                :aria-expanded="mobilePanelActiveId === 'category-node-11'"
2150                            >
2151                                <div class="w-8 h-8 border rounded">
2152                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-full h-full p-1" width="24" height="24" aria-hidden="true">
2153  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/>
2154</svg>
2155                                </div>
2156                            </div>
2157                                            </div>
2158                                            <div
2159                            data-child-id="category-node-11"
2160                            class="absolute top-0 right-0 z-10 flex flex-col gap-1 w-full h-full p-1 bg-container-lighter"
2161                            :class="{
2162                                'hidden': mobilePanelActiveId !== 'category-node-11'
2163                            }"
2164                        >
2165                            <ul
2166                                class="mt-16 transition-transform duration-200 ease-in-out translate-x-full transform"
2167                                :class="{
2168                                    'translate-x-full' : mobilePanelActiveId !== 'category-node-11',
2169                                    'translate-x-0' : mobilePanelActiveId === 'category-node-11',
2170                                }"
2171                                aria-label="Subcategories"
2172                            >
2173                                <li>
2174                                    <button
2175                                        type="button"
2176                                        class="flex items-center px-8 py-4 border-b cursor-pointer bg-container border-container w-full border-t"
2177                                        @click="backToMainCategories('category-node-11-main')"
2178                                        aria-label="Back&#x20;to&#x20;main&#x20;categories"
2179                                    >
2180                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true">
2181  <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"/>
2182</svg>
2183                                        <span class="ml-4">
2184                                            Themen                                        </span>
2185                                    </button>
2186                                </li>
2187                                <li>
2188                                    <a
2189                                        href="https://meiner.de/fmv_de/programm/thema"
2190                                        title="Themen"
2191                                        class="flex items-center w-full px-8 py-4 border-b cursor-pointer
2192                                            bg-container-lighter border-container
2193                                        "
2194                                    >
2195                                        <span class="">
2196                                            Alle anzeigen                                        </span>
2197                                    </a>
2198                                </li>
2199                                                                    <li x-data="{ open: false }">
2200                                        <a
2201                                            href="https://meiner.de/fmv_de/thema/asthetik"
2202                                            title="&#xC4;sthetik"
2203                                            class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
2204                                                bg-container-lighter border-container min-h-[77px]"
2205                                        >
2206                                            <span class="text-base text-gray-700">
2207                                                Ästhetik                                            </span>
2208                                                                                    </a>
2209
2210                                        
2211                                    </li>
2212                                                                    <li x-data="{ open: false }">
2213                                        <a
2214                                            href="https://meiner.de/fmv_de/thema/antike-philosophie"
2215                                            title="Antike&#x20;Philosophie"
2216                                            class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
2217                                                bg-container-lighter border-container min-h-[77px]"
2218                                        >
2219                                            <span class="text-base text-gray-700">
2220                                                Antike Philosophie                                            </span>
2221                                                                                    </a>
2222
2223                                        
2224                                    </li>
2225                                                                    <li x-data="{ open: false }">
2226                                        <a
2227                                            href="https://meiner.de/fmv_de/thema/digitale-philosophie"
2228                                            title="Digitalit&#xE4;t&#x20;und&#x20;K&#xFC;nstliche&#x20;Intelligenz"
2229                                            class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
2230                                                bg-container-lighter border-container min-h-[77px]"
2231                                        >
2232                                            <span class="text-base text-gray-700">
2233                                                Digitalität und Künstliche Intelligenz                                            </span>
2234                                                                                    </a>
2235
2236                                        
2237                                    </li>
2238                                                                    <li x-data="{ open: false }">
2239                                        <a
2240                                            href="https://meiner.de/fmv_de/thema/klassische-deutsche-philosophie"
2241                                            title="Klassische&#x20;Deutsche&#x20;Philosophie"
2242                                            class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
2243                                                bg-container-lighter border-container min-h-[77px]"
2244                                        >
2245                                            <span class="text-base text-gray-700">
2246                                                Klassische Deutsche Philosophie                                            </span>
2247                                                                                    </a>
2248
2249                                        
2250                                    </li>
2251                                                                    <li x-data="{ open: false }">
2252                                        <a
2253                                            href="https://meiner.de/fmv_de/thema/kultur-medienphilosophie"
2254                                            title="Kultur-&#x20;&amp;&#x20;Medienphilosophie"
2255                                            class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
2256                                                bg-container-lighter border-container min-h-[77px]"
2257                                        >
2258                                            <span class="text-base text-gray-700">
2259                                                Kultur- &amp; Medienphilosophie                                            </span>
2260                                                                                    </a>
2261
2262                                        
2263                                    </li>
2264                                                                    <li x-data="{ open: false }">
2265                                        <a
2266                                            href="https://meiner.de/fmv_de/thema/logik-wissenschaftstheorie"
2267                                            title="Logik&#x20;&#x2F;&#x20;Wissenschaftstheorie"
2268                                            class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
2269                                                bg-container-lighter border-container min-h-[77px]"
2270                                        >
2271                                            <span class="text-base text-gray-700">
2272                                                Logik / Wissenschaftstheorie                                            </span>
2273                                                                                    </a>
2274
2275                                        
2276                                    </li>
2277                                                                    <li x-data="{ open: false }">
2278                                        <a
2279                                            href="https://meiner.de/fmv_de/thema/mittelalterliche-philosophie"
2280                                            title="Mittelalterliche&#x20;Philosophie"
2281                                            class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
2282                                                bg-container-lighter border-container min-h-[77px]"
2283                                        >
2284                                            <span class="text-base text-gray-700">
2285                                                Mittelalterliche Philosophie                                            </span>
2286                                                                                    </a>
2287
2288                                        
2289                                    </li>
2290                                                                    <li x-data="{ open: false }">
2291                                        <a
2292                                            href="https://meiner.de/fmv_de/thema/phanomenologie"
2293                                            title="Ph&#xE4;nomenologie"
2294                                            class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
2295                                                bg-container-lighter border-container min-h-[77px]"
2296                                        >
2297                                            <span class="text-base text-gray-700">
2298                                                Phänomenologie                                            </span>
2299                                                                                    </a>
2300
2301                                        
2302                                    </li>
2303                                                                    <li x-data="{ open: false }">
2304                                        <a
2305                                            href="https://meiner.de/fmv_de/thema/philosophie-des-19-20-jahrhunderts"
2306                                            title="Philosophie&#x20;des&#x20;19.&#x20;&#x2F;&#x20;20.&#x20;Jahrhunderts"
2307                                            class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
2308                                                bg-container-lighter border-container min-h-[77px]"
2309                                        >
2310                                            <span class="text-base text-gray-700">
2311                                                Philosophie des 19. / 20. Jahrhunderts                                            </span>
2312                                                                                    </a>
2313
2314                                        
2315                                    </li>
2316                                                                    <li x-data="{ open: false }">
2317                                        <a
2318                                            href="https://meiner.de/fmv_de/thema/philosophiedidaktik"
2319                                            title="Philosophiedidaktik"
2320                                            class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
2321                                                bg-container-lighter border-container min-h-[77px]"
2322                                        >
2323                                            <span class="text-base text-gray-700">
2324                                                Philosophiedidaktik                                            </span>
2325                                                                                    </a>
2326
2327                                        
2328                                    </li>
2329                                                                    <li x-data="{ open: false }">
2330                                        <a
2331                                            href="https://meiner.de/fmv_de/thema/renaissance-fruhe-neuzeit-aufklarung"
2332                                            title="Renaissance&#x20;&#x2F;&#x20;Fr&#xFC;he&#x20;Neuzeit&#x20;&#x2F;&#x20;Aufkl&#xE4;rung"
2333                                            class="flex items-center justify-between w-full px-8 py-4 border-b cursor-pointer
2334                                                bg-container-lighter border-container min-h-[77px]"
2335                                        >
2336                                            <span class="text-base text-gray-700">
2337                                                Renaissance / Frühe Neuzeit / Aufklärung                                            </span>
2338                                                                                    </a>
2339
2340                                        
2341                                    </li>
2342                                                            </ul>
2343                            <button
2344                                @click="closeMenu()"
2345                                class="absolute flex justify-end w-16 self-end mb-1 transition-none"
2346                                aria-label="Close&#x20;menu"
2347                            >
2348                                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="hidden p-4" width="64" height="64" :class="{ 'hidden' : !open, 'block': open }" aria-hidden="true">
2349  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
2350</svg>
2351                            </button>
2352                        </div>
2353                                    </li>
2354                            <li
2355                    data-child-id="category-node-28-main"
2356                    class="level-0"
2357                >
2358                    <div
2359                        class="flex items-center transition-transform duration-150 ease-in-out transform"
2360                        :class="{
2361                            '-translate-x-full' : mobilePanelActiveId,
2362                            'translate-x-0' : !mobilePanelActiveId
2363                        }"
2364                    >
2365                        <a
2366                            class="flex items-center w-full px-8 py-4 border-b cursor-pointer
2367                                bg-container-lighter border-container level-0
2368                            "
2369                            href="https://meiner.de/fmv_de/sonderangebote"
2370                            title="Sonderangebote"
2371                        >
2372                            Sonderangebote                        </a>
2373                                            </div>
2374                                    </li>
2375                            <li
2376                    data-child-id="blog-category-node0-main"
2377                    class="level-0"
2378                >
2379                    <div
2380                        class="flex items-center transition-transform duration-150 ease-in-out transform"
2381                        :class="{
2382                            '-translate-x-full' : mobilePanelActiveId,
2383                            'translate-x-0' : !mobilePanelActiveId
2384                        }"
2385                    >
2386                        <a
2387                            class="flex items-center w-full px-8 py-4 border-b cursor-pointer
2388                                bg-container-lighter border-container level-0
2389                            "
2390                            href="https://meiner.de/fmv_de/news"
2391                            title="Neuigkeiten"
2392                        >
2393                            Neuigkeiten                        </a>
2394                                            </div>
2395                                    </li>
2396                    </ul>
2397        <button
2398            @click="closeMenu()"
2399            class="absolute flex justify-end w-16 self-end mb-1"
2400            aria-label="Close&#x20;menu"
2401            type="button"
2402        >
2403            <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="hidden p-4" width="64" height="64" :class="{ 'hidden' : !open, 'block': open }" aria-hidden="true">
2404  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
2405</svg>
2406        </button>
2407    </div>
2408</nav>
2409<script>
2410    'use strict';
2411
2412    const initMenuMobile_6ab96af40f1d4 = () => {
2413        return {
2414            mobilePanelActiveId: null,
2415            open: false,
2416            setActiveMenu(menuNode) {
2417                Array.from(menuNode.querySelectorAll('a')).filter(link => {
2418                    return link.href === window.location.href.split('?')[0];
2419                }).map(item => {
2420                    item.classList.add('underline');
2421                    item.closest('li.level-0') &&
2422                    item.closest('li.level-0').querySelector('a.level-0').classList.add('underline');
2423                });
2424            },
2425            openMenu() {
2426                this.open = true
2427                this.$nextTick(() => hyva.trapFocus(this.$refs['mobileMenuNavLinks']));
2428                // Prevent from body scrolling while mobile menu opened
2429                document.body.style.position = 'fixed';
2430            },
2431            closeMenu() {
2432                document.body.style.position = '';
2433
2434                if (this.open) {
2435                    this.$nextTick(() => this.$refs['mobileMenuTrigger'].focus() || hyva.releaseFocus());
2436                }
2437
2438                this.open = false
2439                this.mobilePanelActiveId = null
2440            },
2441            openSubcategory(index) {
2442                const menuNodeRef = document.querySelector('[data-child-id=' + index + ']')
2443                this.mobilePanelActiveId = this.mobilePanelActiveId === index ? 0 : index
2444                this.$nextTick(() => hyva.trapFocus(menuNodeRef))
2445            },
2446            backToMainCategories(index) {
2447                const menuNodeRef = document.querySelector('[data-child-id=' + index + ']')
2448                this.mobilePanelActiveId = 0
2449                this.$nextTick(() => {
2450                    hyva.trapFocus(this.$refs['mobileMenuNavLinks'])
2451                    menuNodeRef.querySelector('a').focus()
2452                })
2453            }
2454        }
2455    }
2456</script>
2456
2457
2458<nav class="main-navigation hidden lg:block z-20 order-2 sm:order-1 lg:order-2 navigation hidden lg:flex">
2459    <ul class="menu flex justify-start flex-wrap py-4 gap-x-7">
2460                    <li class="menu-item relative level-0 border-b-2 border-transparent hover:border-primary data-[active]:border-primary">
2461            <a href="https://meiner.de/fmv_de/programm" class="w-full text-base text-gray-700 level-0 py-2 px-0.5 hover:no-underline">
2462                <span>Programm</span>
2463                                    <span class="inline items-center text-gray-500">
2464                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" aria-hidden="true">
2465  <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/>
2466</svg>
2467                    </span>
2468                            </a>
2469                            <ul class="submenu submenu-level-1 top-full z-10 hidden mt-0.5 -ml-6 shadow-lg bg-container-lighter/95 py-4">
2470                                                                    <li class="level-1 menu-item px-6 ">
2471                            <a href="https://meiner.de/fmv_de/programm/reihen"
2472                                title="Reihen"
2473                                class="level-1 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">
2474                                <span class="inline-block text-base text-gray-700">Reihen</span>
2475
2476                                                                    <span class="inline-block text-base text-gray-500">
2477                                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" aria-hidden="true">
2478  <path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"/>
2479</svg>
2480                                    </span>
2481                                                            </a>
2482                            <ul class="submenu submenu-level-2 ml-0 top-full z-10 hidden mt-0.5 -ml-6 shadow-lg bg-container-lighter/95 px-6 py-4">
2483                                                                    <li class="level-2 menu-item">
2484                                        <a href="https://meiner.de/fmv_de/programm/reihen/acta-cusana-beihefte"
2485                                            title="Acta&#x20;Cusana&#x20;-&#x20;Beihefte"
2486                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Acta Cusana - Beihefte</a>
2487                                    </li>
2488                                                                    <li class="level-2 menu-item">
2489                                        <a href="https://meiner.de/fmv_de/programm/reihen/archiv-fur-begriffsgeschichte-sonderhefte"
2490                                            title="Archiv&#x20;f&#xFC;r&#x20;Begriffsgeschichte&#x20;-&#x20;Sonderhefte"
2491                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Archiv für Begriffsgeschichte - Sonderhefte</a>
2492                                    </li>
2493                                                                    <li class="level-2 menu-item">
2494                                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe"
2495                                            title="Blaue&#x20;Reihe"
2496                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Blaue Reihe</a>
2497                                    </li>
2498                                                                    <li class="level-2 menu-item">
2499                                        <a href="https://meiner.de/fmv_de/programm/reihen/cassirer-forschungen"
2500                                            title="Cassirer-Forschungen"
2501                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Cassirer-Forschungen</a>
2502                                    </li>
2503                                                                    <li class="level-2 menu-item">
2504                                        <a href="https://meiner.de/fmv_de/programm/reihen/corpus-philosophorum-teutonicorum-medii-aevi-beihefte"
2505                                            title="Corpus&#x20;Philosophorum&#x20;Teutonicorum&#x20;Medii&#x20;Aevi&#x20;
2505-&#x20;Beihefte"
2506                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Corpus Philosophorum Teutonicorum Medii Aevi - Beihefte</a>
2507                                    </li>
2508                                                                    <li class="level-2 menu-item">
2509                                        <a href="https://meiner.de/fmv_de/programm/reihen/hegel-deutungen"
2510                                            title="Hegel-Deutungen"
2511                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Hegel-Deutungen</a>
2512                                    </li>
2513                                                                    <li class="level-2 menu-item">
2514                                        <a href="https://meiner.de/fmv_de/programm/reihen/hegel-studien-beihefte"
2515                                            title="Hegel&#x20;Studien&#x20;-&#x20;Beihefte"
2516                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Hegel Studien - Beihefte</a>
2517                                    </li>
2518                                                                    <li class="level-2 menu-item">
2519                                        <a href="https://meiner.de/fmv_de/programm/reihen/kant-forschungen"
2520                                            title="Kant-Forschungen"
2521                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Kant-Forschungen</a>
2522                                    </li>
2523                                                                    <li class="level-2 menu-item">
2524                                        <a href="https://meiner.de/fmv_de/programm/reihen/methoden-im-philosophie-und-ethikunterricht"
2525                                            title="Methoden&#x20;im&#x20;Philosophie-&#x20;und&#x20;Ethikunterricht"
2526                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Methoden im Philosophie- und Ethikunterricht</a>
2527                                    </li>
2528                                                                    <li class="level-2 menu-item">
2529                                        <a href="https://meiner.de/fmv_de/programm/reihen/paradeigmata"
2530                                            title="Paradeigmata"
2531                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Paradeigmata</a>
2532                                    </li>
2533                                                                    <li class="level-2 menu-item">
2534                                        <a href="https://meiner.de/fmv_de/programm/reihen/phanomenologische
2534-forschungen-beiheft"
2535                                            title="Ph&#xE4;nomenologische&#x20;Forschungen&#x20;-&#x20;Beihefte"
2536                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Phänomenologische Forschungen - Beihefte</a>
2537                                    </li>
2538                                                                    <li class="level-2 menu-item">
2539                                        <a href="https://meiner.de/fmv_de/programm/reihen/philosophische-bibliothek"
2540                                            title="Philosophische&#x20;Bibliothek"
2541                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Philosophische Bibliothek</a>
2542                                    </li>
2543                                                                    <li class="level-2 menu-item">
2544                                        <a href="https://meiner.de/fmv_de/programm/reihen/philosophisch-literarische-streitsachen"
2545                                            title="Philosophisch-literarische&#x20;Streitsachen"
2546                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Philosophisch-literarische Streitsachen</a>
2547                                    </li>
2548                                                                    <li class="level-2 menu-item">
2549                                        <a href="https://meiner.de/fmv_de/programm/reihen/schriften-zur-transzendentalphilosophie"
2550                                            title="Schriften&#x20;zur&#x20;Transzendentalphilosophie"
2551                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Schriften zur Transzendentalphilosophie</a>
2552                                    </li>
2553                                                                    <li class="level-2 menu-item">
2554                                        <a href="https://meiner.de/fmv_de/programm/reihen/sino-philosophica"
2555                                            title="Sino-philosophica"
2556                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Sino-philosophica</a>
2557                                    </li>
2558                                                                    <li class="level-2 menu-item">
2559                                        <a href="https://meiner.de/fmv_de/programm/reihen/studien-zu-den-quaestiones-disputatae-des-thomas-von-aquin"
2560                                            title="Studien&#x20;zu&#x20;den&#x20;Quaestiones&#x20;Disputatae&#x20;des&#x20;Thomas&#x20;von&#x20;Aquin"
2561                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Studien zu den Quaestiones Disputatae des Thomas von Aquin</a>
2562                                    </li>
2563                                                                    <li class="level-2 menu-item">
2564                                        <a href="https://meiner.de/fmv_de/programm/reihen/studien-zum-achtzehnten-jahrhundert"
2565                                            title="Studien&#x20;zum&#x20;achtzehnten&#x20;Jahrhundert"
2566                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Studien zum achtzehnten Jahrhundert</a>
2567                                    </li>
2568                                                                    <li class="level-2 menu-item">
2569                                        <a href="https://meiner.de/fmv_de/programm/reihen/topos-poietikos"
2570                                            title="Topos&#x20;Poietikos"
2571                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Topos Poietikos</a>
2572                                    </li>
2573                                                                    <li class="level-2 menu-item">
2574                                        <a href="https://meiner.de/fmv_de/programm/reihen/zeitschrift-fur-asthetik-und-allgemeine-kunstwissenschaft-sonderhefte"
2575                                            title="Zeitschrift&#x20;f&#xFC;r&#x20;&#xC4;sthetik&#x20;und&#x20;Allgemeine&#x20;Kunstwissenschaft&#x20;-&#x20;Sonderhefte"
2576                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Zeitschrift für Ästhetik und Allgemeine Kunstwissenschaft - Sonderhefte</a>
2577                                    </li>
2578                                                            </ul>
2579                        </li>
2580                                                                    <li class="level-1 menu-item px-6 ">
2581                            <a href="https://meiner.de/fmv_de/programm/zeitschriften"
2582                                title="Zeitschriften&#x20;&amp;&#x20;Jahrb&#xFC;cher"
2583                                class="level-1 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">
2584                                <span class="inline-block text-base text-gray-700">Zeitschriften &amp; Jahrbücher</span>
2585
2586                                                                    <span class="inline-block text-base text-gray-500">
2587                                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" aria-hidden="true">
2588  <path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"/>
2589</svg>
2590                                    </span>
2591                                                            </a>
2592                            <ul class="submenu submenu-level-2 ml-0 top-full z-10 hidden mt-0.5 -ml-6 shadow-lg bg-container-lighter/95 px-6 py-4">
2593                                                                    <li class="level-2 menu-item">
2594                                        <a href="https://meiner.de/fmv_de/programm/zeitschriften/aufklarung"
2595                                            title="Aufkl&#xE4;rung"
2596                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Aufklärung</a>
2597                                    </li>
2598                                                                    <li class="level-2 menu-item">
2599                                        <a href="https://meiner.de/fmv_de/programm/zeitschriften/archiv-fur-begriffsgeschichte"
2600                                            title="Archiv&#x20;f&#xFC;r&#x20;Begriffsgeschichte"
2601                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Archiv für Begriffsgeschichte</a>
2602                                    </li>
2603                                                                    <li class="level-2 menu-item">
2604                                        <a href="https://meiner.de/fmv_de/programm/zeitschriften/deutsches-jahrbuch-philosophie"
2605                                            title="Deutsches&#x20;Jahrbuch&#x20;Philosophie"
2606                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Deutsches Jahrbuch Philosophie</a>
2607                                    </li>
2608                                                                    <li class="level-2 menu-item">
2609                                        <a href="https://meiner.de/fmv_de/programm/zeitschriften/hegel-studien"
2610                                            title="Hegel-Studien"
2611                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Hegel-Studien</a>
2612                                    </li>
2613                                                                    <li class="level-2 menu-item">
2614                                        <a href="https://meiner.de/fmv_de/programm/zeitschriften/kulturwissenschaftliche-zeitschrift"
2615                                            title="Kulturwissenschaftliche&#x20;Zeitschrift"
2616                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Kulturwissenschaftliche Zeitschrift</a>
2617                                    </li>
2618                                                                    <li class="level-2 menu-item">
2619                                        <a href="https://meiner.de/fmv_de/programm/zeitschriften/phanomenologische
2619-forschungen"
2620                                            title="Ph&#xE4;nomenologische&#x20;Forschungen"
2621                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Phänomenologische Forschungen</a>
2622                                    </li>
2623                                                                    <li class="level-2 menu-item">
2624                                        <a href="https://meiner.de/fmv_de/programm/zeitschriften/zeitschrift-fur-asthetik-und-allgemeine-kunstwissenschaft"
2625                                            title="Zeitschrift&#x20;f&#xFC;r&#x20;&#xC4;sthetik&#x20;und&#x20;Allgemeine&#x20;Kunstwissenschaft"
2626                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Zeitschrift für Ästhetik und Allgemeine Kunstwissenschaft</a>
2627                                    </li>
2628                                                                    <li class="level-2 menu-item">
2629                                        <a href="https://meiner.de/fmv_de/programm/zeitschriften/zeitschrift-fur-kulturphilosophie"
2630                                            title="Zeitschrift&#x20;f&#xFC;r&#x20;Kulturphilosophie"
2631                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Zeitschrift für Kulturphilosophie</a>
2632                                    </li>
2633                                                                    <li class="level-2 menu-item">
2634                                        <a href="https://meiner.de/fmv_de/programm/zeitschriften/zeitschrift-fur-medien-und-kulturforschung"
2635                                            title="Zeitschrift&#x20;f&#xFC;r&#x20;Medien-&#x20;und&#x20;Kulturforschung"
2636                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Zeitschrift für Medien- und Kulturforschung</a>
2637                                    </li>
2638                                                            </ul>
2639                        </li>
2640                                                                    <li class="level-1 menu-item px-6 ">
2641                            <a href="https://meiner.de/fmv_de/programm/editionen-werkausgaben"
2642                                title="Werk-&#x20;&amp;&#x20;Gesamtausgaben"
2643                                class="level-1 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">
2644                                <span class="inline-block text-base text-gray-700">Werk- &amp; Gesamtausgaben</span>
2645
2646                                                                    <span class="inline-block text-base text-gray-500">
2647                                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" aria-hidden="true">
2648  <path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"/>
2649</svg>
2650                                    </span>
2651                                                            </a>
2652                            <ul class="submenu submenu-level-2 ml-0 top-full z-10 hidden mt-0.5 -ml-6 shadow-lg bg-container-lighter/95 px-6 py-4">
2653                                                                    <li class="level-2 menu-item">
2654                                        <a href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/acta-cusana-quellen-zur-lebensgeschichte-des-nikolaus-von-kues"
2655                                            title="Acta&#x20;Cusana.&#x20;Quellen&#x20;zur&#x20;Lebensgeschichte&#x20;des&#x20;Nikolaus&#x20;von&#x20;Kues"
2656                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Acta Cusana. Quellen zur Lebensgeschichte des Nikolaus von Kues</a>
2657                                    </li>
2658                                                                    <li class="level-2 menu-item">
2659                                        <a href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/carnap-tagebucher"
2660                                            title="Carnap&#x20;Tageb&#xFC;cher"
2661                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Carnap Tagebücher</a>
2662                                    </li>
2663                                                                    <li class="level-2 menu-item">
2664                                        <a href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/corpus-philosophorum-teutonicorum-medii-aevi"
2665                                            title="Corpus&#x20;Philosophorum&#x20;Teutonicorum&#x20;Medii&#x20;Aevi"
2666                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Corpus Philosophorum Teutonicorum Medii Aevi</a>
2667                                    </li>
2668                                                                    <li class="level-2 menu-item">
2669                                        <a href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/ernst-cassirer-gesammelte-werke"
2670                                            title="Ernst&#x20;Cassirer&#x20;-&#x20;Gesammelte&#x20;Werke"
2671                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Ernst Cassirer - Gesammelte Werke</a>
2672                                    </li>
2673                                                                    <li class="level-2 menu-item">
2674                                        <a href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/ernst-cassirer-nachlass"
2675                                            title="Ernst&#x20;Cassirer&#x20;-&#x20;Nachlass"
2676                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Ernst Cassirer - Nachlass</a>
2677                                    </li>
2678                                                                    <li class="level-2 menu-item">
2679                                        <a href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/friedrich-heinrich-jacobi-werke"
2680                                            title="Friedrich&#x20;Heinrich&#x20;Jacobi&#x20;
2680-&#x20;Werke"
2681                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Friedrich Heinrich Jacobi - Werke</a>
2682                                    </li>
2683                                                                    <li class="level-2 menu-item">
2684                                        <a href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/f-w-j-schelling-philosophische-entwurfe-und-tagebucher"
2685                                            title="F.W.J.&#x20;Schelling&#x20;-&#x20;Philosophische&#x20;Entw&#xFC;rfe&#x20;und&#x20;Tageb&#xFC;cher"
2686                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">F.W.J. Schelling - Philosophische Entwürfe und Tagebücher</a>
2687                                    </li>
2688                                                                    <li class="level-2 menu-item">
2689                                        <a href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/giordano-bruno-werke"
2690                                            title="Giordano&#x20;Bruno&#x20;-&#x20;Werke"
2691                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Giordano Bruno - Werke</a>
2692                                    </li>
2693                                                                    <li class="level-2 menu-item">
2694                                        <a href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/g-w-f-hegel-gesammelte-werke"
2695                                            title="G.W.F.&#x20;Hegel&#x20;-&#x20;Gesammelte&#x20;Werke"
2696                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">G.W.F. Hegel - Gesammelte Werke</a>
2697                                    </li>
2698                                                                    <li class="level-2 menu-item">
2699                                        <a href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/hegel-vorlesungen-ausgewahlte-nachschriften-und-manuskripte"
2700                                            title="G.W.F.&#x20;Hegel,&#x20;Vorlesungen.&#x20;Ausgew&#xE4;hlte&#x20;Nachschriften&#x20;und&#x20;Manuskripte"
2701                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">G.W.F. Hegel, Vorlesungen. Ausgewählte Nachschriften und Manuskripte</a>
2702                                    </li>
2703                                                                    <li class="level-2 menu-item">
2704                                        <a href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/josef-pieper-werke"
2705                                            title="Josef&#x20;Pieper&#x20;-&#x20;Werke"
2706                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Josef Pieper - Werke</a>
2707                                    </li>
2708                                                                    <li class="level-2 menu-item">
2709                                        <a href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/leo-strauss-gesammelte-schriften"
2710                                            title="Leo&#x20;Strauss&#x20;-&#x20;Gesammelte&#x20;Schriften"
2711                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Leo Strauss - Gesammelte Schriften</a>
2712                                    </li>
2713                                                                    <li class="level-2 menu-item">
2714                                        <a href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/leonard-nelson-gesammelte-schriften"
2715                                            title="Leonard&#x20;Nelson&#x20;-&#x20;Gesammelte&#x20;Schriften"
2716                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Leonard Nelson - Gesammelte Schriften</a>
2717                                    </li>
2718                                                                    <li class="level-2 menu-item">
2719                                        <a href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/nikolaus-von-kues-opera-omnia"
2720                                            title="Nikolaus&#x20;von&#x20;Kues&#x20;
2720-&#x20;Opera&#x20;Omnia"
2721                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Nikolaus von Kues - Opera Omnia</a>
2722                                    </li>
2723                                                                    <li class="level-2 menu-item">
2724                                        <a href="https://meiner.de/fmv_de/programm/editionen-werkausgaben/thomas-von-aquin-quaestiones-disputatae"
2725                                            title="&#x20;Thomas&#x20;von&#x20;Aquin&#x20;-&#x20;Quaestiones&#x20;disputatae"
2726                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700"> Thomas von Aquin - Quaestiones disputatae</a>
2727                                    </li>
2728                                                            </ul>
2729                        </li>
2730                                                                    <li class="level-1 menu-item px-6 ">
2731                            <a href="https://meiner.de/fmv_de/programm/einzeltitel"
2732                                title="Monographien"
2733                                class="level-1 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">
2734                                <span class="inline-block text-base text-gray-700">Monographien</span>
2735
2736                                                                    <span class="inline-block text-base text-gray-500">
2737                                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" aria-hidden="true">
2738  <path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"/>
2739</svg>
2740                                    </span>
2741                                                            </a>
2742                            <ul class="submenu submenu-level-2 ml-0 top-full z-10 hidden mt-0.5 -ml-6 shadow-lg bg-container-lighter/95 px-6 py-4">
2743                                                                    <li class="level-2 menu-item">
2744                                        <a href="https://meiner.de/fmv_de/programm/einzeltitel/grundrisse"
2745                                            title="Grundrisse"
2746                                            class="level-2 flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">Grundrisse</a>
2747                                    </li>
2748                                                            </ul>
2749                        </li>
2750                                                                                                                                                                                                                                                                                                                                            <li class="level-1 menu-item px-6 ">
2751                                <a href="https://meiner.de/fmv_de/programm/lexika-und-nachschlagewerke"
2752                                    title="Lexika&#x20;&amp;&#x20;Nachschlagewerke"
2753                                    class="level-1 text-base flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">
2754                                    Lexika &amp; Nachschlagewerke                                </a>
2755                            </li>
2756                                                    <li class="level-1 menu-item px-6 ">
2757                                <a href="https://meiner.de/fmv_de/programm/sonderausgaben"
2758                                    title="Sonderausgaben"
2759                                    class="level-1 text-base flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">
2760                                    Sonderausgaben                                </a>
2761                            </li>
2762                                                    <li class="level-1 menu-item px-6 ">
2763                                <a href="https://meiner.de/fmv_de/programm/als-set-verfugbar"
2764                                    title="Als&#x20;Set&#x20;verf&#xFC;gbar"
2765                                    class="level-1 text-base flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">
2766                                    Als Set verfügbar                                </a>
2767                            </li>
2768                                                            </ul>
2769                    </li>
2770                    <li class="menu-item relative level-0 border-b-2 border-transparent hover:border-primary data-[active]:border-primary">
2771            <a href="https://meiner.de/fmv_de/programm/thema" class="w-full text-base text-gray-700 level-0 py-2 px-0.5 hover:no-underline">
2772                <span>Themen</span>
2773                                    <span class="inline items-center text-gray-500">
2774                        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5 inline" width="25" height="25" aria-hidden="true">
2775  <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/>
2776</svg>
2777                    </span>
2778                            </a>
2779                            <ul class="submenu submenu-level-1 top-full z-10 hidden mt-0.5 -ml-6 shadow-lg bg-container-lighter/95 py-4">
2780                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <li class="level-1 menu-item px-6 ">
2781                                <a href="https://meiner.de/fmv_de/thema/asthetik"
2782                                    title="&#xC4;sthetik"
2783                                    class="level-1 text-base flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">
2784                                    Ästhetik                                </a>
2785                            </li>
2786                                                    <li class="level-1 menu-item px-6 ">
2787                                <a href="https://meiner.de/fmv_de/thema/antike-philosophie"
2788                                    title="Antike&#x20;Philosophie"
2789                                    class="level-1 text-base flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">
2790                                    Antike Philosophie                                </a>
2791                            </li>
2792                                                    <li class="level-1 menu-item px-6 ">
2793                                <a href="https://meiner.de/fmv_de/thema/digitale-philosophie"
2794                                    title="Digitalit&#xE4;t&#x20;und&#x20;K&#xFC;nstliche&#x20;Intelligenz"
2795                                    class="level-1 text-base flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">
2796                                    Digitalität und Künstliche Intelligenz                                </a>
2797                            </li>
2798                                                    <li class="level-1 menu-item px-6 ">
2799                                <a href="https://meiner.de/fmv_de/thema/klassische-deutsche-philosophie"
2800                                    title="Klassische&#x20;Deutsche&#x20;Philosophie"
2801                                    class="level-1 text-base flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">
2802                                    Klassische Deutsche Philosophie                                </a>
2803                            </li>
2804                                                    <li class="level-1 menu-item px-6 ">
2805                                <a href="https://meiner.de/fmv_de/thema/kultur-medienphilosophie"
2806                                    title="Kultur-&#x20;&amp;&#x20;Medienphilosophie"
2807                                    class="level-1 text-base flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">
2808                                    Kultur- &amp; Medienphilosophie                                </a>
2809                            </li>
2810                                                    <li class="level-1 menu-item px-6 ">
2811                                <a href="https://meiner.de/fmv_de/thema/logik-wissenschaftstheorie"
2812                                    title="Logik&#x20;&#x2F;&#x20;Wissenschaftstheorie"
2813                                    class="level-1 text-base flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">
2814                                    Logik / Wissenschaftstheorie                                </a>
2815                            </li>
2816                                                    <li class="level-1 menu-item px-6 ">
2817                                <a href="https://meiner.de/fmv_de/thema/mittelalterliche-philosophie"
2818                                    title="Mittelalterliche&#x20;Philosophie"
2819                                    class="level-1 text-base flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">
2820                                    Mittelalterliche Philosophie                                </a>
2821                            </li>
2822                                                    <li class="level-1 menu-item px-6 ">
2823                                <a href="https://meiner.de/fmv_de/thema/phanomenologie"
2824                                    title="Ph&#xE4;nomenologie"
2825                                    class="level-1 text-base flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">
2826                                    Phänomenologie                                </a>
2827                            </li>
2828                                                    <li class="level-1 menu-item px-6 ">
2829                                <a href="https://meiner.de/fmv_de/thema/philosophie-des-19-20-jahrhunderts"
2830                                    title="Philosophie&#x20;des&#x20;19.&#x20;&#x2F;&#x20;20.&#x20;Jahrhunderts"
2831                                    class="level-1 text-base flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">
2832                                    Philosophie des 19. / 20. Jahrhun
2832derts                                </a>
2833                            </li>
2834                                                    <li class="level-1 menu-item px-6 ">
2835                                <a href="https://meiner.de/fmv_de/thema/philosophiedidaktik"
2836                                    title="Philosophiedidaktik"
2837                                    class="level-1 text-base flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">
2838                                    Philosophiedidaktik                                </a>
2839                            </li>
2840                                                    <li class="level-1 menu-item px-6 ">
2841                                <a href="https://meiner.de/fmv_de/thema/renaissance-fruhe-neuzeit-aufklarung"
2842                                    title="Renaissance&#x20;&#x2F;&#x20;Fr&#xFC;he&#x20;Neuzeit&#x20;&#x2F;&#x20;Aufkl&#xE4;rung"
2843                                    class="level-1 text-base flex flex-row items-center justify-between block w-full px-3 py-1 my-1 whitespace-nowrap first:mt-0 hover:underline aria-[current=page]:underline text-base text-gray-700">
2844                                    Renaissance / Frühe Neuzeit / Aufklärung                                </a>
2845                            </li>
2846                                                            </ul>
2847                    </li>
2848                    <li class="menu-item relative level-0 border-b-2 border-transparent hover:border-primary data-[active]:border-primary">
2849            <a href="https://meiner.de/fmv_de/sonderangebote" class="w-full text-base text-gray-700 level-0 py-2 px-0.5 hover:no-underline">
2850                <span>Sonderangebote</span>
2851                            </a>
2852                    </li>
2853                    <li class="menu-item relative level-0 border-b-2 border-transparent hover:border-primary data-[active]:border-primary">
2854            <a href="https://meiner.de/fmv_de/news" class="w-full text-base text-gray-700 level-0 py-2 px-0.5 hover:no-underline">
2855                <span>Neuigkeiten</span>
2856                            </a>
2857                    </li>
2858        </ul>
2859</nav>
2860
2861        <div class="flex items-center gap-2 md:gap-1 order-3 md:-mr-1">
2862            <!--Compare Icon-->
2863            <a id="compare-link"
2864               class="relative inline-block rounded p-1 hover:bg-primary/10 outline-offset-2 invisible"
2865               :class="{ 'invisible': !(itemCount > 0) }"
2866               href="https://meiner.de/fmv_de/catalog/product_compare/index/"
2867               title="Produkte&#x20;vergleichen"
2868               x-data="initCompareHeader()"
2869               @private-content-loaded.window="receiveCompareData($event.detail.data)"
2870               :aria-label="`
2871                    Produkte&#x20;vergleichen,
2872                    ${itemCount > 1
2873                        ? hyva.str('\u00251\u0020Elemente', itemCount)
2874                        : hyva.str('\u00251\u0020Artikel', itemCount)
2875                    }`"
2876            >
2877                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="md:h-6 md:w-6" width="28" height="28" aria-hidden="true">
2878  <path stroke-linecap="round" stroke-linejoin="round" d="M3 6l3 1m0 0l-3 9a5.002 5.002 0 006.001 0M6 7l3 9M6 7l6-2m6 2l3-1m-3 1l-3 9a5.002 5.002 0 006.001 0M18 7l3 9m-3-9l-6-2m0-2v2m0 16V5m0 16H9m3 0h3"/>
2879</svg>
2880                <span
2881                    x-text="itemCount"
2882                    class="absolute -top-1.5 -right-1.5 h-5 px-2 py-1 rounded-full bg-yellow-500 text-white
2883                        text-xs font-semibold leading-none text-center uppercase tabular-nums"
2884                    aria-hidden="true"
2885                ></span>
2886            </a>
2887
2888            <!--Search Icon-->
2889            <button
2890                id="menu-search-icon"
2891                class="rounded p-1 hover:bg-primary/10 outline-offset-2"
2892                @click.prevent="
2893                    searchOpen = !searchOpen;
2894                    $dispatch('search-open');
2895                "
2896                aria-label="Toggle&#x20;search&#x20;form"
2897                aria-haspopup="true"
2898                :aria-expanded="searchOpen"
2899                x-ref="searchButton"
2900            >
2901                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="md:h-6 md:w-6" width="28" height="28" aria-hidden="true">
2902  <path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/>
2903</svg>
2904            </button>
2905
2906            <!-- Additional Header Elements -->
2907            
2908            <!--Customer Icon & Dropdown-->
2909            
2910<div
2911    class="relative inline-block"
2912    x-data="{ open: false }"
2913    @keyup.escape="open = false"
2914    @click.outside="open = false"
2915>
2916    <button
2917        type="button"
2918        id="customer-menu"
2919        class="block rounded p-1 hover:bg-primary/10 outline-offset-2"
2920        @click="open = !open"
2921        :aria-expanded="open ? 'true' : 'false'"
2922        aria-label="Mein&#x20;Konto"
2923        aria-haspopup="true"
2924    >
2925        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="md:h-6 md:w-6" width="28" height="28" aria-hidden="true">
2926  <path stroke-linecap="round" stroke-linejoin="round" d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"/>
2927</svg>
2928    </button>
2929    <nav
2930        class="
2931            absolute right-0 z-20 w-40 py-2 mt-2 -mr-4 px-1 overflow-auto origin-top-right rounded-sm
2932            shadow-lg sm:w-48 lg:mt-3 bg-container-lighter
2933        "
2934        x-cloak
2935        x-show="open"
2936        aria-labelledby="customer-menu"
2937    >
2938                    
2939<a id="customer.header.sign.in.link"
2940   class="block px-4 py-2 lg:px-5 lg:py-2 hover:bg-gray-100"
2941   onclick="hyva.setCookie && hyva.setCookie(
2942       'login_redirect',
2943       window.location.href,
2944       1
2945   )"
2946   href="https://meiner.de/fmv_de/customer/account/index/"
2947   title="Anmelden"
2948>
2949    Anmelden</a>
2950
2951    <a id="customer.header.register.link"
2952       class="block px-4 py-2 lg:px-5 lg:py-2 hover:bg-gray-100"
2953       href="https://meiner.de/fmv_de/customer/account/create/"
2954       title="Ein&#x20;Konto&#x20;erstellen"
2955    >
2956        Ein Konto erstellen    </a>
2957            </nav>
2958</div>
2959
2960            <!--Cart Icon-->
2961                            <button
2962                            id="menu-cart-icon"
2963                class="relative inline-block rounded p-1 hover:bg-primary/10 outline-offset-2"
2964                x-ref="cartButton"
2965                :aria-disabled="isCartEmpty()"
2966                :aria-label="`
2967                    Toggle&#x20;minicart,
2968                    ${isCartEmpty()
2969                        ? 'Warenkorb&#x20;ist&#x20;leer'
2970                        : cart.summary_count > 1
2971                            ? hyva.str('&#x25;1&#x20;Artikel', cart.summary_count)
2972                            : hyva.str('&#x25;1&#x20;item', cart.summary_count)
2973                    }`"
2974                                    @click.prevent="() => {
2975                        $dispatch('toggle-cart', { isOpen: true })
2976                    }"
2977                    @toggle-cart.window="toggleCart($event)"
2978                    :aria-expanded="isCartOpen"
2979                    aria-haspopup="dialog"
2980                            >
2981                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="md:h-6 md:w-6" width="28" height="28" aria-hidden="true">
2982  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"/>
2983</svg>
2984                <span
2985                    x-text="cart.summary_count"
2986                    x-show="!isCartEmpty()"
2987                    x-cloak
2988                    class="absolute -top-1.5 -right-1.5 h-5 px-2 py-1 rounded-full bg-primary text-white
2989                        text-xs font-semibold leading-none text-center uppercase tabular-nums"
2990                    aria-hidden="true"
2991                ></span>
2992                            </button>
2993                    </div>
2994    </div>
2995    <!--Search-->
2995
2996    <div class="absolute z-10 w-full border-t shadow-sm bg-container-lighter border-container-lighter"
2997         id="search-content"
2998         x-cloak x-show="searchOpen"
2999         @click.outside="searchOpen = false"
3000         @keydown.escape="
3001            searchOpen = false;
3002            $refs.searchButton.focus();
3003         "
3004    >
3005        
3006<script>
3007    function initMiniSearchComponent() {
3008        "use strict";
3009
3010        return {
3011            show:false,
3012            formSelector: "#search_mini_form",
3013            url: "https://meiner.de/fmv_de/search/ajax/suggest/",
3014            destinationSelector: "#search_autocomplete",
3015            templates: {"term":{"title":"Suchbegriffe","template":"Hyva_SmileElasticsuite::core\/autocomplete\/term.phtml"},"product":{"title":"Artikel","template":"Hyva_SmileElasticsuite::catalog\/autocomplete\/product.phtml"},"category":{"title":"Kategorien","template":"Hyva_SmileElasticsuite::catalog\/autocomplete\/category.phtml"},"product_attribute":{"title":"Attribute","template":"Hyva_SmileElasticsuite::catalog\/autocomplete\/product_attribute.phtml","titleRenderer":"renderEsAutocompleteTitleAttribute"},"cms_page":{"title":"Cms page","template":"Hyva_SmileElasticsuite::cms-search\/autocomplete\/cms.phtml"}},
3016            priceFormat: {"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},
3017            minSearchLength: 2,
3018            searchResultsByType: {},
3019            currentRequest: null,
3020
3021            /**
3022             * Get search results.
3023             */
3024            getSearchResults: function () {
3025                let value = document.querySelector('#search').value.trim();
3026
3027                if (value.length < parseInt(this.minSearchLength, 10)) {
3028                    this.searchResultsByType = [];
3029
3030                    return false;
3031                }
3032
3033                let url = this.url + '?' + new URLSearchParams({
3034                    q: document.querySelector('#search').value,
3035                    _: Date.now()
3036                }).toString();
3037
3038                if (this.currentRequest !== null) {
3039                    this.currentRequest.abort();
3040                }
3041                this.currentRequest = new AbortController();
3042
3043                fetch(url, {
3044                    method: 'GET',
3045                    signal: this.currentRequest.signal,
3046                }).then((response) => {
3047                    if (response.ok) {
3048                        return response.json();
3049                    }
3050                }).then((data)  => {
3051                    this.show = data.length > 0;
3052
3053                    this.searchResultsByType = data.reduce((acc, result) => {
3054                        if (! acc[result.type]) acc[result.type] = [];
3055                        acc[result.type].push(result);
3056                        return acc;
3057                    }, {});
3058                }).catch((error) => {
3059                    ;
3060                });
3061            },
3062        }
3063    }
3064</script>
3064
3065<div id="elasticsuite-search-container" x-show="true">
3066    <div class="container py-2 mx-auto text-black" x-data="initMiniSearchComponent()" @click.away="show = false">
3067        <form class="form minisearch" id="search_mini_form" action="https://meiner.de/fmv_de/catalogsearch/result/" method="get" role="search">
3068            <div class="relative">
3069                <label class="sr-only" for="search">
3070                    Gesamten&#x20;Shop&#x20;hier&#x20;durchsuchen...                </label>
3071                <input id="search"
3072                       x-on:input.debounce="getSearchResults()"
3073                       x-ref="searchInput"
3074                       type="search"
3075                       class="w-full p-2 text-lg leading-normal transition appearance-none text-grey-800
3076                        focus:outline-none focus:border-transparent lg:text-xl"
3077                       autocapitalize="off" autocomplete="off" autocorrect="off"
3078                       name="q"
3079                       value=""
3080                       placeholder="Gesamten&#x20;Shop&#x20;hier&#x20;durchsuchen..."
3081                       maxlength="128"
3082                       @search-open.window.debounce.10="
3083                            $el.focus();
3084                            $el.select();
3085                       "
3086                />
3087            </div>
3088            <div id="search_autocomplete" class="search-autocomplete relative w-full" x-show="show" style="display:none;">
3089                <div class="absolute bg-white border border-solid border-black z-50 w-full grid grid-cols-1 md:grid-cols-3 lg:grid-cols-4">
3090                    <template x-for="searchResultByType in Object.values(searchResultsByType)">
3091                        <div class="">
3092                            <template x-if="searchResultByType.hasOwnProperty(0) && templates[searchResultByType[0].type].title && templates[searchResultByType[0].type].titleRenderer === undefined">
3093                                <div class="font-bold pt-2 pl-2 text-center" x-text="templates[searchResultByType[0].type].title"></div>
3094                            </template>
3095                            <template x-if="searchResultByType.hasOwnProperty(0) && templates[searchResultByType[0].type].titleRenderer !== undefined">
3096                                <div class="font-bold pt-2 pl-2 text-center" x-text="window[templates[searchResultByType[0].type].titleRenderer](searchResultByType)"></div>
3097                            </template>
3098
3099                            <template x-for="searchResult in searchResultByType">
3100                                <div class="hover:bg-gray-100">
3101                                                                            
3102<template x-if="searchResult.type == 'term'">
3103    <a class="w-full block p-2"
3104       x-bind:href="'https://meiner.de/fmv_de/catalogsearch/result/?q=' + searchResult.title"
3105       :title="searchResult.title">
3106        <span class="text-sm" x-text="searchResult.title"></span>
3107        <span class="text-sm" x-text="'(' + searchResult.num_results + ')'"></span>
3108    </a>
3109</template>
3110                                                                            
3111<template x-if="searchResult.type == 'product'">
3112    <a class="w-full block" :href="searchResult.url" :title="searchResult.title">
3113        <div class="grid grid-cols-4 gap-4 p-3">
3114                        <div class="col-span-4">
3115                <span class="text-sm" x-text="searchResult.title"></span>
3116            </div>
3117        </div>
3118    </a>
3119</template>                                                                            
3120<template x-if="searchResult.type == 'category'">
3121    <a class="w-full block p-2" :href="searchResult.url" :title="searchResult.title">
3122        <span class="text-sm italic block text-gray-500" x-text="searchResult.breadcrumb.join(' > ').concat(' > ')"></span>
3123        <span class="text-sm" x-text="searchResult.title"></span>
3124    </a>
3125</template>
3126                                                                            
3127<template x-if="searchResult.type == 'product_attribute'">
3128    <a class="w-full block p-2" :href="searchResult.url" :title="searchResult.title">
3129        <span class="text-sm" x-text="searchResult.title"></span>
3130        <span class="text-xs uppercase text-gray-500" x-text="searchResult.attribute_label" style="vertical-align: super;"></span>
3131    </a>
3132</template>
3133
3134<script>
3135    function renderEsAutocompleteTitleAttribute(data)
3136    {
3137        data = data.filter(function(item) {
3138            return item.type === 'product_attribute';
3139        }).map(function(item) {
3140            return item['attribute_label']
3141        }).reduce(function(prev, item) {
3142            if (item in prev) {
3143                prev[item]++;
3144            } else {
3145                prev[item] = 1;
3146            }
3147            return prev;
3148        }, {});
3149
3150        data = Object.entries(data).sort(function(item1, item2) {
3151            return item2[1] - item1[1]
3152        }).map(function(item) {return item[0]});
3153
3154        if (data.length > 2) {
3155            data = data.slice(0, 2);
3156            data.push('...');
3157        }
3158
3159        return data.join(', ');
3160    }
3161</script>
3161
3162                                                                            
3163<template x-if="searchResult.type == 'cms_page'">
3164    <a class="w-full block p-2" :href="searchResult.url" :title="searchResult.title">
3165        <span class="text-sm" x-text="searchResult.title"></span>
3166    </a>
3167</template>
3168                                                                    </div>
3169                            </template>
3170                        </div>
3171                    </template>
3172                </div>
3173            </div>
3174                    </form>
3175    </div>
3176</div>
3177    </div>
3178
3179    <!--Cart Drawer-->
3180    
3180<script>
3181    function initCartDrawer() {
3182        return {
3183            open: false,
3184            isLoading: false,
3185            cart: {},
3186            maxItemsToDisplay: 10,
3187            itemsCount: 0,
3188            getData(data) {
3189                if (data.cart) {
3190                    this.cart = data.cart;
3191                    this.itemsCount = data.cart.items && data.cart.items.length || 0;
3192                    this.setCartItems();
3193                }
3194                this.isLoading = false;
3195            },
3196            cartItems: [],
3197            getItemCountTitle() {
3198                return hyva.strf('\u00250\u0020of\u0020\u00251\u0020products\u0020in\u0020cart\u0020displayed', this.maxItemsToDisplay, this.itemsCount)
3199            },
3200            setCartItems() {
3201                this.cartItems = this.cart.items && this.cart.items.sort((a, b) => b.item_id - a.item_id) || [];
3202
3203                if (this.maxItemsToDisplay > 0) {
3204                    this.cartItems = this.cartItems.slice(0, parseInt(this.maxItemsToDisplay, 10));
3205                }
3206            },
3207            deleteItemFromCart(itemId) {
3208                this.isLoading = true;
3209
3210                const itemData = this.cart.items.filter((item) => item['item_id'] === itemId);
3211                const formKey = hyva.getFormKey();
3212                const postUrl = BASE_URL + 'checkout/sidebar/removeItem/';
3213
3214                fetch(postUrl, {
3215                    "headers": {
3216                        "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
3217                    },
3218                    "body": "form_key=" + formKey + "&item_id=" + itemId,
3219                    "method": "POST",
3220                    "mode": "cors",
3221                    "credentials": "include"
3222                }).then(response => {
3223                    if (response.redirected) {
3224                        window.location.href = response.url;
3225                    } else if (response.ok) {
3226                        return response.json();
3227                    } else {
3228                        window.dispatchMessages && window.dispatchMessages([{
3229                            type: 'warning',
3230                            text: 'Could\u0020not\u0020remove\u0020item\u0020from\u0020quote.'
3231                        }]);
3232                        this.isLoading = false;
3233                    }
3234                }).then(result => {
3235                    window.dispatchMessages && window.dispatchMessages([{
3236                        type: result.success ? 'success' : 'error',
3237                        text: result.success
3238                            ? 'Sie\u0020haben\u0020den\u0020Artikel\u0020entfernt.'
3239                            : result.error_message
3240                    }], result.success ? 5000 : 0);
3241
3242                    if (result.success && itemData) {
3243                        window.dispatchEvent(new CustomEvent('cart-item-removed', { detail: itemData }));
3244                    }
3245
3246                    window.dispatchEvent(new CustomEvent('reload-customer-section-data'));
3247                });
3248            },
3249            scrollLock(use = true) {
3250                document.body.style.overflow = use ? "hidden" : "";
3251            },
3252            toggleCartDrawer(event) {
3253                if (event.detail && event.detail.isOpen !== undefined) {
3254                    if (event.detail.isOpen) {
3255                        this.openCartDrawer();
3256                    } else {
3257                        this.open = false;
3258                        this.scrollLock(false);
3259                        this.$refs && this.$refs.cartDialogContent && hyva.releaseFocus(this.$refs.cartDialogContent);
3260                    }
3261                } else {
3262                                        this.openCartDrawer()
3263                }
3264            },
3265            openCartDrawer() {
3266                this.open = true;
3267                this.scrollLock(true);
3268                this.$nextTick(() => {
3269                    this.$refs && this.$refs.cartDialogContent && hyva.trapFocus(this.$refs.cartDialogContent)
3270                })
3271            },
3272            closeCartDrawer() {
3273                this.$dispatch('toggle-cart', { isOpen: false })
3274            },
3275            getSectionDataExtraActions() {
3276                if (!this.cart.extra_actions) {
3277                    return '';
3278                }
3279
3280                const contentNode = document.createElement('div');
3281                contentNode.innerHTML = this.cart.extra_actions;
3282
3283                hyva.activateScripts(contentNode);
3284
3285                return contentNode.innerHTML;
3286            }
3287        }
3288    }
3289</script>
3289
3290<section x-cloak
3291         x-show="cart"
3292         id="cart-drawer"
3293         x-data="initCartDrawer()"
3294         @private-content-loaded.window="getData($event.detail.data)"
3295         @toggle-cart.window="toggleCartDrawer($event)"
3296         @keydown.escape="closeCartDrawer"
3297>
3298    <div role="dialog"
3299         aria-labelledby="cart-drawer-title"
3300         aria-modal="true"
3301         :aria-hidden="!open"
3302         class="fixed inset-y-0 right-0 z-30 flex max-w-full">
3303        <div class="backdrop"
3304             x-show="open"
3305             x-transition:enter="ease-in-out duration-500"
3306             x-transition:enter-start="opacity-0"
3307             x-transition:enter-end="opacity-100"
3308             x-transition:leave="ease-in-out duration-500"
3309             x-transition:leave-start="opacity-100"
3310             x-transition:leave-end="opacity-0"
3311             role="button"
3312             @click="closeCartDrawer"
3313             aria-label="Close&#x20;minicart"></div>
3314        <div class="relative w-screen max-w-md shadow-2xl"
3315             x-show="open"
3316             x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700"
3317             x-transition:enter-start="translate-x-full"
3318             x-transition:enter-end="translate-x-0"
3319             x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700"
3320             x-transition:leave-start="translate-x-0"
3321             x-transition:leave-end="translate-x-full"
3322             x-ref="cartDialogContent"
3323             role="region"
3324             :tabindex="open ? 0 : -1"
3325             aria-label="Mein&#x20;Warenkorb"
3326
3327        >
3328            <div class="flex flex-col h-full max-h-screen bg-white text-black shadow-xl">
3329                
3330                <header class="relative px-4 py-6 sm:px-6">
3331                    <p id="cart-drawer-title" class="text-lg font-medium leading-7 text-gray-900">
3332                        <strong>Mein Warenkorb</strong>
3333                        <span class="items-total text-xs"
3334                              x-show="maxItemsToDisplay && maxItemsToDisplay < itemsCount"
3335                              x-text="getItemCountTitle()">
3336                        </span>
3337                    </p>
3338                </header>
3339
3340                
3341                <template x-if="!itemsCount">
3342                    <div class="relative px-4 py-6 bg-white border-bs sm:px-6 border-container">
3343                        Warenkorb ist leer                    </div>
3344                </template>
3345
3346                <template x-if="itemsCount">
3347                    <div class="relative grid gap-6 sm:gap-8 px-1 py-3 sm:px-3 bg-white border-b border-container overflow-y-auto overscroll-y-contain">
3348                        <template x-for="item in cartItems">
3349                            <div class="flex items-start p-3 space-x-4 transition duration-150 ease-in-out rounded-lg hover:bg-gray-100">
3350                                <template x-if="item.product_has_url && item.is_visible_in_site_visibility">
3351                                    <a :href="item.product_url"
3352                                       class="w-1/4 !ml-0"
3353                                       :aria-label="hyva.strf('Product\u0020\u0022\u00250\u0022', item.product_name)"
3354                                    >
3355                                        <img
3356                                            :src="item.product_image.src"
3357                                            :width="item.product_image.width"
3358                                            :height="item.product_image.height"
3359                                            loading="lazy"
3360                                            :alt="item.product_name"
3361                                        />
3362                                    </a>
3363                                </template>
3364                                <template x-if="!item.product_has_url || !item.is_visible_in_site_visibility">
3365                                    <div class="w-1/4 !ml-0">
3366                                        <img
3367                                            :src="item.product_image.src"
3368                                            :width="item.product_image.width"
3369                                            :height="item.product_image.height"
3370                                            loading="lazy"
3371                                            :alt="item.product_name"
3372                                        />
3373                                    </div>
3374                                </template>
3375                                <div class="w-3/4 space-y-2">
3376                                    <div>
3377                                        <p class="text-xl">
3378                                            <span x-html="item.qty"></span> x <span x-html="item.product_name"></span>
3379                                        </p>
3380                                        <p class="text-sm"><span x-html="item.product_sku"></span></p>
3381                                    </div>
3382                                    <template x-for="option in item.options">
3383                                        <div class="pt-2">
3384                                            <p class="font-semibold" x-text="option.label + ':'"></p>
3385                                            <p class="text-secondary" x-html="option.value"></p>
3386                                        </div>
3387                                    </template>
3388                                    <p><span x-html="item.product_price"></span></p>
3389                                    <div class="pt-4">
3390                                        <a :href="item.configure_url"
3391                                           x-show="item.product_type !== 'grouped' && item.is_visible_in_site_visibility"
3392                                           class="inline-flex p-2 mr-2 btn btn-primary"
3393                                           :aria-label="hyva.strf('Edit\u0020product\u0020\u0022\u00250\u0022', item.product_name)"
3394                                        >
3395                                            <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true">
3396  <path stroke-linecap="round" stroke-linejoin="round" d="M15.232 5.232l3.536 3.536m-2.036-5.036a2.5 2.5 0 113.536 3.536L6.5 21.036H3v-3.572L16.732 3.732z"/>
3397</svg>
3398                                        </a>
3399                                        <button type="button"
3400                                                class="inline-flex p-2 btn btn-primary"
3401                                                @click="deleteItemFromCart(item.item_id)"
3402                                                :aria-label="hyva.strf('Remove\u0020product\u0020\u0022\u00250\u0022\u0020from\u0020cart', item.product_name)"
3403                                        >
3404                                            <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="20" height="20" aria-hidden="true">
3405  <path stroke-linecap="round" stroke-linejoin="round" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"/>
3406</svg>
3407                                        </button>
3408                                    </div>
3409
3410                                </div>
3411                            </div>
3412                        </template>
3413                    </div>
3414                </template>
3415
3416                <template x-if="itemsCount">
3417                    <div>
3418                        
3419                        <div class="relative grid gap-6 sm:gap-8 py-3 px-1 sm:px-3 bg-white">
3420                            <div class="w-full p-3 space-x-4 transition duration-150 ease-in-out rounded-lg hover:bg-gray-100">
3421                                <p>Zwischensumme: <span x-html="cart.subtotal"></span></p>
3422                            </div>
3423                            <div class="w-full p-3 space-x-4 transition duration-150 ease-in-out rounded-lg hover:bg-gray-100">
3424                                <a @click.prevent.stop="closeCartDrawer; $dispatch('toggle-authentication',
3425                                    {url: 'https://meiner.de/fmv_de/checkout/'});"
3426                                   href="https://meiner.de/fmv_de/checkout/"
3427                                   class="inline-flex btn btn-primary"
3428                                >
3429                                    Kasse                                </a>
3430                                <span>oder</span>
3431                                <a href="https://meiner.de/fmv_de/checkout/cart/"
3432                                   class="underline"
3433                                >
3434                                    Warenkorb bearbeiten                                </a>
3435                            </div>
3436                            <div x-html="getSectionDataExtraActions()"></div>
3437                                                    </div>
3438                    </div>
3439                </template>
3440
3441                            </div>
3442
3443            <button
3444                type="button"
3445                @click="closeCartDrawer"
3446                aria-label="Close&#x20;minicart"
3447                class="absolute top-0 right-2 p-4 mt-2 text-gray-300 transition-colors hover:text-black"
3448            >
3449                <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true">
3450  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
3451</svg>
3452            </button>
3453        </div>
3454        <div
3455    class="z-50 fixed inset-0 grid place-items-center bg-white/70 text-primary"
3456    x-cloak
3457    x-show="isLoading"
3458    x-transition.opacity.duration.200ms
3459>
3460    <div class="flex gap-10 items-center p-4">
3461        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 57 57" width="57" height="57" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">
3462    <style>
3463        @keyframes spinner-ball-triangle1 {
3464            0% { transform: translate(0%, 0%); }
3465            33% { transform: translate(38%, -79%); }
3466            66% { transform: translate(77%, 0%); }
3467            100% { transform: translate(0%, 0%); }
3468        }
3469
3470        @keyframes spinner-ball-triangle2 {
3471            0% { transform: translate(0%, 0%); }
3472            33% { transform: translate(38%, 79%); }
3473            66% { transform: translate(-38%, 79%); }
3474            100% { transform: translate(0%, 0%); }
3475        }
3476
3477        @keyframes spinner-ball-triangle3 {
3478            0% { transform: translate(0%, 0%); }
3479            33% { transform: translate(-77%, 0%); }
3480            66% { transform: translate(-38%, -79%); }
3481            100% { transform: translate(0%, 0%); }
3482        }
3483    </style>
3484    <circle cx="5" cy="50" r="5" style="animation: spinner-ball-triangle1 2.2s linear infinite"/>
3485    <circle cx="27" cy="5" r="5" style="animation: spinner-ball-triangle2 2.2s linear infinite"/>
3486    <circle cx="49" cy="50" r="5" style="animation: spinner-ball-triangle3 2.2s linear infinite"/>
3487</svg>
3488        <span class="text-xl select-none">
3489            Wird geladen …        </span>
3490    </div>
3491</div>
3492    </div>
3493
3494</section>
3495
3496    <!--Authentication Pop-Up-->
3497    
3497<script>
3498    function initAuthentication() {
3499        return {
3500            open: false,
3501            close() {
3502                this.open = false;
3503            },
3504            forceAuthentication: false,
3505            checkoutUrl: 'https://meiner.de/fmv_de/checkout/index/',
3506            errors: 0,
3507            hasCaptchaToken: 0,
3508            displayErrorMessage: false,
3509            errorMessages: [],
3510            setErrorMessages(message) {
3511                this.errorMessages = [message];
3512                this.displayErrorMessage = true;
3513            },
3514            submitForm() {
3515                // Do not rename $form, the variable is expected to be declared in the recaptcha output
3516                const $form = document.querySelector('#login-form');
3517                
3518                if (this.errors === 0) {
3519                    this.dispatchLoginRequest($form);
3520                }
3521            },
3522            onPrivateContentLoaded() {
3523                const data = this.$event.detail.data;
3524                const isLoggedIn = data.customer && data.customer.firstname;
3525                if (data.cart && !isLoggedIn) {
3526                    this.forceAuthentication = !data.cart.isGuestCheckoutAllowed;
3527                }
3528            },
3529            redirectIfAuthenticated() {
3530                const event = this.$event;
3531                this.open = this.forceAuthentication;
3532
3533                if (event.detail && event.detail.url) {
3534                    this.checkoutUrl = event.detail.url;
3535                }
3536                if (!this.forceAuthentication) {
3537                    window.location.href = this.checkoutUrl;
3538                }
3539            },
3540            resetErrors() {
3541                this.errors = 0;
3542            },
3543            dispatchLoginRequest(form) {
3544                this.isLoading = true;
3545                const username = this.$refs['customer-email'].value;
3546                const password = this.$refs['customer-password'].value;
3547                const formKey = hyva.getFormKey();
3548                const bodyFields = {
3549                    'username': username,
3550                    'password': password,
3551                    'formKey': formKey
3552                };
3553                                const fieldName = 'g\u002Drecaptcha\u002Dresponse';
3554                const recaptchaField = fieldName && form[fieldName];
3555                if (recaptchaField) {
3556                    bodyFields[fieldName] = recaptchaField.value;
3557                }
3558                fetch('https://meiner.de/fmv_de/customer/ajax/login/', {
3559                        method: 'POST',
3560                        headers: {
3561                            'Content-Type': 'application/json',
3562                            'X-Requested-With': 'XMLHttpRequest'
3563                        },
3564                        body: JSON.stringify(bodyFields)
3565                    }
3566                ).then(response => {
3567                        return response.json()
3568                    }
3569                ).then(data => {
3570                    this.isLoading = false;
3571                    if (data.errors) {
3572                        this.setErrorMessages(data.message);
3573                        this.errors = 1;
3574                        this.hasCaptchaToken = 0;
3575                    } else {
3576                        window.location.href = this.checkoutUrl;
3577                    }
3578                });
3579            }
3580        }
3581    }
3582
3583    window.addEventListener('alpine:init', () => Alpine.data('initAuthentication', initAuthentication), {once: true})
3584</script>
3584
3585<section id="authentication-popup"
3586         x-data="initAuthentication"
3587         @private-content-loaded.window="onPrivateContentLoaded"
3588         @toggle-authentication.window="redirectIfAuthenticated"
3589         @keydown.window.escape="close"
3590>
3591    <div
3592        class="backdrop"
3593        aria-hidden="true"
3594        x-cloak
3595        x-show="open"
3596        x-transition:enter="ease-in-out duration-500"
3597        x-transition:enter-start="opacity-0"
3598        x-transition:enter-end="opacity-100"
3599        x-transition:leave="ease-in-out duration-500"
3600        x-transition:leave-start="opacity-100"
3601        x-transition:leave-end="opacity-0"
3602        @click="close"
3603    ></div>
3604    <div role="dialog"
3605         aria-modal="true"
3606         @click.outside="close"
3607         class="inset-y-0 right-0 z-30 flex max-w-full fixed"
3608         x-cloak
3609         x-show="open"
3610    >
3611        <div class="relative w-screen max-w-md pt-16 bg-container-lighter"
3612             x-show="open"
3613             x-cloak
3614             x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700"
3615             x-transition:enter-start="translate-x-full"
3616             x-transition:enter-end="translate-x-0"
3617             x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700"
3618             x-transition:leave-start="translate-x-0"
3619             x-transition:leave-end="translate-x-full"
3620        >
3621            <div
3622                x-show="open"
3623                x-cloak
3624                x-transition:enter="ease-in-out duration-500"
3625                x-transition:enter-start="opacity-0"
3626                x-transition:enter-end="opacity-100"
3627                x-transition:leave="ease-in-out duration-500"
3628                x-transition:leave-start="opacity-100"
3629                x-transition:leave-end="opacity-0" class="absolute top-0 right-2 flex p-2 mt-2">
3630                <button
3631                    type="button"
3632                    @click="close"
3633                    aria-label="Panel&#x20;schlie&#xDF;en"
3634                    class="p-2 text-gray-300 transition duration-150 ease-in-out hover:text-black"
3635                >
3636                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true">
3637  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
3638</svg>
3639                </button>
3640            </div>
3641            <template x-if="open">
3642                <div class="flex flex-col h-full py-6 space-y-6 bg-white shadow-xl overflow-y-auto">
3643                    <div class="mx-4">
3644                        <div class="message error mb-0" x-show="errors" x-cloak>
3645                            <template x-for="(message, index) in errorMessages" :key="index">
3646                                <div>
3647                                    <template x-if="message">
3648                                        <span x-html="message"></span>
3649                                    </template>
3650                                </div>
3651                            </template>
3652                        </div>
3653                    </div>
3654                    <div class="block-customer-login bg-container border border-container mx-4 p-4 shadow-sm">
3655                        <p id="authenticate-customer-login" class="text-lg leading-7 text-gray-900">
3656                            <strong class="font-medium">Mit Ihrem Konto bestellen</strong>
3657                        </p>
3658
3659                        <form class="form form-login"
3660                              method="post"
3661                              @submit.prevent="submitForm"
3662                              id="login-form"
3663                        >
3664                                                        <div class="fieldset login">
3665                                <div class="field email required">
3666                                    <label class="label" for="form-login-username" form="login-form" >
3667                                        <span>E-Mailadresse</span>
3668                                    </label>
3669                                    <div class="control">
3670                                        <input name="username"
3671                                               id="form-login-username"
3672                                               x-ref="customer-email"
3673                                               @change="resetErrors"
3674                                               type="email"
3675                                               required
3676                                               autocomplete="off"
3677                                               class="form-input"
3678                                        >
3679                                    </div>
3680                                </div>
3681                                <div class="field password required">
3682                                    <label for="form-login-password" class="label" form="login-form">
3683                                        <span>Passwort</span>
3684                                    </label>
3685                                    <div class="control">
3686                                        <input name="password"
3687                                               id="form-login-password"
3688                                               type="password"
3689                                               class="form-input"
3690                                               required
3691                                               x-ref="customer-password"
3692                                               autocomplete="off"
3693                                               @change="resetErrors"
3694                                        >
3695                                    </div>
3696                                </div>
3697
3698                                <input name="context" type="hidden" value="checkout" />
3699                                <div class="actions-toolbar pt-6 pb-2">
3700                                    <button type="submit"                                            class="inline-flex btn btn-primary disabled:opacity-75"
3701                                    >
3702                                        Anmelden                                    </button>
3703                                    <a href="https://meiner.de/fmv_de/customer/account/forgotpassword/"
3704                                    >
3705                                        Passwort vergessen?                                    </a>
3706                                </div>
3707
3708                            </div>
3709                        </form>
3710                    </div>
3711                    <div class="mx-4">
3712                                            </div>
3713                    <div class="block-new-customer bg-container border border-container mx-4 p-4 shadow-sm">
3714                        <p id="authenticate-new-customer" class="text-lg mb-2 leading-7 text-gray-900">
3715                            <strong class="font-medium">Als neuer Kunde bestellen</strong>
3716                        </p>
3717
3718                        <div class="block-content">
3719                            <p class="mb-1">
3720                                Das Erstellen eines Kontos hat viele Vorteile:                            </p>
3721                            <ul class="list-disc pl-5">
3722                                <li> Bestell- und Versandstatus ansehen</li>
3723                                <li> Bestellverlauf verfolgen</li>
3724                                <li> Schneller bestellen</li>
3725                            </ul>
3726                            <div class="actions-toolbar mt-6 mb-2">
3727                                <a href="https://meiner.de/fmv_de/customer/account/create/"
3728                                   class="inline-flex btn btn-primary">
3729                                    Ein Konto erstellen                                </a>
3730                            </div>
3731                        </div>
3732                    </div>
3733                </div>
3734            </template>
3735        </div>
3736    </div>
3737</section>
3738</div>
3739
3740</header><main id="maincontent" class="page-main-full-width"><div id="contentarea" tabindex="-1"></div>
3741<div class="page messages">
3741<script>
3742        function initMessages() {
3743        "use strict";
3744        return {
3745            messages: window.mageMessages || [],
3746            isEmpty() {
3747                return this.messages.reduce(
3748                    function (isEmpty, message) {
3749                        return isEmpty && message === undefined
3750                    }, true
3751                )
3752            },
3753            hasMessages() {
3754                return !this.isEmpty();
3755            },
3756            hasMessage() {
3757                return !!this.message;
3758            },
3759            removeMessage() {
3760                this.messages[this.index] = undefined;
3761            },
3762            addMessages(messages, hideAfter) {
3763                messages.map((message) => {
3764                    this.messages = this.messages.concat(message);
3765                    if (hideAfter === undefined && message.type === 'success' && window.defaultSuccessMessageTimeout) {
3766                        hideAfter = window.defaultSuccessMessageTimeout;
3767                    }
3768                    if (hideAfter) {
3769                        this.setHideTimeOut(this.messages.length -1, hideAfter);
3770                    }
3771                });
3772            },
3773            setHideTimeOut(messageIndex, hideAfter) {
3774                setTimeout((messageIndex) => {
3775                    this.removeMessage(messageIndex);
3776                }, hideAfter, messageIndex);
3777            },
3778            eventListeners: {
3779                ['@messages-loaded.window'](event) {
3780                    this.addMessages(event.detail.messages, event.detail.hideAfter)
3781                },
3782                ['@private-content-loaded.window'](event) {
3783                    const data = event.detail.data;
3784                    if (
3785                        data.messages &&
3786                        data.messages.messages &&
3787                        data.messages.messages.length
3788                    ) {
3789                        this.addMessages(data.messages.messages);
3790                    }
3791                },
3792                ['@clear-messages.window']() {
3793                    this.messages = [];
3794                }
3795            },
3796            getMessageUiId() {
3797                return 'message-' + this.message.type;
3798            }
3799        }
3800    }
3801
3802    window.addEventListener('alpine:init', () => Alpine.data('initMessages', initMessages), {once: true})
3803</script>
3803
3804<section id="messages"
3805         x-data="initMessages"
3806         x-bind="eventListeners"
3807         aria-live="assertive"
3808         role="alert"
3809>
3810    <template x-if="hasMessages">
3811        <div class="w-full">
3812            <div class="messages container mx-auto py-3">
3813                <template x-for="(message, index) in messages" :key="index">
3814                    <div>
3815                        <template x-if="hasMessage">
3816                            <div class="message"
3817                                 :class="message.type"
3818                                 :ui-id="getMessageUiId"
3819                            >
3820                                <span x-html="message.text"></span>
3821                                <button
3822                                    type="button"
3823                                    class="text-gray-600 hover:text-black"
3824                                    aria-label="Close message"
3825                                    @click.prevent="removeMessage"
3826                                >
3827                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="stroke-current" width="18" height="18" aria-hidden="true">
3828  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"/>
3829</svg>
3830                                </button>
3831                            </div>
3832                        </template>
3833                    </div>
3834                </template>
3835            </div>
3836        </div>
3837    </template>
3838</section>
3839</div><div class="columns"><div class="column main">
3840<script>
3841    'use strict';
3842
3843    function initAwBlogAjax() {
3844        const settings = {"url":"https:\/\/meiner.de\/fmv_de\/aw_blog\/block\/render\/"};
3845
3846        return {
3847            url: settings.url || '/',
3848            dataPattern: 'awBlogBlockName',
3849            placeholders: document.querySelectorAll('[data-aw-blog-block-name]'),
3850
3851            init() {
3852                if (this.placeholders && this.placeholders.length) {
3853                    this.ajax();
3854                }
3855            },
3856
3857            ajax() {
3858                const self = this,
3859                    blocks = [];
3860
3861                this.placeholders.forEach(function(elem) {
3862                    blocks.push(elem.dataset[self.dataPattern]);
3863                });
3864
3865                fetch(this.url + '?blocks=' + JSON.stringify(blocks), {
3866                    headers: {
3867                        'Content-Type': 'application/json',
3868                        'X-Requested-With': 'XMLHttpRequest'
3869                    }
3870                }).then((response) => {
3871                    return response.json();
3872                }).then((data) => {
3873                    self.placeholders.forEach(function(elem) {
3874                        const placeholderName = elem.dataset[self.dataPattern];
3875
3876                        if (data.hasOwnProperty(placeholderName)) {
3877                            elem.insertAdjacentHTML('beforebegin', data[placeholderName]);
3878                            elem.remove();
3879                        }
3880                    });
3881                }).catch((error) => {
3882                    console.error(error);
3883                })
3884            }
3885        }
3886    }
3887
3888    window.addEventListener('alpine:init', () => {
3889        Alpine.data('initAwBlogAjax', initAwBlogAjax);
3890    }, {
3891        once: true
3892    });
3893</script>
3893
3894
3895<div x-data='initAwBlogAjax'></div>
3896<script>try {
3897smileTracker.addPageVar('cms.identifier', 'home');
3898smileTracker.addPageVar('cms.title', 'Felix Meiner Verlag - meiner.de');
3899} catch (err) { ; }</script>
3899<style>.cmsp2-block {
3900display: block
3901}
3902.cmsp2-p-5 {
3903padding: 1.25rem
3904}</style>
3905<style>#html-body [data-pb-style=BE6DLBB],#html-body [data-pb-style=HBNQ69W],#html-body [data-pb-style=IJNNBS8],#html-body [data-pb-style=IMJKJSS],#html-body [data-pb-style=K8EX2WY],#html-body [data-pb-style=LQNYKDT],#html-body [data-pb-style=MTOUR12],#html-body [data-pb-style=QXPL12C],#html-body [data-pb-style=VJ83SAS],#html-body [data-pb-style=XX0C0CC]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=EF0RDMC]{display:none}#html-body [data-pb-style=FUIYFW4],#html-body [data-pb-style=NIHBCNX]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=IRXUS1O]{min-height:300px}#html-body [data-pb-style=CBMJKYY]{width:100%;border-width:1px;border-color:#cecece;display:inline-block}#html-body [data-pb-style=DQURHCH]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=HHRXWXR]{border-style:none;border-color:#f0f0f0}#html-body [data-pb-style=B50WSH3],#html-body [data-pb-style=EF95BS6],#html-body [data-pb-style=HHRXWXR],#html-body [data-pb-style=QHTY39W],#html-body [data-pb-style=UD26YMC],#html-body [data-pb-style=YPY77HD]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=OEO9IIG]{background-position:left top;background-size:cover;background-repeat:no-repeat;min-height:300px}#html-body [data-pb-style=TJSIVC1]{min-height:300px;background-color:transparent}#html-body [data-pb-style=J39MA6K]{background-position:left top;background-size:cover;background-repeat:no-repeat;min-height:300px}#html-body [data-pb-style=R10REW0]{min-height:300px;background-color:transparent}#html-body [data-pb-style=HDXORVE]{background-position:left top;background-size:cover;background-repeat:no-repeat;min-height:300px}#html-body [data-pb-style=YFX3OXY]{min-height:300px;background-color:transparent}#html-body [data-pb-style=PRNSJRJ]{background-position:left top;background-size:cover;background-repeat:no-repeat;min-height:300px}#html-body [data-pb-style=Q7IN5DX]{min-height:300px;background-color:transparent}#html-body [data-pb-style=C8QVPX5]{background-position:left top;background-size:cover;background-repeat:no-repeat;min-height:300px}#html-body [data-pb-style=JGXAXL8]{min-height:300px;background-color:transparent}#html-body [data-pb-style=BBAPORQ],#html-body [data-pb-style=DQV92YO],#html-body [data-pb-style=ILN4LAN],#html-body [data-pb-style=OY6Q222],#html-body [data-pb-style=PD1C0BY],#html-body [data-pb-style=SUCVL14],#html-body [data-pb-style=YPEFH56]{display:flex;width:100%}#html-body [data-pb-style=HJDB5GU]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:16.6667%;align-self:stretch}#html-body [data-pb-style=GSST2UT]{width:83.3333%}#html-body [data-pb-style=A3QU07G],#html-body [data-pb-style=CB11K18],#html-body [data-pb-style=GSST2UT]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=A3QU07G]{width:41.6667%;margin-right:0}#html-body [data-pb-style=CB11K18]{width:8.33333%}#html-body [data-pb-style=A0EEFDH],#html-body [data-pb-style=CT5JN59],#html-body [data-pb-style=ES6KTQP],#html-body [data-pb-style=EYKDCL7],#html-body [data-pb-style=W5FBXVQ],#html-body [data-pb-style=XEVNLJ0]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:50%;align-self:stretch}#html-body [data-pb-style=A0EEFDH],#html-body [data-pb-style=CT5JN59],#html-body [data-pb-style=EYKDCL7],#html-body [data-pb-style=W5FBXVQ],#html-body [data-pb-style=XEVNLJ0]{width:41.6667%}#html-body [data-pb-style=A0EEFDH],#html-body [data-pb-style=CT5JN59],#html-body [data-pb-style=EYKDCL7],#html-body [data-pb-style=W5FBXVQ]{width:8.33333%}#html-body [data-pb-style=A0EEFDH],#html-body [data-pb-style=CT5JN59],#html-body [data-pb-style=W5FBXVQ]{width:50%}#html-body [data-pb-style=A0EEFDH],#html-body [data-pb-style=CT5JN59]{width:100%}#html-body [data-pb-style=ECM6YD3],#html-body [data-pb-style=GLCHRV4],#html-body [data-pb-style=HNWY1JL],#html-body [data-pb-style=MXLJ7AI],#html-body [data-pb-style=PK9D1F2],#html-body [data-pb-style=RAUXYGH]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:41.6667%;align-self:stretch}#html-body [data-pb-style=ECM6YD3],#html-body [data-pb-style=GLCHRV4],#html-body [data-pb-style=HNWY1JL],#html-body [data-pb-style=MXLJ7AI],#html-body [data-pb-style=RAUXYGH]{width:8.33333%}#html-body [data-pb-style=GLCHRV4],#html-body [data-pb-style=HNWY1JL],#html-body [data-pb-style=MXLJ7AI],#html-body [data-pb-style=RAUXYGH]{width:50%}#html-body [data-pb-style=GLCHRV4],#html-body [data-pb-style=HNWY1JL],#html-body [data-pb-style=MXLJ7AI]{width:41.6667%}#html-body [data-pb-style=HNWY1JL],#html-body [data-pb-style=MXLJ7AI]{width:8.33333%}#html-body [data-pb-style=HNWY1JL]{width:50%}#html-body [data-pb-style=J9QYD4J],#html-body [data-pb-style=KBK5W12],#html-body [data-pb-style=U65D85F],#html-body [data-pb-style=VV1BAQX],#html-body [data-pb-style=YLG2MX7]{text-align:center;border-style:solid}</style><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-element="inner" data-pb-style="VJ83SAS"><div class="pagebuilder-slider pagebuilder-slider-home" data-content-type="slider" data-appearance="default" data-autoplay="true" data-autoplay-speed="5000" data-fade="false" data-infinite-loop="true" data-show-arrows="true" data-show-dots="true" data-sli
3905des-to-show="1" data-slides-to-scroll="1" data-element="main" data-pb-style="IRXUS1O"><div data-content-type="slide" data-slide-name="Josef Fr&uuml;chtl - Von s&uuml;&szlig;en L&uuml;gen und bilderlosen Bildern" data-appearance="poster" data-show-button="never" data-show-overlay="never" data-element="main"><a href="/von-sa-a-en-la-gen-und-bilderlosen-bildern-17982" target="" data-link-type="default" title="" data-element="link"><div class="pagebuilder-slide-wrapper background-image-6ab95c8257365" data-background-images='{\"desktop_image\":\"https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Slider_Fr_chtl_1488x350px.jpg\",\"mobile_image\":\"https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Slider_Fr_chtl_768x768px.jpg\"}' data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="false" data-element="wrapper" data-pb-style="OEO9IIG"><div class="pagebuilder-overlay pagebuilder-poster-overlay" data-overlay-color="" aria-label="" title="" data-element="overlay" data-pb-style="TJSIVC1"><div class="pagebuilder-poster-content"><div data-element="content"></div></div></div></div><style type="text/css">.background-image-6ab95c8257365 {background-image: url(https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Slider_Fr_chtl_1488x350px.jpg);}@media only screen and (max-width: 768px) and (min-width: 640px) {.background-image-6ab95c8257365 {background-image: url(https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Slider_Fr_chtl_768x768px.jpg);}}@media only screen and (max-width: 640px) {.background-image-6ab95c8257365 {background-image: url(https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Slider_Fr_chtl_768x768px.jpg);}}</style></a></div><div data-content-type="slide" data-slide-name="Blaue Reihe" data-appearance="poster" data-show-button="never" data-show-overlay="never" data-element="main"><a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe" target="" data-link-type="category" title="Die Blaue Reihe in neuem Gewand" data-element="link"><div class="pagebuilder-slide-wrapper background-image-6ab95c825c9ba" data-background-images='{\"desktop_image\":\"https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Slider_Blaue_Reihe_1488x350px.jpg\",\"mobile_image\":\"https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Slider_Blaue_Reihe_768x768px.jpg\"}' data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="false" data-element="wrapper" data-pb-style="J39MA6K"><div class="pagebuilder-overlay pagebuilder-poster-overlay" data-overlay-color="" aria-label="Die Blaue Reihe in neuem Gewand" title="Die Blaue Reihe in neuem Gewand" data-element="overlay" data-pb-style="R10REW0"><div class="pagebuilder-poster-content"><div data-element="content"></div></div></div></div><style type="text/css">.background-image-6ab95c825c9ba {background-image: url(https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Slider_Blaue_Reihe_1488x350px.jpg);}@media only screen and (max-width: 768px) and (min-width: 640px) {.background-image-6ab95c825c9ba {background-image: url(https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Slider_Blaue_Reihe_768x768px.jpg);}}@media only screen and (max-width: 640px) {.background-image-6ab95c825c9ba {background-image: url(https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Slider_Blaue_Reihe_768x768px.jpg);}}</style></a></div><div data-content-type="slide" data-slide-name="Schweppenh&auml;user" data-appearance="poster" data-show-button="never" data-show-overlay="never" data-element="main"><a href="https://meiner.de/fmv_de/das-konstruktivistische-a-interesse-am-ka-rpera-19559" target="" data-link-type="product" title="" data-element="link"><div class="pagebuilder-slide-wrapper background-image-6ab95c825c9e8" data-background-images='{\"desktop_image\":\"https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Banner_Schweppenh_user_1488x350px.jpg\",\"mobile_image\":\"https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Banner_Schweppenh_user_768x768px.jpg\"}' data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="false" data-element="wrapper" data-pb-style="HDXORVE"><div class="pagebuilder-overlay pagebuilder-poster-overlay" data-overlay-color="" aria-label="Schweppenh&auml;user" title="" data-element="overlay" data-pb-style="YFX3OXY"><div class="pagebuilder-poster-content"><div data-element="content"></div></div></div></div><style type="text/css">.background-image-6ab95c825c9e8 {background-image: url(https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Banner_Schweppenh_user_1488x350px.jpg);}@media only screen and (max-width: 768px) and (min-width: 640px) {.background-image-6ab95c825c9e8 {background-image: url(https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Banner_Schweppenh_user_768x768px.jpg);}}@media only screen and (max-width: 640px) {.background-image-6ab95c825c9e8 {background-image: url(https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Banner_Schweppenh_user_768x768px.jpg);}}</style></a></div>
3905<div data-content-type="slide" data-slide-name="Butterfield" data-appearance="poster" data-show-button="never" data-show-overlay="never" data-element="main"><a href="https://meiner.de/fmv_de/die-whig-interpretation-der-geschichte-21391" target="" data-link-type="product" title="" data-element="link"><div class="pagebuilder-slide-wrapper background-image-6ab95c825ca0a" data-background-images='{\"desktop_image\":\"https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Banner_Butterfield_1488x350px.jpg\",\"mobile_image\":\"https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Banner_Butterfield_768x768px.jpg\"}' data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="false" data-element="wrapper" data-pb-style="PRNSJRJ"><div class="pagebuilder-overlay pagebuilder-poster-overlay" data-overlay-color="" aria-label="Butterfield" title="" data-element="overlay" data-pb-style="Q7IN5DX"><div class="pagebuilder-poster-content"><div data-element="content"></div></div></div></div><style type="text/css">.background-image-6ab95c825ca0a {background-image: url(https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Banner_Butterfield_1488x350px.jpg);}@media only screen and (max-width: 768px) and (min-width: 640px) {.background-image-6ab95c825ca0a {background-image: url(https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Banner_Butterfield_768x768px.jpg);}}@media only screen and (max-width: 640px) {.background-image-6ab95c825ca0a {background-image: url(https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Banner_Butterfield_768x768px.jpg);}}</style></a></div><div data-content-type="slide" data-slide-name="Radikalit&auml;t" data-appearance="poster" data-show-button="never" data-show-overlay="never" data-element="main"><a href="https://meiner.de/fmv_de/schockierende-ungleichheit-17423" target="" data-link-type="product" title="" data-element="link"><div class="pagebuilder-slide-wrapper background-image-6ab95c825ca2b" data-background-images='{\"desktop_image\":\"https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Banner_Detel_A_1488x350px.jpg\",\"mobile_image\":\"https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Banner_Detel_A_768x768px.jpg\"}' data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="false" data-element="wrapper" data-pb-style="C8QVPX5"><div class="pagebuilder-overlay pagebuilder-poster-overlay" data-overlay-color="" aria-label="Radikalit&auml;t" title="" data-element="overlay" data-pb-style="JGXAXL8"><div class="pagebuilder-poster-content"><div data-element="content"></div></div></div></div><style type="text/css">.background-image-6ab95c825ca2b {background-image: url(https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Banner_Detel_A_1488x350px.jpg);}@media only screen and (max-width: 768px) and (min-width: 640px) {.background-image-6ab95c825ca2b {background-image: url(https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Banner_Detel_A_768x768px.jpg);}}@media only screen and (max-width: 640px) {.background-image-6ab95c825ca2b {background-image: url(https://meiner.de/media/wysiwyg/FMV/Banner/FMV_Banner_Detel_A_768x768px.jpg);}}</style></a></div></div></div></div><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="" data-element="inner" data-pb-style="K8EX2WY"><div data-content-type="divider" data-appearance="default" data-element="main"><hr data-element="line" data-pb-style="CBMJKYY"></div></div></div><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="false" data-element="inner" data-pb-style="MTOUR12"><div data-content-type="html" data-appearance="default" data-element="main" data-decoded="true">
3906        <div data-aw-blog-block-name="eyJuYW1lIjoiYXdfYmxvZ193aWRnZXRfcmVjZW50X3Bvc3Rfd2lkZ2V0XFxyZWNlbnRwb3N0XzAiLCJudW1iZXJfdG9fZGlzcGxheSI6IjQiLCJhcmVfaW1hZ2VzX2Rpc2FibGVkIjoiMCIsImNhdGVnb3J5X2lkcyI6bnVsbCwidGl0bGUiOiJOZXVpZ2tlaXRlbiIsInRlbXBsYXRlIjoid2lkZ2V0XC9yZWNlbnRfcG9zdFwvZGVmYXVsdC5waHRtbCJ9"></div>
3907
3908</div></div></div><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="" data-element="inner" data-pb-style="LQNYKDT"><h3 data-content-type="heading" data-appearance="default" data-element="main">
3908Zuletzt erschienen</h3><div data-content-type="products" data-appearance="carousel" data-autoplay="false" data-autoplay-speed="4000" data-infinite-loop="false" data-show-arrows="false" data-show-dots="true" data-carousel-mode="default" data-center-padding="90px" data-element="main">        <div class="glider-contain product-items widget-product-carousel">
3909        <div data-role="glider-content" class="mx-auto grid gap-4 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 relative overflow-y-hidden overflow-x-scroll">
3910                            
3911    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/47165/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk16064">
3912        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="47165">
3913                                    <a href="https://meiner.de/fmv_de/traktat-a-ber-die-drei-betra-ger-16064" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
3914            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-47165.window="$el.src = $event.detail" alt="Traktat &uuml;ber die drei Betr&uuml;ger" title="Traktat &uuml;ber die drei Betr&uuml;ger" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787344192_3.jpg" :style="{
3915                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
3916                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
3917            }">
3918                    </a>
3919        <div class="product-info flex flex-col flex-grow ">
3920                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
3921                                    <div class="mb-2 text-sm text-gray-500 font-medium">
3922                                                                                    <a href="https://meiner.de/fmv_de/person/Anonymus-4636/" class="mb-2">
3923                                    Anonymus                                                                    </a>
3924                                                                                                                                    </div>
3925                                <a class="product-item-link" href="https://meiner.de/fmv_de/traktat-a-ber-die-drei-betra-ger-16064">
3926                    Traktat &uuml;ber die drei Betr&uuml;ger                </a>
3927                            </div>
3928
3929            <div x-data="initEditionText_47165()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
3930                <!-- Marketing short text -->
3931                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
3932                </div>
3933            </div>
3934
3935                            <div class="py-1 grid  mb-4 ">
3936                    
3937                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":47165,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":47165,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"19306":"1","47092":"1"},"childProductsAlertStatus":{"19306":"0","47092":"0"},"indexMapping":{"163:15":19306,"163:8":47092},"availabilityMessages":{"19306":"Lieferbar innerhalb von 3-5 Tagen","47092":"Download sofort  verf\u00fcgbar"},"openAccess":{"47165":{"status":0},"19306":{"status":0},"47092":{"status":0}}},"availabilityMessages":{"19306":"Lieferbar innerhalb von 3-5 Tagen","47092":"Download sofort  verf\u00fcgbar"},"openAccess":{"47165":{"status":0},"19306":{"status":0},"47092":{"status":0}}}'>
3938        <template x-if="containerVisible">
3939                            <!-- Popup Trigger -->
3940                <div>
3941                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
3942                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
3943                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
3944  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
3945<title>bell</title></svg>
3946</span>
3947                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
3948
3949                    <!-- Popup Modal -->
3950                    <template x-if="showModal">
3951                        <template x-teleport=".page-wrapper">
3952                            <div x-cloak class="fixed inset-0 flex items-center justify-center
3953                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
3954                                <div class="relative bg-white rounded-lg shadow-xl
3955                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
3956                                    <div class="p-6">
3957                                        <!-- Subscription Form for Popup -->
3958                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
3959                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
3960                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
3961                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
3962
3963                                            <div class="flex flex-col gap-3">
3964                                                <div class="flex-grow grow">
3965                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
3966                                                        shadow-xs focus:outline-none focus:outline-hidden
3967                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
3968                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
3969                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
3970                                                </div>
3971                                                <input type="hidden" name="product_id" :value="currentProductId">
3972                                                <input type="hidden" name="type" value="email">
3973
3974                                                
3975                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
3976
3977                                                <div class="amxnotif_guest_action">
3978                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
3979                                                        rounded-md focus:outline-none
3980                                                        focus:outline-hidden focus:ring-2
3981                                                        focus:ring-offset-2 disabled:opacity-50
3982                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
3983                                                        Benachrichtigen                                                    </button>
3984                                                </div>
3985                                            </div>
3986
3987                                                                                            <div class="flex items-start pt-2">
3988                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
3989                                                        text-blue-600 border-gray-300 rounded-sm">
3990                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
3991                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
3992                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
3993                                                </div>
3994                                                                                    </form>
3995                                    </div>
3996
3997                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
3998                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
3999                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
4000  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
4001<title>x</title></svg>
4002                                    </button>
4003                                </div>
4004                            </div>
4005                        </template>
4006                    </template>
4007                </div>
4008                    </template>
4009    </div>
4010
4011<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_47165" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":47165,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"19306":"1","47092":"1"},"childProductsAlertStatus":{"19306":"0","47092":"0"}
4011,"indexMapping":"{\u0022163:15\u0022:19306,\u0022163:8\u0022:47092}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":47165,"availabilityMessages":{"19306":"Lieferbar innerhalb von 3-5 Tagen","47092":"Download sofort  verf\u00fcgbar"},"openAccess":{"47165":{"status":0},"19306":{"status":0},"47092":{"status":0}}}'>
4012    
4013    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
4014        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
4015        <span x-html="optionsLabelText"></span>
4016    </p>
4017</div>                </div>
4018            
4019                                
4019<script>
4020        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
4021            try {
4022                const attributes = (config && config.attributes) ? config.attributes : null;
4023                if (!attributes) return [];
4024                let attr = null;
4025                if (Array.isArray(attributes)) {
4026                    for (let i = 0; i < attributes.length; i++) {
4027                        const a = attributes[i];
4028                        if (a && a.id == attrId) {
4029                            attr = a;
4030                            break;
4031                        }
4032                    }
4033                } else {
4034                    attr = attributes[attrId];
4035                }
4036                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
4037            } catch (e) {
4038                return [];
4039            }
4040        };
4041
4042        function initConfigurableSwatchOptions_47165() {
4043            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["19306"]},{"id":"8","label":"PDF","products":["47092"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"19306":{"baseOldPrice":{"amount":21.401868158879},"oldPrice":{"amount":22.9},"basePrice":{"amount":21.401868158879},"finalPrice":{"amount":22.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47092":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":15.878503672897},"finalPrice":{"amount":16.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":14.27730992437},"finalPrice":{"amount":16.99},"isApproxPrice":null},"productId":"47165","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"19306":{"163":"15"},"47092":{"163":"8"}},"salable":{"163":{"15":["19306"],"8":["47092"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"19306":"004419","47092":"004420"},"output":{"19306":"Kartoniert","47092":"PDF"},"original_name":{"19306":"Trait\u00e9 des trois imposteurs","47092":"Trait\u00e9 des trois imposteurs"},"openaccess_license_link":{"19306":"","47092":""},"openaccess_license_name":{"19306":"","47092":""},"openaccess_external_link":{"19306":"","47092":""},"gpsr_safety_info":{"19306":"","47092":""},"description":{"19306":"Die legend\u00e4re Abhandlung \u00fcber die drei Betr\u00fcger (Moses, Jesus und Mohammed) z\u00e4hlt zu den herausragenden Schl\u00fcsseltexten der franz\u00f6sischen Aufkl\u00e4rung. Die Schrift markiert den \u00dcbergang von der rationalen Religionskritik zum konsequenten Atheismus in der Philosophie der Neuzeit und war z.B. auch f\u00fcr de Sade ein wichtiger Ausgangspunkt. Es gibt weder Gott noch das Jenseits, weder Freiheit noch Verantwortung \u2013 sondern der Mensch ist sterblich und Teil der Natur. So lautet die radikale, den Standpunkt der Deisten \u00fcberbietende Botschaft des gegen Ende des 17. Jahrhunderts entstandenen \u00bbTrait\u00e9 des trois imposteurs\u00ab, der die Lehren von Moses, Jesus und Mohammed als Lug und Trug zur\u00fcckweist. <br\/><br\/>Die legendenumwobene Schrift fand im 18. Jhd. (zun\u00e4chst in einer Vielzahl von Abschriften, ab 1768 im Druck) gro\u00dfe Verbreitung. Sie gilt als Schl\u00fcsseldokument f\u00fcr die Anf\u00e4nge und das Programm des strikt materialistischen Fl\u00fcgels der franz\u00f6sischen Aufkl\u00e4rung: Bereits 50 Jahre vor d'Holbach bot der \u00bbTrait\u00e9\u00ab den Aufriss f\u00fcr dessen \u00bbSyst\u00e8me de la nature\u00ab und war sp\u00e4ter f\u00fcr den Marquis de Sade der Ausgangspunkt f\u00fcr die radikale Desavouierung des Begriffs der Moral. Der unbekannte Verfasser des \u00bbTrait\u00e9\u00ab begriff sich nicht als Autor, sondern als Vermittler: Sein Text st\u00fctzt sich auf Anleihen bei Hobbes, Spinoza und Vanini, d.h. auf Paraphrasen und Umdeutungen in aufkl\u00e4rerischem Pathos. <br\/><br\/>Der Band pr\u00e4sentiert den Text in kritischer Edition (nach der Ausgabe von 1768) mit deutscher \u00dcbersetzung und kommentierenden Anmerkungen des Herausgebers. F\u00fcr die Neuausgabe hat der Herausgeber eine neue Einleitung verfasst und die Bibliographie \u00fcberarbeitet.","47092":"Die legend\u00e4re Abhandlung \u00fcber die drei Betr\u00fcger (Moses, Jesus und Mohammed) z\u00e4hlt zu den herausragenden Schl\u00fcsseltexten der franz\u00f6sischen Aufkl\u00e4rung. Die Schrift markiert den \u00dcbergang von der rationalen Religionskritik zum konsequenten Athe
4043ismus in der Philosophie der Neuzeit und war z.B. auch f\u00fcr de Sade ein wichtiger Ausgangspunkt. Es gibt weder Gott noch das Jenseits, weder Freiheit noch Verantwortung \u2013 sondern der Mensch ist sterblich und Teil der Natur. So lautet die radikale, den Standpunkt der Deisten \u00fcberbietende Botschaft des gegen Ende des 17. Jahrhunderts entstandenen \u00bbTrait\u00e9 des trois imposteurs\u00ab, der die Lehren von Moses, Jesus und Mohammed als Lug und Trug zur\u00fcckweist. <br\/><br\/>Die legendenumwobene Schrift fand im 18. Jhd. (zun\u00e4chst in einer Vielzahl von Abschriften, ab 1768 im Druck) gro\u00dfe Verbreitung. Sie gilt als Schl\u00fcsseldokument f\u00fcr die Anf\u00e4nge und das Programm des strikt materialistischen Fl\u00fcgels der franz\u00f6sischen Aufkl\u00e4rung: Bereits 50 Jahre vor d'Holbach bot der \u00bbTrait\u00e9\u00ab den Aufriss f\u00fcr dessen \u00bbSyst\u00e8me de la nature\u00ab und war sp\u00e4ter f\u00fcr den Marquis de Sade der Ausgangspunkt f\u00fcr die radikale Desavouierung des Begriffs der Moral. Der unbekannte Verfasser des \u00bbTrait\u00e9\u00ab begriff sich nicht als Autor, sondern als Vermittler: Sein Text st\u00fctzt sich auf Anleihen bei Hobbes, Spinoza und Vanini, d.h. auf Paraphrasen und Umdeutungen in aufkl\u00e4rerischem Pathos. <br\/><br\/>Der Band pr\u00e4sentiert den Text in kritischer Edition (nach der Ausgabe von 1768) mit deutscher \u00dcbersetzung und kommentierenden Anmerkungen des Herausgebers. F\u00fcr die Neuausgabe hat der Herausgeber eine neue Einleitung verfasst und die Bibliographie \u00fcberarbeitet."},"doi":{"19306":"","47092":"10.28937\/978-3-7873-4420-8"},"isbn":{"19306":"978-3-7873-4419-2","47092":"978-3-7873-4420-8"},"marketing_short_text":{"19306":"","47092":""},"recension_text":{"19306":"<div class=\"reviews\">\r\n<div class=\"review\">Schr\u00f6ders Kommentar ist ein philologisches Glanzst\u00fcck.<\/div>\r\n<div class=\"source\">Frankfurter Allgemeine, 12. Mai 1993<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Die Menschen \u2013 das war das Verhei\u00dfende des Textes \u2013 sollten von den Fesseln befreit werden, die sie in ihrem Handeln und Denken einschr\u00e4nkten, von den Fesseln einer Moral, die im Bunde mit einer fragw\u00fcrdigen, repressiven Herrschaft stand. Darum wollte der Autor auch unbedingt mit der Vorstellung aufr\u00e4umen, es g\u00e4be Strafen im Jenseits. [\u2026] Wer\u2019s darauf anlegt, dem liefert der Traktat noch heute eine Menge polemische Munition. Unter anderem deshalb wird er im laizistischen Frankreich wieder so gern gelesen. Wichtig bleibt das B\u00fcchlein auf jeden Fall in historischer Perspektive: gerade weil es uns an die Wurzeln jener entzauberten modernen Welt f\u00fchrt, in der wir heute leben \u2013 und f\u00fcr die, wie nichts sonst, der Atheismus zu einer signifikanten Position geworden ist.<\/div>\r\n<div class=\"source\">Winfried Schr\u00f6der (im ZEIT-Interview vom 20. Mai 2010)<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Ein wegweisendes Dokument des Atheismus! Es gibt weder Gott noch das Jenseits, weder Freiheit noch Verantwortung, sondern der Mensch ist sterblich und Teil der Natur.<\/div>\r\n<div class=\"source\">lehrerbibliothek.de<\/div>\r\n<\/div>","47092":"<div class=\"reviews\">\r\n<div class=\"review\">Schr\u00f6ders Kommentar ist ein philologisches Glanzst\u00fcck.<\/div>\r\n<div class=\"source\">Frankfurter Allgemeine, 12. Mai 1993<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Die Menschen \u2013 das war das Verhei\u00dfende des Textes \u2013 sollten von den Fesseln befreit werden, die sie in ihrem Handeln und Denken einschr\u00e4nkten, von den Fesseln einer Moral, die im Bunde mit einer fragw\u00fcrdigen, repressiven Herrschaft stand. Darum wollte der Autor auch unbedingt mit der Vorstellung aufr\u00e4umen, es g\u00e4be Strafen im Jenseits. [\u2026] Wer\u2019s darauf anlegt, dem liefert der Traktat noch heute eine Menge polemische Munition. Unter anderem deshalb wird er im laizistischen Frankreich wieder so gern gelesen. Wichtig bleibt das B\u00fcchlein auf jeden Fall in historischer Perspektive: gerade weil es uns an die Wurzeln jener entzauberten modernen Welt f\u00fchrt, in der wir heute leben \u2013 und f\u00fcr die, wie nichts sonst, der Atheismus zu einer signifikanten Position geworden ist.<\/div>\r\n<div class=\"source\">Winfried Schr\u00f6der (im ZEIT-Interview vom 20. Mai 2010)<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Ein wegweisendes Dokument des Atheismus! Es gibt weder Gott noch das Jense
4043its, weder Freiheit noch Verantwortung, sondern der Mensch ist sterblich und Teil der Natur.<\/div>\r\n<div class=\"source\">lehrerbibliothek.de<\/div>\r\n<\/div>"},"language":{"19306":"Franz\u00f6sisch-Deutsch","47092":""},"cover":{"19306":"Kartoniert","47092":""},"pages":{"19306":"LXVIII, 171 Seiten.","47092":"LXVIII, 171 Seiten."},"edition":{"19306":"2., durchgesehene Auflage mit neuer Einleitung und aktualisierter Bibliographie","47092":"2., durchgesehene Auflage mit neuer Einleitung und aktualisierter Bibliographie"},"pod":{"19306":"Nein","47092":"Nein"},"copyright_year":{"19306":"","47092":""},"vlb_tix_link":{"19306":"https:\/\/neu.vlbtix.de\/products\/9783787344192?type=gtin","47092":""},"defaultValues":{"163":"15"}};
4044            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
4045
4046            if (typeof window.amxnotif_wrap_attributes === 'function') {
4047                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
4048                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
4049            }
4050
4051            const configurableOptionsComponent = initConfigurableOptions(
4052                '47165',
4053                config
4054            );
4055            const swatchOptionsComponent = initSwatchOptions(
4056                swatchConfig
4057            );
4058
4059            // DWS - Configurable product preselect start
4060            const confProdPreSelect = () => {
4061                return {
4062                    preselectQuerystringItems() {
4063                        var data = {"id":"19306","output":"15"};
4064                        const urlQueryParams = new URLSearchParams(window.location.search);
4065
4066                                                this.$nextTick(() => {
4067                            setTimeout(() => {
4068                                const rootEl = this.$root || this.$el;
4069                                if (!rootEl) return;
4070
4071                                const applySelection = (attrCode, attrValue) => {
4072                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
4073
4074                                    const attributes = Object.values(this.optionConfig.attributes || {});
4075                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
4076
4077                                    if (targetAttr) {
4078                                        const attrId = String(targetAttr.id);
4079                                        const optionVal = String(attrValue);
4080
4081                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
4082
4083                                        if (inputEl) {
4084                                                                                        inputEl.click();
4085                                            inputEl.dispatchEvent(new Event('change', {
4086                                                bubbles: true
4087                                            }));
4088                                        } else {
4089                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
4090                                            if (selectEl) {
4091                                                selectEl.value = optionVal;
4092                                                selectEl.dispatchEvent(new Event('change', {
4093                                                    bubbles: true
4094                                                }));
4095                                            }
4096                                        }
4097
4098                                                                                this.changeOption(attrId, optionVal, false);
4099                                    }
4100                                };
4101
4102                                                                if (data && typeof data === 'object') {
4103                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
4104                                }
4105
4106                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
4107                                    if (attribute && attribute.code) {
4108                                        let optionValue = urlQueryParams.get(attribute.code);
4109                                        if (optionValue) {
4110                                            let optionId = false;
4111                                            const attributes = Object.values(this.optionConfig.attributes || {});
4112                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
4113
4114                                            let found = false;
4115                                            Object.values(targetAttr.options).map(option => {
4116                                                if (found === false && option.label === optionValue) {
4117                                                    optionId = option.id;
4118                                                    found = true;
4119                                                }
4120                                            });
4121
4122                                            const attrId = String(targetAttr.id);
4123                                            let optionVal = String(optionValue);
4124                                            if (found) {
4125                                                optionVal = String(optionId);
4126                                            }
4127
4128                                            applySelection(attribute.code, optionVal);
4129                                        }
4130                                    }
4131                                });
4132                            }, 100);
4133                        });
4134                    }
4135                }
4136            };
4137            // DWS - Configurable product preselect end
4138
4139            const result = Object.assign(
4140                configurableOptionsComponent,
4141                swatchOptionsComponent, {
4142                    productId: '47165',
4143                    productIndex: 0,
4144                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
4145                    showSwatches: false,
4146                    precalcOptions: {},
4147                    originalInit: configurableOptionsComponent.init,
4148                    init() {
4149                        try {
4150                            this.precalcOptions = {};
4151                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
4152                            this.preselectQuerystringItems();
4153                            if (Array.isArray(attrSource)) {
4154                                attrSource.forEach(attr => {
4155                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
4156                                });
4157                            } else if (attrSource && typeof attrSource === 'object') {
4158                                Object.keys(attrSource).forEach(id => {
4159                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
4160                                });
4161                            }
4162                        } catch (e) {
4163                            console.error('Pre-calc error:', e);
4164                        }
4165
4166                        if (typeof this.originalInit === 'function') {
4167                            this.originalInit();
4168                        }
4169
4170                        try {
4171                            this.initShowSwatchesIntersect();
4172                        } catch (e) {
4173                            console.error('intersect error:', e);
4174                        }
4175                    },
4176
4177                    updateGallery() {
4178                        if (!this.productIndex) return;
4179
4180                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
4181                                method: 'GET',
4182                                headers: {
4183                                    'Content-Type': 'application/json',
4184                                    'X-Requested-With': 'XMLHttpRequest'
4185                                }
4186                            })
4187                            .then(response => response.json())
4188                            .then(data => {
4189                                if (data && data.medium) {
4190                                    window.dispatchEvent(new CustomEvent("update-gallery-47165", {
4191                                        detail: data.medium
4192                                    }));
4193                                }
4194                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
4195                    },
4196
4197
4198                    initShowSwatchesIntersect() {
4199                        const observer = new IntersectionObserver(entries => {
4200                            if (entries[0].isIntersecting) {
4201                                this.showSwatches = true;
4202                                observer.disconnect();
4203                            }
4204                        }, {
4205                            rootMargin: '512px'
4206                        });
4207                        observer.observe(this.$el);
4208                    },
4209                    getOptions(attrId) {
4210                        return this.precalcOptions[attrId] || [];
4211                    },
4212                    getOptionsByAttrId() {
4213                        return this.getOptions(this.$el.dataset.attributeId);
4214                    },
4215                    _getItemId() {
4216                        if (this.item && this.item.id) return this.item.id;
4217                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
4218                    },
4219                    getSwatchOptionHtmlId() {
4220                        const itemId = this._getItemId();
4221                        return itemId ? this.$id(`attribute-option-47165-${itemId}`) : '';
4222                    },
4223                    getSwatchOptionHtmlIdGroup() {
4224                        const itemId = this._getItemId();
4225                        return itemId ? [`attribute-option-47165-${itemId}`] : [];
4226                    },
4227                    getAttributeSwatchData(attributeId) {
4228                        const data = Object.assign({}, this.swatchConfig[attributeId]);
4229                        if (data['additional_data']) {
4230                            try {
4231                                data['details'] = JSON.parse(data['additional_data']);
4232                            } catch (e) {
4233                                data['details'] = {};
4234                            }
4235                        }
4236                        return data;
4237                    },
4238                    getSwatchType(attributeId, optionId) {
4239                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
4240                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
4241                        }
4242                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
4243                            this.swatchConfig[attributeId].details.swatch_input_type :
4244                            "empty";
4245                        if (type === 'visual') {
4246                            const config = this.swatchConfig[attributeId];
4247                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
4248                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
4249                            }
4250                            // Fallback to first option type
4251                            for (const oId in config) {
4252                                if (config[oId] && typeof config[oId].type !== 'undefined') {
4253                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
4254                                }
4255                            }
4256                        }
4257                        return type;
4258                    },
4259                    mapSwatchTypeNumberToTypeCode(type) {
4260                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
4261                    },
4262                    isTextSwatch() {
4263                        const itemId = this._getItemId();
4264                        if (!this.$el || !itemId) return false;
4265                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
4266                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
4267                    },
4268
4269                    getSwatchText() {
4270                        const itemId = this._getItemId();
4271                        if (this.item) return this.item.label || '';
4272                        if (!this.$el || !itemId) return '';
4273                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
4274                        const options = attrId ? this.getOptions(attrId) : [];
4275                        const opt = options.find(o => o.id == itemId);
4276                        return opt ? opt.label : '';
4277                    },
4278                    getSwatchBackgroundStyle() {
4279                        const itemId = this._getItemId();
4280                        if (!this.$el || !itemId) return '';
4281                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
4282                        if (!attrId) return '';
4283                        const type = this.getSwatchType(attrId, itemId);
4284                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
4285                            this.swatchConfig[attrId][itemId] :
4286                            null;
4287                        if (!swatchData) return '';
4288                        if (type === "color") return 'background-color:' + swatchData.value;
4289                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
4290                        return '';
4291                    },
4292                    swatchOptionClasses() {
4293                        const itemId = this._getItemId();
4294                        if (!this.$el || !itemId) return {};
4295                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
4296                        return {
4297                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
4298                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
4299                            'w-6 h-6': !this.isTextSwatch()
4300                        }
4301                    },
4302
4303                    onFocusSwatchItem() {
4304                        const itemId = this._getItemId();
4305                        if (itemId) this.focusedLabel = itemId;
4306                    },
4307                    onChangeOption() {
4308                        const itemId = this._getItemId();
4309                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
4310                        if (attrId && itemId) this.changeOption(attrId, itemId);
4311                    },
4312                    changeOption(attributeId, value) {
4313                        if (value === '') {
4314                            return;
4315                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
4316                        } else {
4317                            this.selectedValues[attributeId] = value;
4318                        }
4319
4320                        this.findSimpleIndex();
4321                        this.findAllowedAttributeOptions();
4322                        this.updatePrices();
4323                        this.updateGallery();
4324
4325                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
4326                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
4327
4328                        const eventDetail = {
4329                            productId: this.productId,
4330                            optionId: attributeId,
4331                            value: value,
4332                            productIndex: this.productIndex || 0,
4333                            selectedValues: this.selectedValues,
4334                            candidates: candidates,
4335                            sourceElement: this.$el
4336                        };
4337
4338                        // Dispatch for Amasty
4339                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
4340                            detail: eventDetail
4341                        }));
4342
4343                        // Dispatch for Hyva listing
4344                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
4345                            detail: eventDetail
4346                        }));
4347                    },
4348
4349
4350                    clearOptionIfActive() {
4351                        const itemId = this._getItemId();
4352                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
4353                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
4354                            this.changeOption(attrId, '');
4355
4356                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
4357                            if (!input && this.$el?.querySelector) {
4358                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
4359                            }
4360                            if (!input && this.$el?.closest) {
4361                                const root = this.$el.closest('[data-product-id]') || this.$el;
4362                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
4363                            }
4364                            if (input) {
4365                                input.checked = false;
4366                            }
4367                        }
4368                    },
4369                    get optionIsEnabled() {
4370                        const itemId = this._getItemId();
4371                        if (!this.$el || !itemId) return true;
4372                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
4373                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
4374                        return !!allowedOptions.find(opt => opt.id == itemId);
4375                    },
4376                    get isSelected() {
4377                        const itemId = this._getItemId();
4378                        if (!this.$el || !itemId) return false;
4379                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
4380                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
4381                    },
4382                    get isSwatchRequired() {
4383                        if (!this.$el) return false;
4384                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
4385                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
4386                    },
4387                    focusedLabel: false,
4388                    activeTooltipItem: false,
4389                    tooltipPositionElement: false,
4390                    setActiveTooltipItem() {
4391                        const itemId = this._getItemId();
4392                        if (!this.$el || !itemId) return;
4393                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
4394                        this.activeTooltipItem = {
4395                            attribute: attrId,
4396                            item: itemId,
4397                            index: 0
4398                        };
4399                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
4400                    },
4401                    unsetActiveTooltipItem() {
4402                        this.activeTooltipItem = false;
4403                    }
4404                },
4405                confProdPreSelect()
4406            );
4407
4408            if (result.optionConfig && result.optionConfig.attributes) {
4409                const attributes = result.optionConfig.attributes;
4410                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
4411                    let source = attributes;
4412                    if (Array.isArray(attributes)) {
4413                        source = {};
4414                        attributes.forEach(attr => {
4415                            if (attr && attr.id) source[attr.id] = attr;
4416                        });
4417                    }
4418                    const values = Object.values(source);
4419                    const wrapper = Object.assign(values, source);
4420                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
4421                        value: true,
4422                        enumerable: false
4423                    });
4424                    result.optionConfig.attributes = wrapper;
4425                }
4426            }
4427
4428            return result;
4429        }
4430
4431        window.addEventListener('alpine:init', () => {
4432            Alpine.data('initConfigurableSwatchOptions_47165', initConfigurableSwatchOptions_47165);
4433        }, {
4434            once: true
4435        });
4436    </script>
4436
4437    
4438    <div x-data="initConfigurableSwatchOptions_47165" x-defer="intersect">
4439        <div class="pagebuilder-home-hidden">
4440                                            
4441                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
4442                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
4443                        <template x-if="showSwatches">
4444                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-47165-163" role="radiogroup" aria-label="Einband">
4445                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
4446                                    <div :data-option-id="item.id" style="display: contents">
4447                                        <div x-id="getSwatchOptionHtmlIdGroup">
4448    <template x-if="optionIsEnabled">
4449        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
4449self="unsetActiveTooltipItem">
4450            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-47165-163">
4451            <div>
4452                <template x-if="isTextSwatch">
4453                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
4454                </template>
4455                <template x-if="!optionIsActive(163, item.id)">
4456                    <div>
4457                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
4458                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
4459                        </svg>
4460                    </div>
4461                </template>
4462            </div>
4463        </label>
4464    </template>
4465</div>                                    </div>
4466                                </template>
4467                            </div>
4468                        </template>
4469                    </div>
4470                </div>
4471                    </div>
4472    </div>
4473            
4474                                                <div class="meta py-4 pagebuilder-home-hidden">
4475                <div x-data="initMarketingShortText_47165()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
4476                    <!-- Marketing short text -->
4477                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
4478                    </div>
4479
4480                    <!-- Short description -->
4481                                                                <div class="short-description">
4482                            Die legend&auml;re Abhandlung &uuml;ber die drei Betr&uuml;ger (Moses, Jesus und Mohammed) z&auml;hlt zu den herausragenden Schl&uuml;sseltexten der franz&ouml;sischen Aufkl&auml;rung. Die Schrift markiert den &Uuml;bergang von der ...                            <a href="https://meiner.de/fmv_de/traktat-a-ber-die-drei-betra-ger-16064" class="underline">mehr</a>
4483                        </div>
4484                                    </div>
4485
4486                <!-- Series  -->
4487                                    <div class="mb-1">
4488                        <span class="sr-only">Reihe:</span>
4489                        <a href="https://meiner.de/fmv_de/programm/reihen/philosophische-bibliothek">
4490                            <span>Philosophische Bibliothek</span>
4491                        </a>
4492                                                    452                                            </div>
4493                
4494                
4495                                                    <div class="mb-1">
4496                        <span x-data="initEditionText_47165()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
4497                            <!-- Marketing short text -->
4498                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, LXVIII, 171 Seiten.                        </span>
4499                    </div>
4500                
4501                            </div>
4502            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
4503                
4504                <div class="justify-end" x-data="initPriceBox()" @update-prices-47165.window="updatePrice($event.detail);">
4505                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="47165" data-price-box="product-id-47165"><span class="normal-price">
4506    <span x-data x-id="['product\u002Dprice\u002D47165']" class="price-container price-final_price tax weee">
4507            <span class="price-label">Ab</span>
4508                <span class="approx-price">ca. </span>
4509        <span :id="$id('product\u002Dprice\u002D47165')" data-price-amount="16.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">16,99&nbsp;&euro;</span></span>
4510        </span>
4511</span>
4512
4513
4514</div>                </div>
4515
4516                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
4517                                            <div class="open-access-container open-access-container-47165                    flex mt-4 ml-auto sm:mt-0 hidden">
4518                            <div class="text-gray-700">
4519                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
4520                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
4521                                        Kostenlos online lesen                                    </a>
4522                                </button>
4523                            </div>
4524                        </div>
4525                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Traktat &uuml;ber die drei Betr&uuml;ger" aria-label="In den Warenkorb Traktat &uuml;ber die drei Betr&uuml;ger" data-addto="cart">
4526                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
4527  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
4528</svg>
4529                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
4530                                        In den Warenkorb                                    </span>
4531                                </button>
4532                                                                                                                    
4533<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(47165)" aria-label="Zur Wunschliste hinzuf&uuml;gen Traktat &uuml;ber die drei Betr&uuml;ger" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
4534    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
4535  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
4536</svg>
4537</button>
4538                                    </div>
4539            </div>
4540        </div>
4541        
4541<script>
4542            function initMarketingShortText_47165() {
4543                var marketingShortTextConfig = {};
4544                if (typeof window.initConfigurableSwatchOptions_47165 === "function") {
4545                    var fullConfig = window.initConfigurableSwatchOptions_47165().optionConfig
4546                    var marketingShortTextConfig = fullConfig.marketing_short_text;
4547                }
4548                return {
4549                    marketingShortText: '',
4550                    config: marketingShortTextConfig,
4551                    productId: '47165',
4552                    getMarketingShortText(detail) {
4553                        this.marketingShortText = detail.productIndex ?
4554                            this.config[detail.productIndex] :
4555                            null;
4556                    },
4557                    eventListeners: {
4558                        ['@listing-configurable-selection-changed.window'](event) {
4559                            if (this.productId == event.detail.productId) {
4560                                this.getMarketingShortText(event.detail);
4561                            }
4562
4563                        }
4564                    }
4565                }
4566            }
4567
4568            function initEditionText_47165() {
4569                var editionTextConfig = {};
4570                if (typeof window.initConfigurableSwatchOptions_47165 === "function") {
4571                    var fullConfig = window.initConfigurableSwatchOptions_47165().optionConfig
4572                    var editionTextConfig = fullConfig.edition;
4573                }
4574                return {
4575                    editionText: '',
4576                    config: editionTextConfig,
4577                    productId: '47165',
4578                    getEditionText(detail) {
4579                        this.editionText = detail.productIndex ?
4580                            this.config[detail.productIndex] :
4581                            null;
4582                    },
4583                    eventListeners: {
4584                        ['@listing-configurable-selection-changed.window'](event) {
4585                            if (this.productId == event.detail.productId) {
4586                                this.getEditionText(event.detail);
4587                            }
4588
4589                        }
4590                    }
4591                }
4592            }
4593        </script>
4593
4594                    </form>
4595                            
4596    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/47160/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk22892">
4597        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="47160">
4598                                    <a href="https://meiner.de/fmv_de/materie-als-aktives-gegena-ber-des-subjekts-22892" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
4599            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-47160.window="$el.src = $event.detail" alt="Materie als aktives Gegen&uuml;ber des Subjekts" title="Materie als aktives Gegen&uuml;ber des Subjekts" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787352012_1.jpg" :style="{
4600                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
4601                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
4602            }">
4603                    </a>
4604        <div class="product-info flex flex-col flex-grow ">
4605                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
4606                                    <div class="mb-2 text-sm text-gray-500 font-medium">
4607                                                                                    <a href="https://meiner.de/fmv_de/person/Thomas-Oehl-22893/" class="mb-2">
4608                                    Thomas Oehl                                                                    </a>
4609                                                                                                                                    </div>
4610                                <a class="product-item-link" href="https://meiner.de/fmv_de/materie-als-aktives-gegena-ber-des-subjekts-22892">
4611                    Materie als aktives Gegen&uuml;ber des Subjekts                </a>
4612                            </div>
4613
4614            <div x-data="initEditionText_47160()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
4615                <!-- Marketing short text -->
4616                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
4617                </div>
4618            </div>
4619
4620                            <div class="py-1 grid  mb-4 ">
4621                    
4622                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":47160,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":47160,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"47095":"1","47139":"1","47141":"1"},"childProductsAlertStatus":{"47095":"0","47139":"0","47141":"0"},"indexMapping":{"163:15":47095,"163:8":47139,"163:9":47141},"availabilityMessages":{"47095":"Lieferbar innerhalb von 3-5 Tagen","47139":"Download sofort  verf\u00fcgbar","47141":"Download sofort  verf\u00fcgbar"},"openAccess":{"47160":{"status":0},"47095":{"status":0},"47139":{"status":0},"47141":{"status":0}}},"availabilityMessages":{"47095":"Lieferbar innerhalb von 3-5 Tagen","47139":"Download sofort  verf\u00fcgbar","47141":"Download sofort  verf\u00fcgbar"},"openAccess":{"47160":{"status":0},"47095":{"status":0},"47139":{"status":0},"47141":{"status":0}}}'>
4623        <template x-if="containerVisible">
4624                            <!-- Popup Trigger -->
4625                <div>
4626                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
4627                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
4628                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
4629  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
4630<title>bell</title></svg>
4631</span>
4632                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
4633
4634                    <!-- Popup Modal -->
4635                    <template x-if="showModal">
4636                        <template x-teleport=".page-wrapper">
4637                            <div x-cloak class="fixed inset-0 flex items-center justify-center
4638                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
4639                                <div class="relative bg-white rounded-lg shadow-xl
4640                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
4641                                    <div class="p-6">
4642                                        <!-- Subscription Form for Popup -->
4643                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
4644                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
4645                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
4646                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
4647
4648                                            <div class="flex flex-col gap-3">
4649                                                <div class="flex-grow grow">
4650                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
4651                                                        shadow-xs focus:outline-none focus:outline-hidden
4652                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
4653                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
4654                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
4655                                                </div>
4656                                                <input type="hidden" name="product_id" :value="currentProductId">
4657                                                <input type="hidden" name="type" value="email">
4658
4659                                                
4660                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
4661
4662                                                <div class="amxnotif_guest_action">
4663                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
4664                                                        rounded-md focus:outline-none
4665                                                        focus:outline-hidden focus:ring-2
4666                                                        focus:ring-offset-2 disabled:opacity-50
4667                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
4668                                                        Benachrichtigen                                                    </button>
4669                                                </div>
4670                                            </div>
4671
4672                                                                                            <div class="flex items-start pt-2">
4673                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
4674                                                        text-blue-600 border-gray-300 rounded-sm">
4675                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
4676                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
4677                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
4678                                                </div>
4679                                                                                    </form>
4680                                    </div>
4681
4682                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
4683                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
4684                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
4685  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
4686<title>x</title></svg>
4687                                    </button>
4688                                </div>
4689                            </div>
4690                        </template>
4691                    </template>
4692                </div>
4693                    </template>
4694    </div>
4695
4696<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_47160" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":47160,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"47095":"1","47139":"1","47141":"
46961"},"childProductsAlertStatus":{"47095":"0","47139":"0","47141":"0"},"indexMapping":"{\u0022163:15\u0022:47095,\u0022163:8\u0022:47139,\u0022163:9\u0022:47141}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":47160,"availabilityMessages":{"47095":"Lieferbar innerhalb von 3-5 Tagen","47139":"Download sofort  verf\u00fcgbar","47141":"Download sofort  verf\u00fcgbar"},"openAccess":{"47160":{"status":0},"47095":{"status":0},"47139":{"status":0},"47141":{"status":0}}}'>
4697    
4698    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
4699        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
4700        <span x-html="optionsLabelText"></span>
4701    </p>
4702</div>                </div>
4703            
4704                                
4704<script>
4705        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
4706            try {
4707                const attributes = (config && config.attributes) ? config.attributes : null;
4708                if (!attributes) return [];
4709                let attr = null;
4710                if (Array.isArray(attributes)) {
4711                    for (let i = 0; i < attributes.length; i++) {
4712                        const a = attributes[i];
4713                        if (a && a.id == attrId) {
4714                            attr = a;
4715                            break;
4716                        }
4717                    }
4718                } else {
4719                    attr = attributes[attrId];
4720                }
4721                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
4722            } catch (e) {
4723                return [];
4724            }
4725        };
4726
4727        function initConfigurableSwatchOptions_47160() {
4728            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["47095"]},{"id":"8","label":"PDF","products":["47139"]},{"id":"9","label":"EPUB","products":["47141"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"47095":{"baseOldPrice":{"amount":21.401868158879},"oldPrice":{"amount":22.9},"basePrice":{"amount":21.401868158879},"finalPrice":{"amount":22.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47139":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":15.878503672897},"finalPrice":{"amount":16.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47141":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":15.878503672897},"finalPrice":{"amount":16.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":14.27730992437},"finalPrice":{"amount":16.99},"isApproxPrice":null},"productId":"47160","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"47095":{"163":"15"},"47139":{"163":"8"},"47141":{"163":"9"}},"salable":{"163":{"15":["47095"],"8":["47139"],"9":["47141"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"47095":"005199","47139":"005200","47141":"005201"},"output":{"47095":"Kartoniert","47139":"PDF","47141":"EPUB"},"original_name":{"47095":"","47139":"","47141":""},"openaccess_license_link":{"47095":"","47139":"","47141":""},"openaccess_license_name":{"47095":"","47139":"","47141":""},"openaccess_external_link":{"47095":"","47139":"","47141":""},"gpsr_safety_info":{"47095":"","47139":"","47141":""},"description":{"47095":"Thomas Oehl zeigt in seinem Buch in Auseinandersetzung mit Hegels (und Adornos) Philosophie, dass und wie Materie als aktiv gedacht werden kann.<br\/><br\/>Die Idee einer Aktivit\u00e4t der Materie zieht sich wie ein Versprechen durch die moderne, nachhegelsche Philosophie, insbesondere im \u00bbMaterialismus\u00ab, wie er von Marx und Adorno gepr\u00e4gt wurde. Sie stand und steht jedoch stets im Verdacht, der Materie irrationalerweise etwas zuschreiben zu wollen, das wir allein dem Subjekt zuschreiben d\u00fcrfen: Aktivit\u00e4t in einem starken Sinne. Der Gedankengang des Buches entwickelt diese Idee streng sachorientiert und verteidigt sie gegen den besagten Verdacht in drei Studien, die je einer bestimmten Gestalt von Aktivit\u00e4t der Materie gewidmet sind. Die Idee ist einerseits von metaphysischer Bedeutung, da mit ihr nicht weniger als ein ganz neuer Begriff von Materie verbunden ist, andererseits aber auch von sozialphilosophischer Relevanz: Denn in der Aktivit\u00e4t der Materie liegt die M\u00f6glichkeit, Materie in befreiender Weise als ein Gegen\u00fcber zu erfahren, etwa in bestimmten \u00e4sthetischen Konstellationen; eine freie Beziehung zu einem Gegen\u00fcber besteht gerade nicht allein in Intersubjektivit\u00e4t.<br\/><br\/>Das Buch ist im Dialog mit Horst Bredekamps Theorie des Bildakts geschrieben, in der verwandte Motive verfolgt werden, und um ein Nachwort Bredekamps erg\u00e4nzt.","47139":"Thomas Oehl zeigt in seinem Buch in Auseinandersetzung mit Hegels (und Adornos) Philosophie, dass und wie Materie als aktiv gedacht werden kann.
4728<br\/><br\/>Die Idee einer Aktivit\u00e4t der Materie zieht sich wie ein Versprechen durch die moderne, nachhegelsche Philosophie, insbesondere im \u00bbMaterialismus\u00ab, wie er von Marx und Adorno gepr\u00e4gt wurde. Sie stand und steht jedoch stets im Verdacht, der Materie irrationalerweise etwas zuschreiben zu wollen, das wir allein dem Subjekt zuschreiben d\u00fcrfen: Aktivit\u00e4t in einem starken Sinne. Der Gedankengang des Buches entwickelt diese Idee streng sachorientiert und verteidigt sie gegen den besagten Verdacht in drei Studien, die je einer bestimmten Gestalt von Aktivit\u00e4t der Materie gewidmet sind. Die Idee ist einerseits von metaphysischer Bedeutung, da mit ihr nicht weniger als ein ganz neuer Begriff von Materie verbunden ist, andererseits aber auch von sozialphilosophischer Relevanz: Denn in der Aktivit\u00e4t der Materie liegt die M\u00f6glichkeit, Materie in befreiender Weise als ein Gegen\u00fcber zu erfahren, etwa in bestimmten \u00e4sthetischen Konstellationen; eine freie Beziehung zu einem Gegen\u00fcber besteht gerade nicht allein in Intersubjektivit\u00e4t.<br\/><br\/>Das Buch ist im Dialog mit Horst Bredekamps Theorie des Bildakts geschrieben, in der verwandte Motive verfolgt werden, und um ein Nachwort Bredekamps erg\u00e4nzt.","47141":"Thomas Oehl zeigt in seinem Buch in Auseinandersetzung mit Hegels (und Adornos) Philosophie, dass und wie Materie als aktiv gedacht werden kann.<br\/><br\/>Die Idee einer Aktivit\u00e4t der Materie zieht sich wie ein Versprechen durch die moderne, nachhegelsche Philosophie, insbesondere im \u00bbMaterialismus\u00ab, wie er von Marx und Adorno gepr\u00e4gt wurde. Sie stand und steht jedoch stets im Verdacht, der Materie irrationalerweise etwas zuschreiben zu wollen, das wir allein dem Subjekt zuschreiben d\u00fcrfen: Aktivit\u00e4t in einem starken Sinne. Der Gedankengang des Buches entwickelt diese Idee streng sachorientiert und verteidigt sie gegen den besagten Verdacht in drei Studien, die je einer bestimmten Gestalt von Aktivit\u00e4t der Materie gewidmet sind. Die Idee ist einerseits von metaphysischer Bedeutung, da mit ihr nicht weniger als ein ganz neuer Begriff von Materie verbunden ist, andererseits aber auch von sozialphilosophischer Relevanz: Denn in der Aktivit\u00e4t der Materie liegt die M\u00f6glichkeit, Materie in befreiender Weise als ein Gegen\u00fcber zu erfahren, etwa in bestimmten \u00e4sthetischen Konstellationen; eine freie Beziehung zu einem Gegen\u00fcber besteht gerade nicht allein in Intersubjektivit\u00e4t.<br\/><br\/>Das Buch ist im Dialog mit Horst Bredekamps Theorie des Bildakts geschrieben, in der verwandte Motive verfolgt werden, und um ein Nachwort Bredekamps erg\u00e4nzt."},"doi":{"47095":"","47139":"10.28937\/978-3-7873-5200-5","47141":""},"isbn":{"47095":"978-3-7873-5199-2","47139":"978-3-7873-5200-5","47141":"978-3-7873-5201-2"},"marketing_short_text":{"47095":"","47139":"","47141":""},"recension_text":{"47095":"","47139":"","47141":""},"language":{"47095":"","47139":"","47141":""},"cover":{"47095":"Kartoniert","47139":"","47141":""},"pages":{"47095":"134 Seiten.","47139":"134 Seiten.","47141":"134 Seiten."},"edition":{"47095":"","47139":"Unver\u00e4ndertes eBook der 1. Auflage von 2026","47141":"Unver\u00e4ndertes EPUB der 1. Auflage von 2026"},"pod":{"47095":"Nein","47139":"Nein","47141":"Nein"},"copyright_year":{"47095":"","47139":"","47141":""},"vlb_tix_link":{"47095":"https:\/\/neu.vlbtix.de\/products\/9783787351992?type=gtin","47139":"","47141":""},"defaultValues":{"163":"15"}};
4729            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
4730
4731            if (typeof window.amxnotif_wrap_attributes === 'function') {
4732                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
4733                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
4734            }
4735
4736            const configurableOptionsComponent = initConfigurableOptions(
4737                '47160',
4738                config
4739            );
4740            const swatchOptionsComponent = initSwatchOptions(
4741                swatchConfig
4742            );
4743
4744            // DWS - Configurable product preselect start
4745            const confProdPreSelect = () => {
4746                return {
4747                    preselectQuerystringItems() {
4748                        var data = {"id":"47095","output":"15"};
4749                        const urlQueryParams = new URLSearchParams(window.location.search);
4750
4751                                                this.$nextTick(() => {
4752                            setTimeout(() => {
4753                                const rootEl = this.$root || this.$el;
4754                                if (!rootEl) return;
4755
4756                                const applySelection = (attrCode, attrValue) => {
4757                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
4758
4759                                    const attributes = Object.values(this.optionConfig.attributes || {});
4760                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
4761
4762                                    if (targetAttr) {
4763                                        const attrId = String(targetAttr.id);
4764                                        const optionVal = String(attrValue);
4765
4766                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
4767
4768                                        if (inputEl) {
4769                                                                                        inputEl.click();
4770                                            inputEl.dispatchEvent(new Event('change', {
4771                                                bubbles: true
4772                                            }));
4773                                        } else {
4774                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
4775                                            if (selectEl) {
4776                                                selectEl.value = optionVal;
4777                                                selectEl.dispatchEvent(new Event('change', {
4778                                                    bubbles: true
4779                                                }));
4780                                            }
4781                                        }
4782
4783                                                                                this.changeOption(attrId, optionVal, false);
4784                                    }
4785                                };
4786
4787                                                                if (data && typeof data === 'object') {
4788                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
4789                                }
4790
4791                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
4792                                    if (attribute && attribute.code) {
4793                                        let optionValue = urlQueryParams.get(attribute.code);
4794                                        if (optionValue) {
4795                                            let optionId = false;
4796                                            const attributes = Object.values(this.optionConfig.attributes || {});
4797                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
4798
4799                                            let found = false;
4800                                            Object.values(targetAttr.options).map(option => {
4801                                                if (found === false && option.label === optionValue) {
4802                                                    optionId = option.id;
4803                                                    found = true;
4804                                                }
4805                                            });
4806
4807                                            const attrId = String(targetAttr.id);
4808                                            let optionVal = String(optionValue);
4809                                            if (found) {
4810                                                optionVal = String(optionId);
4811                                            }
4812
4813                                            applySelection(attribute.code, optionVal);
4814                                        }
4815                                    }
4816                                });
4817                            }, 100);
4818                        });
4819                    }
4820                }
4821            };
4822            // DWS - Configurable product preselect end
4823
4824            const result = Object.assign(
4825                configurableOptionsComponent,
4826                swatchOptionsComponent, {
4827                    productId: '47160',
4828                    productIndex: 0,
4829                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
4830                    showSwatches: false,
4831                    precalcOptions: {},
4832                    originalInit: configurableOptionsComponent.init,
4833                    init() {
4834                        try {
4835                            this.precalcOptions = {};
4836                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
4837                            this.preselectQuerystringItems();
4838                            if (Array.isArray(attrSource)) {
4839                                attrSource.forEach(attr => {
4840                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
4841                                });
4842                            } else if (attrSource && typeof attrSource === 'object') {
4843                                Object.keys(attrSource).forEach(id => {
4844                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
4845                                });
4846                            }
4847                        } catch (e) {
4848                            console.error('Pre-calc error:', e);
4849                        }
4850
4851                        if (typeof this.originalInit === 'function') {
4852                            this.originalInit();
4853                        }
4854
4855                        try {
4856                            this.initShowSwatchesIntersect();
4857                        } catch (e) {
4858                            console.error('intersect error:', e);
4859                        }
4860                    },
4861
4862                    updateGallery() {
4863                        if (!this.productIndex) return;
4864
4865                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
4866                                method: 'GET',
4867                                headers: {
4868                                    'Content-Type': 'application/json',
4869                                    'X-Requested-With': 'XMLHttpRequest'
4870                                }
4871                            })
4872                            .then(response => response.json())
4873                            .then(data => {
4874                                if (data && data.medium) {
4875                                    window.dispatchEvent(new CustomEvent("update-gallery-47160", {
4876                                        detail: data.medium
4877                                    }));
4878                                }
4879                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
4880                    },
4881
4882
4883                    initShowSwatchesIntersect() {
4884                        const observer = new IntersectionObserver(entries => {
4885                            if (entries[0].isIntersecting) {
4886                                this.showSwatches = true;
4887                                observer.disconnect();
4888                            }
4889                        }, {
4890                            rootMargin: '512px'
4891                        });
4892                        observer.observe(this.$el);
4893                    },
4894                    getOptions(attrId) {
4895                        return this.precalcOptions[attrId] || [];
4896                    },
4897                    getOptionsByAttrId() {
4898                        return this.getOptions(this.$el.dataset.attributeId);
4899                    },
4900                    _getItemId() {
4901                        if (this.item && this.item.id) return this.item.id;
4902                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
4903                    },
4904                    getSwatchOptionHtmlId() {
4905                        const itemId = this._getItemId();
4906                        return itemId ? this.$id(`attribute-option-47160-${itemId}`) : '';
4907                    },
4908                    getSwatchOptionHtmlIdGroup() {
4909                        const itemId = this._getItemId();
4910                        return itemId ? [`attribute-option-47160-${itemId}`] : [];
4911                    },
4912                    getAttributeSwatchData(attributeId) {
4913                        const data = Object.assign({}, this.swatchConfig[attributeId]);
4914                        if (data['additional_data']) {
4915                            try {
4916                                data['details'] = JSON.parse(data['additional_data']);
4917                            } catch (e) {
4918                                data['details'] = {};
4919                            }
4920                        }
4921                        return data;
4922                    },
4923                    getSwatchType(attributeId, optionId) {
4924                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
4925                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
4926                        }
4927                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
4928                            this.swatchConfig[attributeId].details.swatch_input_type :
4929                            "empty";
4930                        if (type === 'visual') {
4931                            const config = this.swatchConfig[attributeId];
4932                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
4933                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
4934                            }
4935                            // Fallback to first option type
4936                            for (const oId in config) {
4937                                if (config[oId] && typeof config[oId].type !== 'undefined') {
4938                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
4939                                }
4940                            }
4941                        }
4942                        return type;
4943                    },
4944                    mapSwatchTypeNumberToTypeCode(type) {
4945                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
4946                    },
4947                    isTextSwatch() {
4948                        const itemId = this._getItemId();
4949                        if (!this.$el || !itemId) return false;
4950                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
4951                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
4952                    },
4953
4954                    getSwatchText() {
4955                        const itemId = this._getItemId();
4956                        if (this.item) return this.item.label || '';
4957                        if (!this.$el || !itemId) return '';
4958                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
4959                        const options = attrId ? this.getOptions(attrId) : [];
4960                        const opt = options.find(o => o.id == itemId);
4961                        return opt ? opt.label : '';
4962                    },
4963                    getSwatchBackgroundStyle() {
4964                        const itemId = this._getItemId();
4965                        if (!this.$el || !itemId) return '';
4966                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
4967                        if (!attrId) return '';
4968                        const type = this.getSwatchType(attrId, itemId);
4969                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
4970                            this.swatchConfig[attrId][itemId] :
4971                            null;
4972                        if (!swatchData) return '';
4973                        if (type === "color") return 'background-color:' + swatchData.value;
4974                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
4975                        return '';
4976                    },
4977                    swatchOptionClasses() {
4978                        const itemId = this._getItemId();
4979                        if (!this.$el || !itemId) return {};
4980                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
4981                        return {
4982                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
4983                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
4984                            'w-6 h-6': !this.isTextSwatch()
4985                        }
4986                    },
4987
4988                    onFocusSwatchItem() {
4989                        const itemId = this._getItemId();
4990                        if (itemId) this.focusedLabel = itemId;
4991                    },
4992                    onChangeOption() {
4993                        const itemId = this._getItemId();
4994                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
4995                        if (attrId && itemId) this.changeOption(attrId, itemId);
4996                    },
4997                    changeOption(attributeId, value) {
4998                        if (value === '') {
4999                            return;
5000                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
5001                        } else {
5002                            this.selectedValues[attributeId] = value;
5003                        }
5004
5005                        this.findSimpleIndex();
5006                        this.findAllowedAttributeOptions();
5007                        this.updatePrices();
5008                        this.updateGallery();
5009
5010                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
5011                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
5012
5013                        const eventDetail = {
5014                            productId: this.productId,
5015                            optionId: attributeId,
5016                            value: value,
5017                            productIndex: this.productIndex || 0,
5018                            selectedValues: this.selectedValues,
5019                            candidates: candidates,
5020                            sourceElement: this.$el
5021                        };
5022
5023                        // Dispatch for Amasty
5024                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
5025                            detail: eventDetail
5026                        }));
5027
5028                        // Dispatch for Hyva listing
5029                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
5030                            detail: eventDetail
5031                        }));
5032                    },
5033
5034
5035                    clearOptionIfActive() {
5036                        const itemId = this._getItemId();
5037                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
5038                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
5039                            this.changeOption(attrId, '');
5040
5041                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
5042                            if (!input && this.$el?.querySelector) {
5043                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
5044                            }
5045                            if (!input && this.$el?.closest) {
5046                                const root = this.$el.closest('[data-product-id]') || this.$el;
5047                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
5048                            }
5049                            if (input) {
5050                                input.checked = false;
5051                            }
5052                        }
5053                    },
5054                    get optionIsEnabled() {
5055                        const itemId = this._getItemId();
5056                        if (!this.$el || !itemId) return true;
5057                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
5058                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
5059                        return !!allowedOptions.find(opt => opt.id == itemId);
5060                    },
5061                    get isSelected() {
5062                        const itemId = this._getItemId();
5063                        if (!this.$el || !itemId) return false;
5064                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
5065                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
5066                    },
5067                    get isSwatchRequired() {
5068                        if (!this.$el) return false;
5069                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
5070                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
5071                    },
5072                    focusedLabel: false,
5073                    activeTooltipItem: false,
5074                    tooltipPositionElement: false,
5075                    setActiveTooltipItem() {
5076                        const itemId = this._getItemId();
5077                        if (!this.$el || !itemId) return;
5078                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
5079                        this.activeTooltipItem = {
5080                            attribute: attrId,
5081                            item: itemId,
5082                            index: 0
5083                        };
5084                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
5085                    },
5086                    unsetActiveTooltipItem() {
5087                        this.activeTooltipItem = false;
5088                    }
5089                },
5090                confProdPreSelect()
5091            );
5092
5093            if (result.optionConfig && result.optionConfig.attributes) {
5094                const attributes = result.optionConfig.attributes;
5095                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
5096                    let source = attributes;
5097                    if (Array.isArray(attributes)) {
5098                        source = {};
5099                        attributes.forEach(attr => {
5100                            if (attr && attr.id) source[attr.id] = attr;
5101                        });
5102                    }
5103                    const values = Object.values(source);
5104                    const wrapper = Object.assign(values, source);
5105                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
5106                        value: true,
5107                        enumerable: false
5108                    });
5109                    result.optionConfig.attributes = wrapper;
5110                }
5111            }
5112
5113            return result;
5114        }
5115
5116        window.addEventListener('alpine:init', () => {
5117            Alpine.data('initConfigurableSwatchOptions_47160', initConfigurableSwatchOptions_47160);
5118        }, {
5119            once: true
5120        });
5121    </script>
5121
5122    
5123    <div x-data="initConfigurableSwatchOptions_47160" x-defer="intersect">
5124        <div class="pagebuilder-home-hidden">
5125                                            
5126                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
5127                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
5128                        <template x-if="showSwatches">
5129                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-47160-163" role="radiogroup" aria-label="Einband">
5130                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
5131                                    <div :data-option-id="item.id" style="display: contents">
5132                                        <div x-id="getSwatchOptionHtmlIdGroup">
5133    <template x-if="optionIsEnabled">
5134        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
5134self="unsetActiveTooltipItem">
5135            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-47160-163">
5136            <div>
5137                <template x-if="isTextSwatch">
5138                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
5139                </template>
5140                <template x-if="!optionIsActive(163, item.id)">
5141                    <div>
5142                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
5143                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
5144                        </svg>
5145                    </div>
5146                </template>
5147            </div>
5148        </label>
5149    </template>
5150</div>                                    </div>
5151                                </template>
5152                            </div>
5153                        </template>
5154                    </div>
5155                </div>
5156                    </div>
5157    </div>
5158            
5159                                                <div class="meta py-4 pagebuilder-home-hidden">
5160                <div x-data="initMarketingShortText_47160()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
5161                    <!-- Marketing short text -->
5162                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
5163                    </div>
5164
5165                    <!-- Short description -->
5166                                                                <div class="short-description">
5167                            Thomas Oehl zeigt in seinem Buch in Auseinandersetzung mit Hegels (und Adornos) Philosophie, dass und wie Materie als aktiv gedacht werden kann.
5168
5169Die Idee einer Aktivit&auml;t der Materie zieht sich ...                            <a href="https://meiner.de/fmv_de/materie-als-aktives-gegena-ber-des-subjekts-22892" class="underline">mehr</a>
5170                        </div>
5171                                    </div>
5172
5173                <!-- Series  -->
5174                                    <div class="mb-1">
5175                        <span class="sr-only">Reihe:</span>
5176                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
5177                            <span>Blaue Reihe</span>
5178                        </a>
5179                                            </div>
5180                
5181                
5182                                                    <div class="mb-1">
5183                        <span x-data="initEditionText_47160()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
5184                            <!-- Marketing short text -->
5185                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 134 Seiten.                        </span>
5186                    </div>
5187                
5188                            </div>
5189            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
5190                
5191                <div class="justify-end" x-data="initPriceBox()" @update-prices-47160.window="updatePrice($event.detail);">
5192                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="47160" data-price-box="product-id-47160"><span class="normal-price">
5193    <span x-data x-id="['product\u002Dprice\u002D47160']" class="price-container price-final_price tax weee">
5194            <span class="price-label">Ab</span>
5195                <span class="approx-price">ca. </span>
5196        <span :id="$id('product\u002Dprice\u002D47160')" data-price-amount="16.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">16,99&nbsp;&euro;</span></span>
5197        </span>
5198</span>
5199
5200
5201</div>                </div>
5202
5203                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
5204                                            <div class="open-access-container open-access-container-47160                    flex mt-4 ml-auto sm:mt-0 hidden">
5205                            <div class="text-gray-700">
5206                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
5207                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
5208                                        Kostenlos online lesen                                    </a>
5209                                </button>
5210                            </div>
5211                        </div>
5212                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Materie als aktives Gegen&uuml;ber des Subjekts" aria-label="In den Warenkorb Materie als aktives Gegen&uuml;ber des Subjekts" data-addto="cart">
5213                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
5214  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
52140 014 0z"></path>
5215</svg>
5216                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
5217                                        In den Warenkorb                                    </span>
5218                                </button>
5219                                                                                                                    
5220<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(47160)" aria-label="Zur Wunschliste hinzuf&uuml;gen Materie als aktives Gegen&uuml;ber des Subjekts" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
5221    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
5222  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
5223</svg>
5224</button>
5225                                    </div>
5226            </div>
5227        </div>
5228        
5228<script>
5229            function initMarketingShortText_47160() {
5230                var marketingShortTextConfig = {};
5231                if (typeof window.initConfigurableSwatchOptions_47160 === "function") {
5232                    var fullConfig = window.initConfigurableSwatchOptions_47160().optionConfig
5233                    var marketingShortTextConfig = fullConfig.marketing_short_text;
5234                }
5235                return {
5236                    marketingShortText: '',
5237                    config: marketingShortTextConfig,
5238                    productId: '47160',
5239                    getMarketingShortText(detail) {
5240                        this.marketingShortText = detail.productIndex ?
5241                            this.config[detail.productIndex] :
5242                            null;
5243                    },
5244                    eventListeners: {
5245                        ['@listing-configurable-selection-changed.window'](event) {
5246                            if (this.productId == event.detail.productId) {
5247                                this.getMarketingShortText(event.detail);
5248                            }
5249
5250                        }
5251                    }
5252                }
5253            }
5254
5255            function initEditionText_47160() {
5256                var editionTextConfig = {};
5257                if (typeof window.initConfigurableSwatchOptions_47160 === "function") {
5258                    var fullConfig = window.initConfigurableSwatchOptions_47160().optionConfig
5259                    var editionTextConfig = fullConfig.edition;
5260                }
5261                return {
5262                    editionText: '',
5263                    config: editionTextConfig,
5264                    productId: '47160',
5265                    getEditionText(detail) {
5266                        this.editionText = detail.productIndex ?
5267                            this.config[detail.productIndex] :
5268                            null;
5269                    },
5270                    eventListeners: {
5271                        ['@listing-configurable-selection-changed.window'](event) {
5272                            if (this.productId == event.detail.productId) {
5273                                this.getEditionText(event.detail);
5274                            }
5275
5276                        }
5277                    }
5278                }
5279            }
5280        </script>
5280
5281                    </form>
5282                            
5283    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/46708/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21370">
5284        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="46708">
5285                                    <a href="https://meiner.de/fmv_de/der-briefwechsel-mit-constantijn-huygens-21370" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
5286            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-46708.window="$el.src = $event.detail" alt="Der Briefwechsel mit Constantijn Huygens" title="Der Briefwechsel mit Constantijn Huygens" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351060_1.jpg" :style="{
5287                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
5288                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
5289            }">
5290                    </a>
5291        <div class="product-info flex flex-col flex-grow ">
5292                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
5293                                    <div class="mb-2 text-sm text-gray-500 font-medium">
5294                                                                                    <a href="https://meiner.de/fmv_de/person/Rene-Descartes-3688/" class="mb-2">
5295                                    Ren&eacute; Descartes                                                                    </a>
5296                                                                                                                                    </div>
5297                                <a class="product-item-link" href="https://meiner.de/fmv_de/der-briefwechsel-mit-constantijn-huygens-21370">
5298                    Der Briefwechsel mit Constantijn Huygens                </a>
5299                            </div>
5300
5301            <div x-data="initEditionText_46708()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
5302                <!-- Marketing short text -->
5303                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
5304                </div>
5305            </div>
5306
5307                            <div class="py-1 grid  mb-4 ">
5308                    
5309                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":46708,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":46708,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46502":"1","46771":"1"},"childProductsAlertStatus":{"46502":"0","46771":"0"},"indexMapping":{"163:17":46502,"163:8":46771},"availabilityMessages":{"46502":"Lieferbar innerhalb von 3-5 Tagen","46771":"Download sofort  verf\u00fcgbar"},"openAccess":{"46708":{"status":0},"46502":{"status":0},"46771":{"status":0}}},"availabilityMessages":{"46502":"Lieferbar innerhalb von 3-5 Tagen","46771":"Download sofort  verf\u00fcgbar"},"openAccess":{"46708":{"status":0},"46502":{"status":0},"46771":{"status":0}}}'>
5310        <template x-if="containerVisible">
5311                            <!-- Popup Trigger -->
5312                <div>
5313                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
5314                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
5315                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
5316  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
5317<title>bell</title></svg>
5318</span>
5319                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
5320
5321                    <!-- Popup Modal -->
5322                    <template x-if="showModal">
5323                        <template x-teleport=".page-wrapper">
5324                            <div x-cloak class="fixed inset-0 flex items-center justify-center
5325                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
5326                                <div class="relative bg-white rounded-lg shadow-xl
5327                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
5328                                    <div class="p-6">
5329                                        <!-- Subscription Form for Popup -->
5330                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
5331                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
5332                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
5333                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
5334
5335                                            <div class="flex flex-col gap-3">
5336                                                <div class="flex-grow grow">
5337                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
5338                                                        shadow-xs focus:outline-none focus:outline-hidden
5339                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
5340                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
5341                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
5342                                                </div>
5343                                                <input type="hidden" name="product_id" :value="currentProductId">
5344                                                <input type="hidden" name="type" value="email">
5345
5346                                                
5347                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
5348
5349                                                <div class="amxnotif_guest_action">
5350                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
5351                                                        rounded-md focus:outline-none
5352                                                        focus:outline-hidden focus:ring-2
5353                                                        focus:ring-offset-2 disabled:opacity-50
5354                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
5355                                                        Benachrichtigen                                                    </button>
5356                                                </div>
5357                                            </div>
5358
5359                                                                                            <div class="flex items-start pt-2">
5360                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
5361                                                        text-blue-600 border-gray-300 rounded-sm">
5362                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
5363                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
5364                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
5365                                                </div>
5366                                                                                    </form>
5367                                    </div>
5368
5369                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
5370                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
5371                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
5372  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
5373<title>x</title></svg>
5374                                    </button>
5375                                </div>
5376                            </div>
5377                        </template>
5378                    </template>
5379                </div>
5380                    </template>
5381    </div>
5382
5383<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_46708" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":46708,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46502":"1","46771":"1"},"childProductsAlertStatus":{"46502":"0","46771":"0"},"indexMapping":"{\u0022163:17\u0022:46502,\u0022163:8\u0022:46771}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":46708,"availabilityMessages":{"46502":"Lieferbar innerhalb von 3-5 Tagen","46771":"Download sofort  verf\u00fcgbar"},"openAccess":{"46708":{"status":0},"46502":{"status":0},"46771":{"status":0}}}'>
5384    
5385    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
5386        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
5387        <span x-html="optionsLabelText"></span>
5388    </p>
5389</div>                </div>
5390            
5391                                
5391<script>
5392        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
5393            try {
5394                const attributes = (config && config.attributes) ? config.attributes : null;
5395                if (!attributes) return [];
5396                let attr = null;
5397                if (Array.isArray(attributes)) {
5398                    for (let i = 0; i < attributes.length; i++) {
5399                        const a = attributes[i];
5400                        if (a && a.id == attrId) {
5401                            attr = a;
5402                            break;
5403                        }
5404                    }
5405                } else {
5406                    attr = attributes[attrId];
5407                }
5408                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
5409            } catch (e) {
5410                return [];
5411            }
5412        };
5413
5414        function initConfigurableSwatchOptions_46708() {
5415            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"17","label":"Leinen","products":["46502"]},{"id":"8","label":"PDF","products":["46771"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46502":{"baseOldPrice":{"amount":83.177569093458},"oldPrice":{"amount":89},"basePrice":{"amount":83.177569093458},"finalPrice":{"amount":89},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46771":{"baseOldPrice":{"amount":63.542055074766},"oldPrice":{"amount":67.99},"basePrice":{"amount":63.542055074766},"finalPrice":{"amount":67.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":63.542055074766},"oldPrice":{"amount":67.99},"basePrice":{"amount":57.134452781513},"finalPrice":{"amount":67.99},"isApproxPrice":null},"productId":"46708","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46502":{"163":"17"},"46771":{"163":"8"}},"salable":{"163":{"17":["46502"],"8":["46771"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"46502":"005105","46771":"005106"},"output":{"46502":"Leinen","46771":"PDF"},"original_name":{"46502":"","46771":""},"openaccess_license_link":{"46502":"","46771":""},"openaccess_license_name":{"46502":"","46771":""},"openaccess_external_link":{"46502":"","46771":""},"gpsr_safety_info":{"46502":"","46771":""},"description":{"46502":"Mit diesem Band liegt Descartes\u2019 umfangreicher Briefwechsel mit seinem langj\u00e4hrigen Freund Constantijn Huygens (1596\u20131687), dem Dichter, Musiker und vielseitig wissenschaftlich interessierten Diplomaten im Dienst des Hauses Oranien-Nassau, erstmals auf Deutsch vor.<br\/><br\/>Dieser Band in der Reihe der kongenialen Neu\u00fcbersetzungen des Descartes\u2019schen Werks durch Christian Wohlers enth\u00e4lt Briefe von und an Ren\u00e9 Descartes aus der Zeit von 1631 bis 1649, also \u00fcber fast die gesamte Zeit seines Aufenthalts in den Niederlanden bis kurz vor seinem Tod 1650 in Stockholm. Den gr\u00f6\u00dften Anteil daran macht der erhaltene Teil des Briefwechsels mit Huygens aus. Constantijn Huygens gilt als einer der bedeutendsten Dichter der Niederlande im 17. Jahrhundert, aber er spielte auch mehrere Instrumente, komponierte hunderte von St\u00fccken und war vielseitig wissenschaftlich interessiert, vor allem hinsichtlich der Optik. Der Briefwechsel dokumentiert u. a. seine vielf\u00e4ltigen Anregungen und Hilfestellungen in Bezug auf die ja auch von Descartes mit Nachdruck betriebenen Versuche einer Weiterentwicklung des Teleskops.<br\/><br\/>Hinzugenommen wurden weitere Korrespondenzen Descartes\u2019, u. a. mit David le Leu de Wilhelm, dem Mathematiker und Orientalisten Jacob Golius, einzelne St\u00fccke aus Descartes\u2019 Korrespondenz mit Alphonse Pollot und Briefe Descartes\u2019 an seinen langj\u00e4hrigen Freund Anton Studler van Surck.","46771":"Mit diesem Band liegt Descartes\u2019 umfangreicher Briefwechsel mit seinem langj\u00e4hrigen Freund Constantijn Huygens (1596\u20131687), dem Dichter, Musiker und vielseitig wissenschaftlich interessierten Diplomaten im Dienst des Hauses Oranien-Nassau, erstmals auf Deutsch vor.<br\/><br\/>Dieser Band in der Reihe der kongenialen Neu\u00fcbersetzungen des Descartes\u2019schen Werks durch Christian Wohlers enth\u00e4lt Briefe von und an Ren\u00e9 Descartes aus der Zeit von 1631 bis 1649, also \u00fcber fast die gesamte Zeit seines Aufenthalts in de
5415n Niederlanden bis kurz vor seinem Tod 1650 in Stockholm. Den gr\u00f6\u00dften Anteil daran macht der erhaltene Teil des Briefwechsels mit Huygens aus. Constantijn Huygens gilt als einer der bedeutendsten Dichter der Niederlande im 17. Jahrhundert, aber er spielte auch mehrere Instrumente, komponierte hunderte von St\u00fccken und war vielseitig wissenschaftlich interessiert, vor allem hinsichtlich der Optik. Der Briefwechsel dokumentiert u. a. seine vielf\u00e4ltigen Anregungen und Hilfestellungen in Bezug auf die ja auch von Descartes mit Nachdruck betriebenen Versuche einer Weiterentwicklung des Teleskops.<br\/><br\/>Hinzugenommen wurden weitere Korrespondenzen Descartes\u2019, u. a. mit David le Leu de Wilhelm, dem Mathematiker und Orientalisten Jacob Golius, einzelne St\u00fccke aus Descartes\u2019 Korrespondenz mit Alphonse Pollot und Briefe Descartes\u2019 an seinen langj\u00e4hrigen Freund Anton Studler van Surck."},"doi":{"46502":"","46771":"10.28937\/978-3-7873-5106-0"},"isbn":{"46502":"978-3-7873-5105-3","46771":"978-3-7873-5106-0"},"marketing_short_text":{"46502":"","46771":""},"recension_text":{"46502":"","46771":""},"language":{"46502":"","46771":""},"cover":{"46502":"Leinen","46771":""},"pages":{"46502":"XXXII, 442 Seiten.","46771":"XXXII, 442 Seiten."},"edition":{"46502":"","46771":"Unver\u00e4ndertes eBook der 1. Auflage von 2026"},"pod":{"46502":"Nein","46771":"Nein"},"copyright_year":{"46502":"","46771":""},"vlb_tix_link":{"46502":"https:\/\/neu.vlbtix.de\/products\/9783787351053?type=gtin","46771":""},"defaultValues":{"163":"17"}};
5416            const swatchConfig = {"163":{"17":{"type":"0","value":"Leinen","label":"Leinen"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
5417
5418            if (typeof window.amxnotif_wrap_attributes === 'function') {
5419                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
5420                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
5421            }
5422
5423            const configurableOptionsComponent = initConfigurableOptions(
5424                '46708',
5425                config
5426            );
5427            const swatchOptionsComponent = initSwatchOptions(
5428                swatchConfig
5429            );
5430
5431            // DWS - Configurable product preselect start
5432            const confProdPreSelect = () => {
5433                return {
5434                    preselectQuerystringItems() {
5435                        var data = {"id":"46502","output":"17"};
5436                        const urlQueryParams = new URLSearchParams(window.location.search);
5437
5438                                                this.$nextTick(() => {
5439                            setTimeout(() => {
5440                                const rootEl = this.$root || this.$el;
5441                                if (!rootEl) return;
5442
5443                                const applySelection = (attrCode, attrValue) => {
5444                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
5445
5446                                    const attributes = Object.values(this.optionConfig.attributes || {});
5447                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
5448
5449                                    if (targetAttr) {
5450                                        const attrId = String(targetAttr.id);
5451                                        const optionVal = String(attrValue);
5452
5453                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
5454
5455                                        if (inputEl) {
5456                                                                                        inputEl.click();
5457                                            inputEl.dispatchEvent(new Event('change', {
5458                                                bubbles: true
5459                                            }));
5460                                        } else {
5461                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
5462                                            if (selectEl) {
5463                                                selectEl.value = optionVal;
5464                                                selectEl.dispatchEvent(new Event('change', {
5465                                                    bubbles: true
5466                                                }));
5467                                            }
5468                                        }
5469
5470                                                                                this.changeOption(attrId, optionVal, false);
5471                                    }
5472                                };
5473
5474                                                                if (data && typeof data === 'object') {
5475                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
5476                                }
5477
5478                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
5479                                    if (attribute && attribute.code) {
5480                                        let optionValue = urlQueryParams.get(attribute.code);
5481                                        if (optionValue) {
5482                                            let optionId = false;
5483                                            const attributes = Object.values(this.optionConfig.attributes || {});
5484                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
5485
5486                                            let found = false;
5487                                            Object.values(targetAttr.options).map(option => {
5488                                                if (found === false && option.label === optionValue) {
5489                                                    optionId = option.id;
5490                                                    found = true;
5491                                                }
5492                                            });
5493
5494                                            const attrId = String(targetAttr.id);
5495                                            let optionVal = String(optionValue);
5496                                            if (found) {
5497                                                optionVal = String(optionId);
5498                                            }
5499
5500                                            applySelection(attribute.code, optionVal);
5501                                        }
5502                                    }
5503                                });
5504                            }, 100);
5505                        });
5506                    }
5507                }
5508            };
5509            // DWS - Configurable product preselect end
5510
5511            const result = Object.assign(
5512                configurableOptionsComponent,
5513                swatchOptionsComponent, {
5514                    productId: '46708',
5515                    productIndex: 0,
5516                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
5517                    showSwatches: false,
5518                    precalcOptions: {},
5519                    originalInit: configurableOptionsComponent.init,
5520                    init() {
5521                        try {
5522                            this.precalcOptions = {};
5523                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
5524                            this.preselectQuerystringItems();
5525                            if (Array.isArray(attrSource)) {
5526                                attrSource.forEach(attr => {
5527                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
5528                                });
5529                            } else if (attrSource && typeof attrSource === 'object') {
5530                                Object.keys(attrSource).forEach(id => {
5531                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
5532                                });
5533                            }
5534                        } catch (e) {
5535                            console.error('Pre-calc error:', e);
5536                        }
5537
5538                        if (typeof this.originalInit === 'function') {
5539                            this.originalInit();
5540                        }
5541
5542                        try {
5543                            this.initShowSwatchesIntersect();
5544                        } catch (e) {
5545                            console.error('intersect error:', e);
5546                        }
5547                    },
5548
5549                    updateGallery() {
5550                        if (!this.productIndex) return;
5551
5552                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
5553                                method: 'GET',
5554                                headers: {
5555                                    'Content-Type': 'application/json',
5556                                    'X-Requested-With': 'XMLHttpRequest'
5557                                }
5558                            })
5559                            .then(response => response.json())
5560                            .then(data => {
5561                                if (data && data.medium) {
5562                                    window.dispatchEvent(new CustomEvent("update-gallery-46708", {
5563                                        detail: data.medium
5564                                    }));
5565                                }
5566                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
5567                    },
5568
5569
5570                    initShowSwatchesIntersect() {
5571                        const observer = new IntersectionObserver(entries => {
5572                            if (entries[0].isIntersecting) {
5573                                this.showSwatches = true;
5574                                observer.disconnect();
5575                            }
5576                        }, {
5577                            rootMargin: '512px'
5578                        });
5579                        observer.observe(this.$el);
5580                    },
5581                    getOptions(attrId) {
5582                        return this.precalcOptions[attrId] || [];
5583                    },
5584                    getOptionsByAttrId() {
5585                        return this.getOptions(this.$el.dataset.attributeId);
5586                    },
5587                    _getItemId() {
5588                        if (this.item && this.item.id) return this.item.id;
5589                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
5590                    },
5591                    getSwatchOptionHtmlId() {
5592                        const itemId = this._getItemId();
5593                        return itemId ? this.$id(`attribute-option-46708-${itemId}`) : '';
5594                    },
5595                    getSwatchOptionHtmlIdGroup() {
5596                        const itemId = this._getItemId();
5597                        return itemId ? [`attribute-option-46708-${itemId}`] : [];
5598                    },
5599                    getAttributeSwatchData(attributeId) {
5600                        const data = Object.assign({}, this.swatchConfig[attributeId]);
5601                        if (data['additional_data']) {
5602                            try {
5603                                data['details'] = JSON.parse(data['additional_data']);
5604                            } catch (e) {
5605                                data['details'] = {};
5606                            }
5607                        }
5608                        return data;
5609                    },
5610                    getSwatchType(attributeId, optionId) {
5611                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
5612                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
5613                        }
5614                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
5615                            this.swatchConfig[attributeId].details.swatch_input_type :
5616                            "empty";
5617                        if (type === 'visual') {
5618                            const config = this.swatchConfig[attributeId];
5619                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
5620                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
5621                            }
5622                            // Fallback to first option type
5623                            for (const oId in config) {
5624                                if (config[oId] && typeof config[oId].type !== 'undefined') {
5625                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
5626                                }
5627                            }
5628                        }
5629                        return type;
5630                    },
5631                    mapSwatchTypeNumberToTypeCode(type) {
5632                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
5633                    },
5634                    isTextSwatch() {
5635                        const itemId = this._getItemId();
5636                        if (!this.$el || !itemId) return false;
5637                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
5638                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
5639                    },
5640
5641                    getSwatchText() {
5642                        const itemId = this._getItemId();
5643                        if (this.item) return this.item.label || '';
5644                        if (!this.$el || !itemId) return '';
5645                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
5646                        const options = attrId ? this.getOptions(attrId) : [];
5647                        const opt = options.find(o => o.id == itemId);
5648                        return opt ? opt.label : '';
5649                    },
5650                    getSwatchBackgroundStyle() {
5651                        const itemId = this._getItemId();
5652                        if (!this.$el || !itemId) return '';
5653                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
5654                        if (!attrId) return '';
5655                        const type = this.getSwatchType(attrId, itemId);
5656                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
5657                            this.swatchConfig[attrId][itemId] :
5658                            null;
5659                        if (!swatchData) return '';
5660                        if (type === "color") return 'background-color:' + swatchData.value;
5661                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
5662                        return '';
5663                    },
5664                    swatchOptionClasses() {
5665                        const itemId = this._getItemId();
5666                        if (!this.$el || !itemId) return {};
5667                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
5668                        return {
5669                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
5670                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
5671                            'w-6 h-6': !this.isTextSwatch()
5672                        }
5673                    },
5674
5675                    onFocusSwatchItem() {
5676                        const itemId = this._getItemId();
5677                        if (itemId) this.focusedLabel = itemId;
5678                    },
5679                    onChangeOption() {
5680                        const itemId = this._getItemId();
5681                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
5682                        if (attrId && itemId) this.changeOption(attrId, itemId);
5683                    },
5684                    changeOption(attributeId, value) {
5685                        if (value === '') {
5686                            return;
5687                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
5688                        } else {
5689                            this.selectedValues[attributeId] = value;
5690                        }
5691
5692                        this.findSimpleIndex();
5693                        this.findAllowedAttributeOptions();
5694                        this.updatePrices();
5695                        this.updateGallery();
5696
5697                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
5698                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
5699
5700                        const eventDetail = {
5701                            productId: this.productId,
5702                            optionId: attributeId,
5703                            value: value,
5704                            productIndex: this.productIndex || 0,
5705                            selectedValues: this.selectedValues,
5706                            candidates: candidates,
5707                            sourceElement: this.$el
5708                        };
5709
5710                        // Dispatch for Amasty
5711                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
5712                            detail: eventDetail
5713                        }));
5714
5715                        // Dispatch for Hyva listing
5716                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
5717                            detail: eventDetail
5718                        }));
5719                    },
5720
5721
5722                    clearOptionIfActive() {
5723                        const itemId = this._getItemId();
5724                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
5725                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
5726                            this.changeOption(attrId, '');
5727
5728                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
5729                            if (!input && this.$el?.querySelector) {
5730                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
5731                            }
5732                            if (!input && this.$el?.closest) {
5733                                const root = this.$el.closest('[data-product-id]') || this.$el;
5734                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
5735                            }
5736                            if (input) {
5737                                input.checked = false;
5738                            }
5739                        }
5740                    },
5741                    get optionIsEnabled() {
5742                        const itemId = this._getItemId();
5743                        if (!this.$el || !itemId) return true;
5744                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
5745                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
5746                        return !!allowedOptions.find(opt => opt.id == itemId);
5747                    },
5748                    get isSelected() {
5749                        const itemId = this._getItemId();
5750                        if (!this.$el || !itemId) return false;
5751                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
5752                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
5753                    },
5754                    get isSwatchRequired() {
5755                        if (!this.$el) return false;
5756                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
5757                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
5758                    },
5759                    focusedLabel: false,
5760                    activeTooltipItem: false,
5761                    tooltipPositionElement: false,
5762                    setActiveTooltipItem() {
5763                        const itemId = this._getItemId();
5764                        if (!this.$el || !itemId) return;
5765                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
5766                        this.activeTooltipItem = {
5767                            attribute: attrId,
5768                            item: itemId,
5769                            index: 0
5770                        };
5771                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
5772                    },
5773                    unsetActiveTooltipItem() {
5774                        this.activeTooltipItem = false;
5775                    }
5776                },
5777                confProdPreSelect()
5778            );
5779
5780            if (result.optionConfig && result.optionConfig.attributes) {
5781                const attributes = result.optionConfig.attributes;
5782                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
5783                    let source = attributes;
5784                    if (Array.isArray(attributes)) {
5785                        source = {};
5786                        attributes.forEach(attr => {
5787                            if (attr && attr.id) source[attr.id] = attr;
5788                        });
5789                    }
5790                    const values = Object.values(source);
5791                    const wrapper = Object.assign(values, source);
5792                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
5793                        value: true,
5794                        enumerable: false
5795                    });
5796                    result.optionConfig.attributes = wrapper;
5797                }
5798            }
5799
5800            return result;
5801        }
5802
5803        window.addEventListener('alpine:init', () => {
5804            Alpine.data('initConfigurableSwatchOptions_46708', initConfigurableSwatchOptions_46708);
5805        }, {
5806            once: true
5807        });
5808    </script>
5808
5809    
5810    <div x-data="initConfigurableSwatchOptions_46708" x-defer="intersect">
5811        <div class="pagebuilder-home-hidden">
5812                                            
5813                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
5814                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
5815                        <template x-if="showSwatches">
5816                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-46708-163" role="radiogroup" aria-label="Einband">
5817                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
5818                                    <div :data-option-id="item.id" style="display: contents">
5819                                        <div x-id="getSwatchOptionHtmlIdGroup">
5820    <template x-if="optionIsEnabled">
5821        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
5821self="unsetActiveTooltipItem">
5822            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-46708-163">
5823            <div>
5824                <template x-if="isTextSwatch">
5825                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
5826                </template>
5827                <template x-if="!optionIsActive(163, item.id)">
5828                    <div>
5829                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
5830                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
5831                        </svg>
5832                    </div>
5833                </template>
5834            </div>
5835        </label>
5836    </template>
5837</div>                                    </div>
5838                                </template>
5839                            </div>
5840                        </template>
5841                    </div>
5842                </div>
5843                    </div>
5844    </div>
5845            
5846                                                <div class="meta py-4 pagebuilder-home-hidden">
5847                <div x-data="initMarketingShortText_46708()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
5848                    <!-- Marketing short text -->
5849                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
5850                    </div>
5851
5852                    <!-- Short description -->
5853                                                                <div class="short-description">
5854                            Mit diesem Band liegt Descartes&rsquo; umfangreicher Briefwechsel mit seinem langj&auml;hrigen Freund Constantijn Huygens (1596&ndash;1687), dem Dichter, Musiker und vielseitig wissenschaftlich interessierten ...                            <a href="https://meiner.de/fmv_de/der-briefwechsel-mit-constantijn-huygens-21370" class="underline">mehr</a>
5855                        </div>
5856                                    </div>
5857
5858                <!-- Series  -->
5859                                    <div class="mb-1">
5860                        <span class="sr-only">Reihe:</span>
5861                        <a href="https://meiner.de/fmv_de/programm/reihen/philosophische-bibliothek">
5862                            <span>Philosophische Bibliothek</span>
5863                        </a>
5864                                                    789                                            </div>
5865                
5866                
5867                                                    <div class="mb-1">
5868                        <span x-data="initEditionText_46708()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
5869                            <!-- Marketing short text -->
5870                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, XXXII, 442 Seiten.                        </span>
5871                    </div>
5872                
5873                            </div>
5874            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
5875                
5876                <div class="justify-end" x-data="initPriceBox()" @update-prices-46708.window="updatePrice($event.detail);">
5877                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="46708" data-price-box="product-id-46708"><span class="normal-price">
5878    <span x-data x-id="['product\u002Dprice\u002D46708']" class="price-container price-final_price tax weee">
5879            <span class="price-label">Ab</span>
5880                <span class="approx-price">ca. </span>
5881        <span :id="$id('product\u002Dprice\u002D46708')" data-price-amount="67.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">67,99&nbsp;&euro;</span></span>
5882        </span>
5883</span>
5884
5885
5886</div>                </div>
5887
5888                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
5889                                            <div class="open-access-container open-access-container-46708                    flex mt-4 ml-auto sm:mt-0 hidden">
5890                            <div class="text-gray-700">
5891                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
5892                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
5893                                        Kostenlos online lesen                                    </a>
5894                                </button>
5895                            </div>
5896                        </div>
5897                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Der Briefwechsel mit Constantijn Huygens" aria-label="In den Warenkorb Der Briefwechsel mit Constantijn Huygens" data-addto="cart">
5898                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
5899  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
5900</svg>
5901                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
5902                                        In den Warenkorb                                    </span>
5903                                </button>
5904                                                                                                                    
5905<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(46708)" aria-label="Zur Wunschliste hinzuf&uuml;gen Der Briefwechsel mit Constantijn Huygens" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
5906    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
5907  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
5908</svg>
5909</button>
5910                                    </div>
5911            </div>
5912        </div>
5913        
5913<script>
5914            function initMarketingShortText_46708() {
5915                var marketingShortTextConfig = {};
5916                if (typeof window.initConfigurableSwatchOptions_46708 === "function") {
5917                    var fullConfig = window.initConfigurableSwatchOptions_46708().optionConfig
5918                    var marketingShortTextConfig = fullConfig.marketing_short_text;
5919                }
5920                return {
5921                    marketingShortText: '',
5922                    config: marketingShortTextConfig,
5923                    productId: '46708',
5924                    getMarketingShortText(detail) {
5925                        this.marketingShortText = detail.productIndex ?
5926                            this.config[detail.productIndex] :
5927                            null;
5928                    },
5929                    eventListeners: {
5930                        ['@listing-configurable-selection-changed.window'](event) {
5931                            if (this.productId == event.detail.productId) {
5932                                this.getMarketingShortText(event.detail);
5933                            }
5934
5935                        }
5936                    }
5937                }
5938            }
5939
5940            function initEditionText_46708() {
5941                var editionTextConfig = {};
5942                if (typeof window.initConfigurableSwatchOptions_46708 === "function") {
5943                    var fullConfig = window.initConfigurableSwatchOptions_46708().optionConfig
5944                    var editionTextConfig = fullConfig.edition;
5945                }
5946                return {
5947                    editionText: '',
5948                    config: editionTextConfig,
5949                    productId: '46708',
5950                    getEditionText(detail) {
5951                        this.editionText = detail.productIndex ?
5952                            this.config[detail.productIndex] :
5953                            null;
5954                    },
5955                    eventListeners: {
5956                        ['@listing-configurable-selection-changed.window'](event) {
5957                            if (this.productId == event.detail.productId) {
5958                                this.getEditionText(event.detail);
5959                            }
5960
5961                        }
5962                    }
5963                }
5964            }
5965        </script>
5965
5966                    </form>
5967                            
5968    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/9375/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk15888">
5969        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="9375">
5970                                    <a href="https://meiner.de/fmv_de/rollenspiel-theatrales-philosophieren-musik-und-videoclips-im-philosophie-und-ethikunterricht-15888" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
5971            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-9375.window="$el.src = $event.detail" alt="Rollenspiel, theatrales Philosophieren, Musik und Videoclips im Philosophie- und Ethikunterricht" title="Rollenspiel, theatrales Philosophieren, Musik und Videoclips im Philosophie- und Ethikunterricht" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787336661_6.jpg" :style="{
5972                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
5973                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
5974            }">
5975                    </a>
5976        <div class="product-info flex flex-col flex-grow ">
5977                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
5978                                    <div class="mb-2 text-sm text-gray-500 font-medium">
5979                                                                                    <a href="https://meiner.de/fmv_de/person/Jorg-Peters-3207/" class="mb-2">
5980                                    J&ouml;rg Peters                                                                    </a>
5981                                                                    <span>|</span>
5982                                                                                            <a href="https://meiner.de/fmv_de/person/Martina-Peters-3206/" class="mb-2">
5983                                    Martina Peters                                                                            (Hrsg.)
5984                                                                    </a>
5985                                                                                                                                    </div>
5986                                <a class="product-item-link" href="https://meiner.de/fmv_de/rollenspiel-theatrales-philosophieren-musik-und-videoclips-im-philosophie-und-ethikunterricht-15888">
5987                    Rollenspiel, theatrales Philosophieren, Musik und Videoclips im Philosophie- und Ethikunterricht                </a>
5988                            </div>
5989
5990            <div x-data="initEditionText_9375()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
5991                <!-- Marketing short text -->
5992                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
5993                </div>
5994            </div>
5995
5996                            <div class="py-1 grid  mb-4 ">
5997                    
5998                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":9375,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":9375,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"7618":"1","7619":"1","40009":"1"},"childProductsAlertStatus":{"7618":"0","7619":"0","40009":"0"},"indexMapping":{"163:15":7618,"163:8":7619,"163:9":40009},"availabilityMessages":{"7618":"Lieferbar innerhalb von 3-5 Tagen","7619":"Download sofort  verf\u00fcgbar","40009":"Download sofort  verf\u00fcgbar"},"openAccess":{"9375":{"status":0}
5998,"7618":{"status":0},"7619":{"status":0},"40009":{"status":0}}},"availabilityMessages":{"7618":"Lieferbar innerhalb von 3-5 Tagen","7619":"Download sofort  verf\u00fcgbar","40009":"Download sofort  verf\u00fcgbar"},"openAccess":{"9375":{"status":0},"7618":{"status":0},"7619":{"status":0},"40009":{"status":0}}}'>
5999        <template x-if="containerVisible">
6000                            <!-- Popup Trigger -->
6001                <div>
6002                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
6003                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
6004                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
6005  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
6006<title>bell</title></svg>
6007</span>
6008                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
6009
6010                    <!-- Popup Modal -->
6011                    <template x-if="showModal">
6012                        <template x-teleport=".page-wrapper">
6013                            <div x-cloak class="fixed inset-0 flex items-center justify-center
6014                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
6015                                <div class="relative bg-white rounded-lg shadow-xl
6016                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
6017                                    <div class="p-6">
6018                                        <!-- Subscription Form for Popup -->
6019                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
6020                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
6021                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
6022                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
6023
6024                                            <div class="flex flex-col gap-3">
6025                                                <div class="flex-grow grow">
6026                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
6027                                                        shadow-xs focus:outline-none focus:outline-hidden
6028                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
6029                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
6030                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
6031                                                </div>
6032                                                <input type="hidden" name="product_id" :value="currentProductId">
6033                                                <input type="hidden" name="type" value="email">
6034
6035                                                
6036                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
6037
6038                                                <div class="amxnotif_guest_action">
6039                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
6040                                                        rounded-md focus:outline-none
6041                                                        focus:outline-hidden focu
6041s:ring-2
6042                                                        focus:ring-offset-2 disabled:opacity-50
6043                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
6044                                                        Benachrichtigen                                                    </button>
6045                                                </div>
6046                                            </div>
6047
6048                                                                                            <div class="flex items-start pt-2">
6049                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
6050                                                        text-blue-600 border-gray-300 rounded-sm">
6051                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
6052                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
6053                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
6054                                                </div>
6055                                                                                    </form>
6056                                    </div>
6057
6058                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
6059                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
6060                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
6061  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
6062<title>x</title></svg>
6063                                    </button>
6064                                </div>
6065                            </div>
6066                        </template>
6067                    </template>
6068                </div>
6069                    </template>
6070    </div>
6071
6072<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_9375" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":9375,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"7618":"1","7619":"1","40009":"1"},"childProductsAlertStatus":{"7618":"0","7619":"0","40009":"0"},"indexMapping":"{\u0022163:15\u0022:7618,\u0022163:8\u0022:7619,\u0022163:9\u0022:40009}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":9375,"availabilityMessages":{"7618":"Lieferbar innerhalb von 3-5 Tagen","7619":"Download sofort  verf\u00fcgbar","40009":"Download sofort  verf\u00fcgbar"},"openAccess":{"9375":{"status":0},"7618":{"status":0},"7619":{"status":0},"40009":{"status":0}}}'>
6073    
6074    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
6075        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
6076        <span x-html="optionsLabelText"></span>
6077    </p>
6078</div>                </div>
6079            
6080                                
6080<script>
6081        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
6082            try {
6083                const attributes = (config && config.attributes) ? config.attributes : null;
6084                if (!attributes) return [];
6085                let attr = null;
6086                if (Array.isArray(attributes)) {
6087                    for (let i = 0; i < attributes.length; i++) {
6088                        const a = attributes[i];
6089                        if (a && a.id == attrId) {
6090                            attr = a;
6091                            break;
6092                        }
6093                    }
6094                } else {
6095                    attr = attributes[attrId];
6096                }
6097                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
6098            } catch (e) {
6099                return [];
6100            }
6101        };
6102
6103        function initConfigurableSwatchOptions_9375() {
6104            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["7618"]},{"id":"8","label":"PDF","products":["7619"]},{"id":"9","label":"EPUB","products":["40009"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"7618":{"baseOldPrice":{"amount":25.140185915888},"oldPrice":{"amount":26.9},"basePrice":{"amount":25.140185915888},"finalPrice":{"amount":26.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"7619":{"baseOldPrice":{"amount":18.682241990654},"oldPrice":{"amount":19.99},"basePrice":{"amount":18.682241990654},"finalPrice":{"amount":19.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"40009":{"baseOldPrice":{"amount":18.682241990654},"oldPrice":{"amount":19.99},"basePrice":{"amount":18.682241990654},"finalPrice":{"amount":19.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":18.682241990654},"oldPrice":{"amount":19.99},"basePrice":{"amount":18.682241990654},"finalPrice":{"amount":19.99},"isApproxPrice":null},"productId":"9375","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"7618":{"163":"15"},"7619":{"163":"8"},"40009":{"163":"9"}},"salable":{"163":{"15":["7618"],"8":["7619"],"9":["40009"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"7618":"003658","7619":"003666","40009":"004978"},"output":{"7618":"Kartoniert","7619":"PDF","40009":"EPUB"},"original_name":{"7618":"","7619":"","40009":""},"openaccess_license_link":{"7618":"","7619":"","40009":""},"openaccess_license_name":{"7618":"","7619":"","40009":""},"openaccess_external_link":{"7618":"","7619":"","40009":""},"gpsr_safety_info":{"7618":"","7619":"","40009":""},"description":{"7618":"Pr\u00e4sentative Darstellungsformen und pr\u00e4sentative Medien erfreuen sich immer gr\u00f6\u00dferer Beliebtheit im Philosophie- und Ethikunterricht. Der Band gibt deshalb Anregungen, wie Sch\u00fclerinnen und Sch\u00fcler mit Hilfe von Rollenspielen, theatralem Philosophieren, Videoclips und Musik an philosophische Theorien, Fragestellungen oder Probleme herangef\u00fchrt werden k\u00f6nnen.<br\/><br\/>W\u00e4hrend es in den pr\u00e4sentativen Darstellungsformen darum geht, Philosophisches darstellend umzusetzen, k\u00f6nnen in pr\u00e4sentativen Medien philosophische Fragen veranschaulicht werden. Der vorliegende Band bietet zum einen das theoretische Fundament f\u00fcr die Arbeit mit pr\u00e4sentativen Formaten im Philosophie- und Ethikunterricht und stellt zum anderen zahlreiche praxistaugliche Handreichungen f\u00fcr die Unterrichtsgestaltung vor. Die Herausgeber erl\u00e4utern einleitend, inwiefern die gew\u00e4hlte Zusammenstellung von vier unterschiedlichen Methoden bzw. Medien sinnvoll ist, bevor sich separate Kapitel zu Rollenspiel, theatralem Philosophieren, Video-Clips und Musik anschlie\u00dfen, die alle jeweils Theorie- und Praxisbeitr\u00e4ge enthalten. Die ausgew\u00e4hlten Beispiele und die entsprechenden Unterrichtshandreichungen eignen sich f\u00fcr den Einsatz in Sekundarstufe I und II.<br\/><br\/>Eine umfangreiche Auswahlbibliographie l\u00e4dt zur Weiterarbeit ein und schlie\u00dft das Kompendium ab.","7619":"Pr\u00e4sentative Darstellungsformen und pr\u00e4sentative Medien erfreuen sich immer gr\u00f6\u00dferer Beliebtheit im Philosophie- und Ethikunterricht. Der Band gibt deshalb Anregungen, wie Sch\u00fclerinnen und Sch\u00fcler mit Hilfe von Rollenspielen, theatralem Philosophieren, Videoclips und Musik an philosophische Theorien, Fragestellungen oder Probleme herangef\u00fchrt werden k\u00f6nnen.<br\/><br\/>W\u00e4hrend es in den pr\u00e4sentativen Darstellungsformen darum geht, Philosophisches darstellend umzusetzen, k\u00f6nnen in pr\u00e4sentativen Medien philosophische Fragen veranschaulicht werden. Der vorliegende Band bietet zum einen das theoretische Fundament f\u00fcr die Arbeit mit pr\u00e4sentativen Formaten im Philosophie- und Ethikunterricht und stellt zum anderen zahlreiche praxistaugliche Handreichungen f\u00fcr die Unterrichtsgestaltung vor. Die Herausgeber erl\u00e4utern einleitend, inwiefern die gew\u00e4hlte Zusammenstellung von vier unterschiedlichen Methoden bzw. Medie
6104n sinnvoll ist, bevor sich separate Kapitel zu Rollenspiel, theatralem Philosophieren, Video-Clips und Musik anschlie\u00dfen, die alle jeweils Theorie- und Praxisbeitr\u00e4ge enthalten. Die ausgew\u00e4hlten Beispiele und die entsprechenden Unterrichtshandreichungen eignen sich f\u00fcr den Einsatz in Sekundarstufe I und II.<br\/><br\/>Eine umfangreiche Auswahlbibliographie l\u00e4dt zur Weiterarbeit ein und schlie\u00dft das Kompendium ab.","40009":"Pr\u00e4sentative Darstellungsformen und pr\u00e4sentative Medien erfreuen sich immer gr\u00f6\u00dferer Beliebtheit im Philosophie- und Ethikunterricht. Der Band gibt deshalb Anregungen, wie Sch\u00fclerinnen und Sch\u00fcler mit Hilfe von Rollenspielen, theatralem Philosophieren, Videoclips und Musik an philosophische Theorien, Fragestellungen oder Probleme herangef\u00fchrt werden k\u00f6nnen.<br\/><br\/>W\u00e4hrend es in den pr\u00e4sentativen Darstellungsformen darum geht, Philosophisches darstellend umzusetzen, k\u00f6nnen in pr\u00e4sentativen Medien philosophische Fragen veranschaulicht werden. Der vorliegende Band bietet zum einen das theoretische Fundament f\u00fcr die Arbeit mit pr\u00e4sentativen Formaten im Philosophie- und Ethikunterricht und stellt zum anderen zahlreiche praxistaugliche Handreichungen f\u00fcr die Unterrichtsgestaltung vor. Die Herausgeber erl\u00e4utern einleitend, inwiefern die gew\u00e4hlte Zusammenstellung von vier unterschiedlichen Methoden bzw. Medien sinnvoll ist, bevor sich separate Kapitel zu Rollenspiel, theatralem Philosophieren, Video-Clips und Musik anschlie\u00dfen, die alle jeweils Theorie- und Praxisbeitr\u00e4ge enthalten. Die ausgew\u00e4hlten Beispiele und die entsprechenden Unterrichtshandreichungen eignen sich f\u00fcr den Einsatz in Sekundarstufe I und II.<br\/><br\/>Eine umfangreiche Auswahlbibliographie l\u00e4dt zur Weiterarbeit ein und schlie\u00dft das Kompendium ab."},"doi":{"7618":"","7619":"10.28937\/978-3-7873-3666-1","40009":""},"isbn":{"7618":"978-3-7873-3658-6","7619":"978-3-7873-3666-1","40009":"978-3-7873-4978-4"},"marketing_short_text":{"7618":"","7619":"","40009":""},"recension_text":{"7618":"","7619":"","40009":""},"language":{"7618":"","7619":"","40009":""},"cover":{"7618":"Kartoniert","7619":"","40009":""},"pages":{"7618":"288 Seiten","7619":"288 Seiten","40009":"288 Seiten"},"edition":{"7618":"","7619":"Unver\u00e4ndertes eBook der 1. Auflage von 2026","40009":"Unver\u00e4ndertes EPUB der 1. Auflage von 2026"},"pod":{"7618":"Nein","7619":"Nein","40009":"Nein"},"copyright_year":{"7618":"","7619":"","40009":""},"vlb_tix_link":{"7618":"https:\/\/neu.vlbtix.de\/products\/9783787336586?type=gtin","7619":"","40009":""},"defaultValues":{"163":"15"}};
6105            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
6106
6107            if (typeof window.amxnotif_wrap_attributes === 'function') {
6108                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
6109                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
6110            }
6111
6112            const configurableOptionsComponent = initConfigurableOptions(
6113                '9375',
6114                config
6115            );
6116            const swatchOptionsComponent = initSwatchOptions(
6117                swatchConfig
6118            );
6119
6120            // DWS - Configurable product preselect start
6121            const confProdPreSelect = () => {
6122                return {
6123                    preselectQuerystringItems() {
6124                        var data = {"id":"7618","output":"15"};
6125                        const urlQueryParams = new URLSearchParams(window.location.search);
6126
6127                                                this.$nextTick(() => {
6128                            setTimeout(() => {
6129                                const rootEl = this.$root || this.$el;
6130                                if (!rootEl) return;
6131
6132                                const applySelection = (attrCode, attrValue) => {
6133                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
6134
6135                                    const attributes = Object.values(this.optionConfig.attributes || {});
6136                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
6137
6138                                    if (targetAttr) {
6139                                        const attrId = String(targetAttr.id);
6140                                        const optionVal = String(attrValue);
6141
6142                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
6143
6144                                        if (inputEl) {
6145                                                                                        inputEl.click();
6146                                            inputEl.dispatchEvent(new Event('change', {
6147                                                bubbles: true
6148                                            }));
6149                                        } else {
6150                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
6151                                            if (selectEl) {
6152                                                selectEl.value = optionVal;
6153                                                selectEl.dispatchEvent(new Event('change', {
6154                                                    bubbles: true
6155                                                }));
6156                                            }
6157                                        }
6158
6159                                                                                this.changeOption(attrId, optionVal, false);
6160                                    }
6161                                };
6162
6163                                                                if (data && typeof data === 'object') {
6164                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
6165                                }
6166
6167                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
6168                                    if (attribute && attribute.code) {
6169                                        let optionValue = urlQueryParams.get(attribute.code);
6170                                        if (optionValue) {
6171                                            let optionId = false;
6172                                            const attributes = Object.values(this.optionConfig.attributes || {});
6173                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
6174
6175                                            let found = false;
6176                                            Object.values(targetAttr.options).map(option => {
6177                                                if (found === false && option.label === optionValue) {
6178                                                    optionId = option.id;
6179                                                    found = true;
6180                                                }
6181                                            });
6182
6183                                            const attrId = String(targetAttr.id);
6184                                            let optionVal = String(optionValue);
6185                                            if (found) {
6186                                                optionVal = String(optionId);
6187                                            }
6188
6189                                            applySelection(attribute.code, optionVal);
6190                                        }
6191                                    }
6192                                });
6193                            }, 100);
6194                        });
6195                    }
6196                }
6197            };
6198            // DWS - Configurable product preselect end
6199
6200            const result = Object.assign(
6201                configurableOptionsComponent,
6202                swatchOptionsComponent, {
6203                    productId: '9375',
6204                    productIndex: 0,
6205                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
6206                    showSwatches: false,
6207                    precalcOptions: {},
6208                    originalInit: configurableOptionsComponent.init,
6209                    init() {
6210                        try {
6211                            this.precalcOptions = {};
6212                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
6213                            this.preselectQuerystringItems();
6214                            if (Array.isArray(attrSource)) {
6215                                attrSource.forEach(attr => {
6216                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
6217                                });
6218                            } else if (attrSource && typeof attrSource === 'object') {
6219                                Object.keys(attrSource).forEach(id => {
6220                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
6221                                });
6222                            }
6223                        } catch (e) {
6224                            console.error('Pre-calc error:', e);
6225                        }
6226
6227                        if (typeof this.originalInit === 'function') {
6228                            this.originalInit();
6229                        }
6230
6231                        try {
6232                            this.initShowSwatchesIntersect();
6233                        } catch (e) {
6234                            console.error('intersect error:', e);
6235                        }
6236                    },
6237
6238                    updateGallery() {
6239                        if (!this.productIndex) return;
6240
6241                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
6242                                method: 'GET',
6243                                headers: {
6244                                    'Content-Type': 'application/json',
6245                                    'X-Requested-With': 'XMLHttpRequest'
6246                                }
6247                            })
6248                            .then(response => response.json())
6249                            .then(data => {
6250                                if (data && data.medium) {
6251                                    window.dispatchEvent(new CustomEvent("update-gallery-9375", {
6252                                        detail: data.medium
6253                                    }));
6254                                }
6255                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
6256                    },
6257
6258
6259                    initShowSwatchesIntersect() {
6260                        const observer = new IntersectionObserver(entries => {
6261                            if (entries[0].isIntersecting) {
6262                                this.showSwatches = true;
6263                                observer.disconnect();
6264                            }
6265                        }, {
6266                            rootMargin: '512px'
6267                        });
6268                        observer.observe(this.$el);
6269                    },
6270                    getOptions(attrId) {
6271                        return this.precalcOptions[attrId] || [];
6272                    },
6273                    getOptionsByAttrId() {
6274                        return this.getOptions(this.$el.dataset.attributeId);
6275                    },
6276                    _getItemId() {
6277                        if (this.item && this.item.id) return this.item.id;
6278                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
6279                    },
6280                    getSwatchOptionHtmlId() {
6281                        const itemId = this._getItemId();
6282                        return itemId ? this.$id(`attribute-option-9375-${itemId}`) : '';
6283                    },
6284                    getSwatchOptionHtmlIdGroup() {
6285                        const itemId = this._getItemId();
6286                        return itemId ? [`attribute-option-9375-${itemId}`] : [];
6287                    },
6288                    getAttributeSwatchData(attributeId) {
6289                        const data = Object.assign({}, this.swatchConfig[attributeId]);
6290                        if (data['additional_data']) {
6291                            try {
6292                                data['details'] = JSON.parse(data['additional_data']);
6293                            } catch (e) {
6294                                data['details'] = {};
6295                            }
6296                        }
6297                        return data;
6298                    },
6299                    getSwatchType(attributeId, optionId) {
6300                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
6301                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
6302                        }
6303                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
6304                            this.swatchConfig[attributeId].details.swatch_input_type :
6305                            "empty";
6306                        if (type === 'visual') {
6307                            const config = this.swatchConfig[attributeId];
6308                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
6309                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
6310                            }
6311                            // Fallback to first option type
6312                            for (const oId in config) {
6313                                if (config[oId] && typeof config[oId].type !== 'undefined') {
6314                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
6315                                }
6316                            }
6317                        }
6318                        return type;
6319                    },
6320                    mapSwatchTypeNumberToTypeCode(type) {
6321                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
6322                    },
6323                    isTextSwatch() {
6324                        const itemId = this._getItemId();
6325                        if (!this.$el || !itemId) return false;
6326                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
6327                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
6328                    },
6329
6330                    getSwatchText() {
6331                        const itemId = this._getItemId();
6332                        if (this.item) return this.item.label || '';
6333                        if (!this.$el || !itemId) return '';
6334                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
6335                        const options = attrId ? this.getOptions(attrId) : [];
6336                        const opt = options.find(o => o.id == itemId);
6337                        return opt ? opt.label : '';
6338                    },
6339                    getSwatchBackgroundStyle() {
6340                        const itemId = this._getItemId();
6341                        if (!this.$el || !itemId) return '';
6342                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
6343                        if (!attrId) return '';
6344                        const type = this.getSwatchType(attrId, itemId);
6345                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
6346                            this.swatchConfig[attrId][itemId] :
6347                            null;
6348                        if (!swatchData) return '';
6349                        if (type === "color") return 'background-color:' + swatchData.value;
6350                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
6351                        return '';
6352                    },
6353                    swatchOptionClasses() {
6354                        const itemId = this._getItemId();
6355                        if (!this.$el || !itemId) return {};
6356                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
6357                        return {
6358                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
6359                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
6360                            'w-6 h-6': !this.isTextSwatch()
6361                        }
6362                    },
6363
6364                    onFocusSwatchItem() {
6365                        const itemId = this._getItemId();
6366                        if (itemId) this.focusedLabel = itemId;
6367                    },
6368                    onChangeOption() {
6369                        const itemId = this._getItemId();
6370                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
6371                        if (attrId && itemId) this.changeOption(attrId, itemId);
6372                    },
6373                    changeOption(attributeId, value) {
6374                        if (value === '') {
6375                            return;
6376                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
6377                        } else {
6378                            this.selectedValues[attributeId] = value;
6379                        }
6380
6381                        this.findSimpleIndex();
6382                        this.findAllowedAttributeOptions();
6383                        this.updatePrices();
6384                        this.updateGallery();
6385
6386                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
6387                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
6388
6389                        const eventDetail = {
6390                            productId: this.productId,
6391                            optionId: attributeId,
6392                            value: value,
6393                            productIndex: this.productIndex || 0,
6394                            selectedValues: this.selectedValues,
6395                            candidates: candidates,
6396                            sourceElement: this.$el
6397                        };
6398
6399                        // Dispatch for Amasty
6400                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
6401                            detail: eventDetail
6402                        }));
6403
6404                        // Dispatch for Hyva listing
6405                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
6406                            detail: eventDetail
6407                        }));
6408                    },
6409
6410
6411                    clearOptionIfActive() {
6412                        const itemId = this._getItemId();
6413                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
6414                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
6415                            this.changeOption(attrId, '');
6416
6417                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
6418                            if (!input && this.$el?.querySelector) {
6419                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
6420                            }
6421                            if (!input && this.$el?.closest) {
6422                                const root = this.$el.closest('[data-product-id]') || this.$el;
6423                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
6424                            }
6425                            if (input) {
6426                                input.checked = false;
6427                            }
6428                        }
6429                    },
6430                    get optionIsEnabled() {
6431                        const itemId = this._getItemId();
6432                        if (!this.$el || !itemId) return true;
6433                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
6434                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
6435                        return !!allowedOptions.find(opt => opt.id == itemId);
6436                    },
6437                    get isSelected() {
6438                        const itemId = this._getItemId();
6439                        if (!this.$el || !itemId) return false;
6440                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
6441                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
6442                    },
6443                    get isSwatchRequired() {
6444                        if (!this.$el) return false;
6445                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
6446                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
6447                    },
6448                    focusedLabel: false,
6449                    activeTooltipItem: false,
6450                    tooltipPositionElement: false,
6451                    setActiveTooltipItem() {
6452                        const itemId = this._getItemId();
6453                        if (!this.$el || !itemId) return;
6454                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
6455                        this.activeTooltipItem = {
6456                            attribute: attrId,
6457                            item: itemId,
6458                            index: 0
6459                        };
6460                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
6461                    },
6462                    unsetActiveTooltipItem() {
6463                        this.activeTooltipItem = false;
6464                    }
6465                },
6466                confProdPreSelect()
6467            );
6468
6469            if (result.optionConfig && result.optionConfig.attributes) {
6470                const attributes = result.optionConfig.attributes;
6471                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
6472                    let source = attributes;
6473                    if (Array.isArray(attributes)) {
6474                        source = {};
6475                        attributes.forEach(attr => {
6476                            if (attr && attr.id) source[attr.id] = attr;
6477                        });
6478                    }
6479                    const values = Object.values(source);
6480                    const wrapper = Object.assign(values, source);
6481                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
6482                        value: true,
6483                        enumerable: false
6484                    });
6485                    result.optionConfig.attributes = wrapper;
6486                }
6487            }
6488
6489            return result;
6490        }
6491
6492        window.addEventListener('alpine:init', () => {
6493            Alpine.data('initConfigurableSwatchOptions_9375', initConfigurableSwatchOptions_9375);
6494        }, {
6495            once: true
6496        });
6497    </script>
6497
6498    
6499    <div x-data="initConfigurableSwatchOptions_9375" x-defer="intersect">
6500        <div class="pagebuilder-home-hidden">
6501                                            
6502                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
6503                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
6504                        <template x-if="showSwatches">
6505                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-9375-163" role="radiogroup" aria-label="Einband">
6506                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
6507                                    <div :data-option-id="item.id" style="display: contents">
6508                                        <div x-id="getSwatchOptionHtmlIdGroup">
6509    <template x-if="optionIsEnabled">
6510        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
6510self="unsetActiveTooltipItem">
6511            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-9375-163">
6512            <div>
6513                <template x-if="isTextSwatch">
6514                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
6515                </template>
6516                <template x-if="!optionIsActive(163, item.id)">
6517                    <div>
6518                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
6519                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
6520                        </svg>
6521                    </div>
6522                </template>
6523            </div>
6524        </label>
6525    </template>
6526</div>                                    </div>
6527                                </template>
6528                            </div>
6529                        </template>
6530                    </div>
6531                </div>
6532                    </div>
6533    </div>
6534            
6535                                                <div class="meta py-4 pagebuilder-home-hidden">
6536                <div x-data="initMarketingShortText_9375()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
6537                    <!-- Marketing short text -->
6538                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
6539                    </div>
6540
6541                    <!-- Short description -->
6542                                                                <div class="short-description">
6543                            Musik und Videoclips pr&auml;gen den Alltag vieler Jugendlicher, weshalb sich diese beiden pr&auml;sentativen Medien f&uuml;r einen Einsatz im Philosophie- und Ethikunterricht in besonderem Ma&szlig;e eignen. &hellip;                            <a href="https://meiner.de/fmv_de/rollenspiel-theatrales-philosophieren-musik-und-videoclips-im-philosophie-und-ethikunterricht-15888" class="underline">mehr</a>
6544                        </div>
6545                                    </div>
6546
6547                <!-- Series  -->
6548                                    <div class="mb-1">
6549                        <span class="sr-only">Reihe:</span>
6550                        <a href="https://meiner.de/fmv_de/programm/reihen/methoden-im-philosophie-und-ethikunterricht">
6551                            <span>Methoden im Philosophie- und Ethikunterricht</span>
6552                        </a>
6553                                                    9                                            </div>
6554                
6555                
6556                                                    <div class="mb-1">
6557                        <span x-data="initEditionText_9375()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
6558                            <!-- Marketing short text -->
6559                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 288 Seiten                        </span>
6560                    </div>
6561                
6562                            </div>
6563            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
6564                
6565                <div class="justify-end" x-data="initPriceBox()" @update-prices-9375.window="updatePrice($event.detail);">
6566                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="9375" data-price-box="product-id-9375"><span class="normal-price">
6567    <span x-data x-id="['product\u002Dprice\u002D9375']" class="price-container price-final_price tax weee">
6568            <span class="price-label">Ab</span>
6569                <span class="approx-price">ca. </span>
6570        <span :id="$id('product\u002Dprice\u002D9375')" data-price-amount="19.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">19,99&nbsp;&euro;</span></span>
6571        </span>
6572</span>
6573
6574
6575</div>                </div>
6576
6577                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
6578                                            <div class="open-access-container open-access-container-9375                    flex mt-4 ml-auto sm:mt-0 hidden">
6579                            <div class="text-gray-700">
6580                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
6581                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
6582                                        Kostenlos online lesen                                    </a>
6583                                </button>
6584                            </div>
6585                        </div>
6586                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Rollenspiel, theatrales Philosophieren, Musik und Videoclips im Philosophie- und Ethikunterricht" aria-label="In den Warenkorb Rollenspiel, theatrales Philosophieren, Musik und Videoclips im Philosophie- und Ethikunterricht" data-addto="cart">
6587                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
6588  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
6589</svg>
6590                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
6591                                        In den Warenkorb                                    </span>
6592                                </button>
6593                                                                                                                    
6594<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(9375)" aria-label="Zur Wunschliste hinzuf&uuml;gen Rollenspiel, theatrales Philosophieren, Musik und Videoclips im Philosophie- und Ethikunterricht" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
6595    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
6596  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
6597</svg>
6598</button>
6599                                    </div>
6600            </div>
6601        </div>
6602        
6602<script>
6603            function initMarketingShortText_9375() {
6604                var marketingShortTextConfig = {};
6605                if (typeof window.initConfigurableSwatchOptions_9375 === "function") {
6606                    var fullConfig = window.initConfigurableSwatchOptions_9375().optionConfig
6607                    var marketingShortTextConfig = fullConfig.marketing_short_text;
6608                }
6609                return {
6610                    marketingShortText: '',
6611                    config: marketingShortTextConfig,
6612                    productId: '9375',
6613                    getMarketingShortText(detail) {
6614                        this.marketingShortText = detail.productIndex ?
6615                            this.config[detail.productIndex] :
6616                            null;
6617                    },
6618                    eventListeners: {
6619                        ['@listing-configurable-selection-changed.window'](event) {
6620                            if (this.productId == event.detail.productId) {
6621                                this.getMarketingShortText(event.detail);
6622                            }
6623
6624                        }
6625                    }
6626                }
6627            }
6628
6629            function initEditionText_9375() {
6630                var editionTextConfig = {};
6631                if (typeof window.initConfigurableSwatchOptions_9375 === "function") {
6632                    var fullConfig = window.initConfigurableSwatchOptions_9375().optionConfig
6633                    var editionTextConfig = fullConfig.edition;
6634                }
6635                return {
6636                    editionText: '',
6637                    config: editionTextConfig,
6638                    productId: '9375',
6639                    getEditionText(detail) {
6640                        this.editionText = detail.productIndex ?
6641                            this.config[detail.productIndex] :
6642                            null;
6643                    },
6644                    eventListeners: {
6645                        ['@listing-configurable-selection-changed.window'](event) {
6646                            if (this.productId == event.detail.productId) {
6647                                this.getEditionText(event.detail);
6648                            }
6649
6650                        }
6651                    }
6652                }
6653            }
6654        </script>
6654
6655                    </form>
6656                            
6657    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/47280/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk25422">
6658        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="47280">
6659                                    <a href="https://meiner.de/fmv_de/a-sthetik-des-computerspiels-25422" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
6660            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-47280.window="$el.src = $event.detail" alt="&Auml;sthetik des Computerspiels" title="&Auml;sthetik des Computerspiels" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787352272_2.jpg" :style="{
6661                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
6662                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
6663            }">
6664                    </a>
6665        <div class="product-info flex flex-col flex-grow ">
6666                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
6667                                    <div class="mb-2 text-sm text-gray-500 font-medium">
6668                                                                                    <a href="https://meiner.de/fmv_de/person/Philipp-Theisohn-3440/" class="mb-2">
6669                                    Philipp Theisohn                                                                    </a>
6670                                                                    <span>|</span>
6671                                                                                            <a href="https://meiner.de/fmv_de/person/Reinold-Schmucker-5063/" class="mb-2">
6672                                    Reinold Schm&uuml;cker                                                                            (Hrsg.)
6673                                                                    </a>
6674                                                                                                                                    </div>
6675                                <a class="product-item-link" href="https://meiner.de/fmv_de/a-sthetik-des-computerspiels-25422">
6676                    &Auml;sthetik des Computerspiels                </a>
6677                            </div>
6678
6679            <div x-data="initEditionText_47280()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
6680                <!-- Marketing short text -->
6681                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
6682                </div>
6683            </div>
6684
6685                            <div class="py-1 grid  mb-4 ">
6686                    
6687                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":47280,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":47280,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"47254":"1","47266":"1"},"childProductsAlertStatus":{"47254":"0","47266":"0"},"indexMapping":{"163:15":47254,"163:8":47266},"availabilityMessages":{"47254":"Lieferbar innerhalb von 3-5 Tagen","47266":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"47280":{"status":0},"47254":{"status":0},"47266":{"status":0}}},"availabilityMessages":{"47254":"Lieferbar innerhalb von 3-5 Tagen","47266":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"47280":{"status":0},"47254":{"status":0},"47266":{"status":0}}}'>
6688        <template x-if="containerVisible">
6689                            <!-- Popup Trigger -->
6690                <div>
6691                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
6692                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
6693                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
6694  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
6695<title>bell</title></svg>
6696</span>
6697                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
6698
6699                    <!-- Popup Modal -->
6700                    <template x-if="showModal">
6701                        <template x-teleport=".page-wrapper">
6702                            <div x-cloak class="fixed inset-0 flex items-center justify-center
6703                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
6704                                <div class="relative bg-white rounded-lg shadow-xl
6705                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
6706                                    <div class="p-6">
6707                                        <!-- Subscription Form for Popup -->
6708                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
6709                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
6710                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
6711                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
6712
6713                                            <div class="flex flex-col gap-3">
6714                                                <div class="flex-grow grow">
6715                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
6716                                                        shadow-xs focus:outline-none focus:outline-hidden
6717                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
6718                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
6719                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
6720                                                </div>
6721                                                <input type="hidden" name="product_id" :value="currentProductId">
6722                                                <input type="hidden" name="type" value="email">
6723
6724                                                
6725                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
6726
6727                                                <div class="amxnotif_guest_action">
6728                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
6729                                                        rounded-md focus:outline-none
6730                                                        focus:outline-hidden focus:ring-2
6731                                                        focus:ring-offset-2 disabled:opacity-50
6732                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
6733                                                        Benachrichtigen                                                    </button>
6734                                                </div>
6735                                            </div>
6736
6737                                                                                            <div class="flex items-start pt-2">
6738                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
6739                                                        text-blue-600 border-gray-300 rounded-sm">
6740                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
6741                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
6742                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
6743                                                </div>
6744                                                                                    </form>
6745                                    </div>
6746
6747                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
6748                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
6749                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
6750  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
6751<title>x</title></svg>
6752                                    </button>
6753                                </div>
6754                            </div>
6755                        </template>
6756                    </template>
6757                </div>
6758                    </template>
6759    </div>
6760
6761<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_47280" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":47280,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"47254":"1","47266":"1"},"childProductsAlertStatus":{"47254":"0","47266":"0"},"indexMapping":"{\u0022163:15\u0022:47254,\u0022163:8\u0022:47266}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":47280,"availabilityMessages":{"47254":"Lieferbar innerhalb von 3-5 Tagen","47266":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"47280":{"status":0},"47254":{"status":0},"47266":{"status":0}}}'>
6762    
6763    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
6764        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
6765        <span x-html="optionsLabelText"></span>
6766    </p>
6767</div>                </div>
6768            
6769                                
6769<script>
6770        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
6771            try {
6772                const attributes = (config && config.attributes) ? config.attributes : null;
6773                if (!attributes) return [];
6774                let attr = null;
6775                if (Array.isArray(attributes)) {
6776                    for (let i = 0; i < attributes.length; i++) {
6777                        const a = attributes[i];
6778                        if (a && a.id == attrId) {
6779                            attr = a;
6780                            break;
6781                        }
6782                    }
6783                } else {
6784                    attr = attributes[attrId];
6785                }
6786                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
6787            } catch (e) {
6788                return [];
6789            }
6790        };
6791
6792        function initConfigurableSwatchOptions_47280() {
6793            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["47254"]},{"id":"8","label":"PDF","products":["47266"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"47254":{"baseOldPrice":{"amount":92.523363485981},"oldPrice":{"amount":99},"basePrice":{"amount":92.523363485981},"finalPrice":{"amount":99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47266":{"baseOldPrice":{"amount":70.084111149533},"oldPrice":{"amount":74.99},"basePrice":{"amount":70.084111149533},"finalPrice":{"amount":74.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":70.084111149533},"oldPrice":{"amount":74.99},"basePrice":{"amount":63.016805722689},"finalPrice":{"amount":74.99},"isApproxPrice":null},"productId":"47280","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"47254":{"163":"15"},"47266":{"163":"8"}},"salable":{"163":{"15":["47254"],"8":["47266"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"47254":"000132-71-1","47266":"eZ\u00c4K-71-1"},"output":{"47254":"Kartoniert","47266":"PDF"},"original_name":{"47254":"","47266":""},"openaccess_license_link":{"47254":"","47266":""},"openaccess_license_name":{"47254":"","47266":""},"openaccess_external_link":{"47254":"","47266":""},"gpsr_safety_info":{"47254":"","47266":""},"description":{"47254":"Was ist mit \u00bb\u00c4sthetik des Computerspiels\u00ab gemeint? Und wo w\u00e4re diese zu finden? Der Schwerpunkt dieser Ausgabe sucht sie in den Zwischenr\u00e4umen und Sollbruchstellen, die die medialen Architekturen des Computerspiels durchziehen. Die Einheit von fiktionaler Welt, operativer Struktur und technischer Konditionierung, von narrativer und ludischer Ebene, von Programmierung, Spielmechanik, Hardware und Interfaces ist jedoch nur eine scheinbare. Stattdessen wird diese Einheit in ihrer Faktur aus den Spielwelten heraus sichtbar. Dabei gew\u00e4hren die selbstreflexiven Momente einen Zugang zu dem, was man den \u00bb\u00e4sthetischen Effekt\u00ab des Computerspiels nennen k\u00f6nnte. Von dort aus beginnt das Nachdenken \u00fcber jene junge und massenhaft verbreitete Kunstform, deren genauer Analyse sich die Beitr\u00e4ge widmen.","47266":"Was ist mit \u00bb\u00c4sthetik des Computerspiels\u00ab gemeint? Und wo w\u00e4re diese zu finden? Der Schwerpunkt dieser Ausgabe sucht sie in den Zwischenr\u00e4umen und Sollbruchstellen, die die medialen Architekturen des Computerspiels durchziehen. Die Einheit von fiktionaler Welt, operativer Struktur und technischer Konditionierung, von narrativer und ludischer Ebene, von Programmierung, Spielmechanik, Hardware und Interfaces ist jedoch nur eine scheinbare. Stattdessen wird diese Einheit in ihrer Faktur aus den Spielwelten heraus sichtbar. Dabei gew\u00e4hren die selbstreflexiven Momente einen Zugang zu dem, was man den \u00bb\u00e4sthetischen Effekt\u00ab des Computerspiels nennen k\u00f6nnte. Von dort aus beginnt das Nachdenken \u00fcber jene junge und massenhaft verbreitete Kunstform, deren genauer Analyse sich die Beitr\u00e4ge widmen."},"doi":{"47254":"","47266":"10.28937\/978-3-7873-5228-9"},"isbn":{"47254":"978-3-7873-5227-2","47266":""},"marketing_short_text":{"47254":"","47266":""},"recension_text":{"47254":"","47266":""},"language":{"47254":"","47266":""},"cover":{"47254":"Kartoniert","47266":""},"pages":{"47254":"168 Seiten.","47266":"168 Seiten."},"edition":{"47254":"","47266":"Unver\u00e4ndertes eJournal der 1. Auflage von 2026"},"pod":{"47254":"Nein","47266":"Nein"},"copyright_year":{"47254":"","47266":""},"vlb_tix_link":{"47254":"https:\/\/neu.vlbtix.de\/products\/9783787352272?type=gtin","47266":""},"defaultValues":{"163":"15"}};
6794            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
6795
6796            if (typeof window.amxnotif_wrap_attributes === 'function') {
6797                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
6798                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
6799            }
6800
6801            const configurableOptionsComponent = initConfigurableOptions(
6802                '47280',
6803                config
6804            );
6805            const swatchOptionsComponent = initSwatchOptions(
6806                swatchConfig
6807            );
6808
6809            // DWS - Configurable product preselect start
6810            const confProdPreSelect = () => {
6811                return {
6812                    preselectQuerystringItems() {
6813                        var data = {"id":"47254","output":"15"};
6814                        const urlQueryParams = new URLSearchParams(window.location.search);
6815
6816                                                this.$nextTick(() => {
6817                            setTimeout(() => {
6818                                const rootEl = this.$root || this.$el;
6819                                if (!rootEl) return;
6820
6821                                const applySelection = (attrCode, attrValue) => {
6822                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
6823
6824                                    const attributes = Object.values(this.optionConfig.attributes || {});
6825                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
6826
6827                                    if (targetAttr) {
6828                                        const attrId = String(targetAttr.id);
6829                                        const optionVal = String(attrValue);
6830
6831                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
6832
6833                                        if (inputEl) {
6834                                                                                        inputEl.click();
6835                                            inputEl.dispatchEvent(new Event('change', {
6836                                                bubbles: true
6837                                            }));
6838                                        } else {
6839                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
6840                                            if (selectEl) {
6841                                                selectEl.value = optionVal;
6842                                                selectEl.dispatchEvent(new Event('change', {
6843                                                    bubbles: true
6844                                                }));
6845                                            }
6846                                        }
6847
6848                                                                                this.changeOption(attrId, optionVal, false);
6849                                    }
6850                                };
6851
6852                                                                if (data && typeof data === 'object') {
6853                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
6854                                }
6855
6856                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
6857                                    if (attribute && attribute.code) {
6858                                        let optionValue = urlQueryParams.get(attribute.code);
6859                                        if (optionValue) {
6860                                            let optionId = false;
6861                                            const attributes = Object.values(this.optionConfig.attributes || {});
6862                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
6863
6864                                            let found = false;
6865                                            Object.values(targetAttr.options).map(option => {
6866                                                if (found === false && option.label === optionValue) {
6867                                                    optionId = option.id;
6868                                                    found = true;
6869                                                }
6870                                            });
6871
6872                                            const attrId = String(targetAttr.id);
6873                                            let optionVal = String(optionValue);
6874                                            if (found) {
6875                                                optionVal = String(optionId);
6876                                            }
6877
6878                                            applySelection(attribute.code, optionVal);
6879                                        }
6880                                    }
6881                                });
6882                            }, 100);
6883                        });
6884                    }
6885                }
6886            };
6887            // DWS - Configurable product preselect end
6888
6889            const result = Object.assign(
6890                configurableOptionsComponent,
6891                swatchOptionsComponent, {
6892                    productId: '47280',
6893                    productIndex: 0,
6894                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
6895                    showSwatches: false,
6896                    precalcOptions: {},
6897                    originalInit: configurableOptionsComponent.init,
6898                    init() {
6899                        try {
6900                            this.precalcOptions = {};
6901                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
6902                            this.preselectQuerystringItems();
6903                            if (Array.isArray(attrSource)) {
6904                                attrSource.forEach(attr => {
6905                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
6906                                });
6907                            } else if (attrSource && typeof attrSource === 'object') {
6908                                Object.keys(attrSource).forEach(id => {
6909                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
6910                                });
6911                            }
6912                        } catch (e) {
6913                            console.error('Pre-calc error:', e);
6914                        }
6915
6916                        if (typeof this.originalInit === 'function') {
6917                            this.originalInit();
6918                        }
6919
6920                        try {
6921                            this.initShowSwatchesIntersect();
6922                        } catch (e) {
6923                            console.error('intersect error:', e);
6924                        }
6925                    },
6926
6927                    updateGallery() {
6928                        if (!this.productIndex) return;
6929
6930                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
6931                                method: 'GET',
6932                                headers: {
6933                                    'Content-Type': 'application/json',
6934                                    'X-Requested-With': 'XMLHttpRequest'
6935                                }
6936                            })
6937                            .then(response => response.json())
6938                            .then(data => {
6939                                if (data && data.medium) {
6940                                    window.dispatchEvent(new CustomEvent("update-gallery-47280", {
6941                                        detail: data.medium
6942                                    }));
6943                                }
6944                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
6945                    },
6946
6947
6948                    initShowSwatchesIntersect() {
6949                        const observer = new IntersectionObserver(entries => {
6950                            if (entries[0].isIntersecting) {
6951                                this.showSwatches = true;
6952                                observer.disconnect();
6953                            }
6954                        }, {
6955                            rootMargin: '512px'
6956                        });
6957                        observer.observe(this.$el);
6958                    },
6959                    getOptions(attrId) {
6960                        return this.precalcOptions[attrId] || [];
6961                    },
6962                    getOptionsByAttrId() {
6963                        return this.getOptions(this.$el.dataset.attributeId);
6964                    },
6965                    _getItemId() {
6966                        if (this.item && this.item.id) return this.item.id;
6967                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
6968                    },
6969                    getSwatchOptionHtmlId() {
6970                        const itemId = this._getItemId();
6971                        return itemId ? this.$id(`attribute-option-47280-${itemId}`) : '';
6972                    },
6973                    getSwatchOptionHtmlIdGroup() {
6974                        const itemId = this._getItemId();
6975                        return itemId ? [`attribute-option-47280-${itemId}`] : [];
6976                    },
6977                    getAttributeSwatchData(attributeId) {
6978                        const data = Object.assign({}, this.swatchConfig[attributeId]);
6979                        if (data['additional_data']) {
6980                            try {
6981                                data['details'] = JSON.parse(data['additional_data']);
6982                            } catch (e) {
6983                                data['details'] = {};
6984                            }
6985                        }
6986                        return data;
6987                    },
6988                    getSwatchType(attributeId, optionId) {
6989                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
6990                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
6991                        }
6992                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
6993                            this.swatchConfig[attributeId].details.swatch_input_type :
6994                            "empty";
6995                        if (type === 'visual') {
6996                            const config = this.swatchConfig[attributeId];
6997                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
6998                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
6999                            }
7000                            // Fallback to first option type
7001                            for (const oId in config) {
7002                                if (config[oId] && typeof config[oId].type !== 'undefined') {
7003                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
7004                                }
7005                            }
7006                        }
7007                        return type;
7008                    },
7009                    mapSwatchTypeNumberToTypeCode(type) {
7010                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
7011                    },
7012                    isTextSwatch() {
7013                        const itemId = this._getItemId();
7014                        if (!this.$el || !itemId) return false;
7015                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
7016                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
7017                    },
7018
7019                    getSwatchText() {
7020                        const itemId = this._getItemId();
7021                        if (this.item) return this.item.label || '';
7022                        if (!this.$el || !itemId) return '';
7023                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
7024                        const options = attrId ? this.getOptions(attrId) : [];
7025                        const opt = options.find(o => o.id == itemId);
7026                        return opt ? opt.label : '';
7027                    },
7028                    getSwatchBackgroundStyle() {
7029                        const itemId = this._getItemId();
7030                        if (!this.$el || !itemId) return '';
7031                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
7032                        if (!attrId) return '';
7033                        const type = this.getSwatchType(attrId, itemId);
7034                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
7035                            this.swatchConfig[attrId][itemId] :
7036                            null;
7037                        if (!swatchData) return '';
7038                        if (type === "color") return 'background-color:' + swatchData.value;
7039                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
7040                        return '';
7041                    },
7042                    swatchOptionClasses() {
7043                        const itemId = this._getItemId();
7044                        if (!this.$el || !itemId) return {};
7045                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
7046                        return {
7047                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
7048                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
7049                            'w-6 h-6': !this.isTextSwatch()
7050                        }
7051                    },
7052
7053                    onFocusSwatchItem() {
7054                        const itemId = this._getItemId();
7055                        if (itemId) this.focusedLabel = itemId;
7056                    },
7057                    onChangeOption() {
7058                        const itemId = this._getItemId();
7059                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
7060                        if (attrId && itemId) this.changeOption(attrId, itemId);
7061                    },
7062                    changeOption(attributeId, value) {
7063                        if (value === '') {
7064                            return;
7065                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
7066                        } else {
7067                            this.selectedValues[attributeId] = value;
7068                        }
7069
7070                        this.findSimpleIndex();
7071                        this.findAllowedAttributeOptions();
7072                        this.updatePrices();
7073                        this.updateGallery();
7074
7075                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
7076                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
7077
7078                        const eventDetail = {
7079                            productId: this.productId,
7080                            optionId: attributeId,
7081                            value: value,
7082                            productIndex: this.productIndex || 0,
7083                            selectedValues: this.selectedValues,
7084                            candidates: candidates,
7085                            sourceElement: this.$el
7086                        };
7087
7088                        // Dispatch for Amasty
7089                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
7090                            detail: eventDetail
7091                        }));
7092
7093                        // Dispatch for Hyva listing
7094                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
7095                            detail: eventDetail
7096                        }));
7097                    },
7098
7099
7100                    clearOptionIfActive() {
7101                        const itemId = this._getItemId();
7102                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
7103                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
7104                            this.changeOption(attrId, '');
7105
7106                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
7107                            if (!input && this.$el?.querySelector) {
7108                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
7109                            }
7110                            if (!input && this.$el?.closest) {
7111                                const root = this.$el.closest('[data-product-id]') || this.$el;
7112                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
7113                            }
7114                            if (input) {
7115                                input.checked = false;
7116                            }
7117                        }
7118                    },
7119                    get optionIsEnabled() {
7120                        const itemId = this._getItemId();
7121                        if (!this.$el || !itemId) return true;
7122                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
7123                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
7124                        return !!allowedOptions.find(opt => opt.id == itemId);
7125                    },
7126                    get isSelected() {
7127                        const itemId = this._getItemId();
7128                        if (!this.$el || !itemId) return false;
7129                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
7130                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
7131                    },
7132                    get isSwatchRequired() {
7133                        if (!this.$el) return false;
7134                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
7135                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
7136                    },
7137                    focusedLabel: false,
7138                    activeTooltipItem: false,
7139                    tooltipPositionElement: false,
7140                    setActiveTooltipItem() {
7141                        const itemId = this._getItemId();
7142                        if (!this.$el || !itemId) return;
7143                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
7144                        this.activeTooltipItem = {
7145                            attribute: attrId,
7146                            item: itemId,
7147                            index: 0
7148                        };
7149                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
7150                    },
7151                    unsetActiveTooltipItem() {
7152                        this.activeTooltipItem = false;
7153                    }
7154                },
7155                confProdPreSelect()
7156            );
7157
7158            if (result.optionConfig && result.optionConfig.attributes) {
7159                const attributes = result.optionConfig.attributes;
7160                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
7161                    let source = attributes;
7162                    if (Array.isArray(attributes)) {
7163                        source = {};
7164                        attributes.forEach(attr => {
7165                            if (attr && attr.id) source[attr.id] = attr;
7166                        });
7167                    }
7168                    const values = Object.values(source);
7169                    const wrapper = Object.assign(values, source);
7170                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
7171                        value: true,
7172                        enumerable: false
7173                    });
7174                    result.optionConfig.attributes = wrapper;
7175                }
7176            }
7177
7178            return result;
7179        }
7180
7181        window.addEventListener('alpine:init', () => {
7182            Alpine.data('initConfigurableSwatchOptions_47280', initConfigurableSwatchOptions_47280);
7183        }, {
7184            once: true
7185        });
7186    </script>
7186
7187    
7188    <div x-data="initConfigurableSwatchOptions_47280" x-defer="intersect">
7189        <div class="pagebuilder-home-hidden">
7190                                            
7191                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
7192                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
7193                        <template x-if="showSwatches">
7194                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-47280-163" role="radiogroup" aria-label="Einband">
7195                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
7196                                    <div :data-option-id="item.id" style="display: contents">
7197                                        <div x-id="getSwatchOptionHtmlIdGroup">
7198    <template x-if="optionIsEnabled">
7199        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
7199self="unsetActiveTooltipItem">
7200            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-47280-163">
7201            <div>
7202                <template x-if="isTextSwatch">
7203                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
7204                </template>
7205                <template x-if="!optionIsActive(163, item.id)">
7206                    <div>
7207                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
7208                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
7209                        </svg>
7210                    </div>
7211                </template>
7212            </div>
7213        </label>
7214    </template>
7215</div>                                    </div>
7216                                </template>
7217                            </div>
7218                        </template>
7219                    </div>
7220                </div>
7221                    </div>
7222    </div>
7223            
7224                                                <div class="meta py-4 pagebuilder-home-hidden">
7225                <div x-data="initMarketingShortText_47280()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
7226                    <!-- Marketing short text -->
7227                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
7228                    </div>
7229
7230                    <!-- Short description -->
7231                                                        </div>
7232
7233                <!-- Series  -->
7234                                    <div class="mb-1">
7235                        <span class="sr-only">Reihe:</span>
7236                        <a href="https://meiner.de/fmv_de/programm/zeitschriften/zeitschrift-fur-asthetik-und-allgemeine-kunstwissenschaft">
7237                            <span>Zeitschrift f&uuml;r &Auml;sthetik und Allgemeine Kunstwissenschaft</span>
7238                        </a>
7239                                                    71/1                                            </div>
7240                
7241                
7242                                                    <div class="mb-1">
7243                        <span x-data="initEditionText_47280()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
7244                            <!-- Marketing short text -->
7245                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 168 Seiten.                        </span>
7246                    </div>
7247                
7248                            </div>
7249            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
7250                
7251                <div class="justify-end" x-data="initPriceBox()" @update-prices-47280.window="updatePrice($event.detail);">
7252                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="47280" data-price-box="product-id-47280"><span class="normal-price">
7253    <span x-data x-id="['product\u002Dprice\u002D47280']" class="price-container price-final_price tax weee">
7254            <span class="price-label">Ab</span>
7255                <span class="approx-price">ca. </span>
7256        <span :id="$id('product\u002Dprice\u002D47280')" data-price-amount="74.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">74,99&nbsp;&euro;</span></span>
7257        </span>
7258</span>
7259
7260
7261</div>                </div>
7262
7263                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
7264                                            <div class="open-access-container open-access-container-47280                    flex mt-4 ml-auto sm:mt-0 hidden">
7265                            <div class="text-gray-700">
7266                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
7267                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
7268                                        Kostenlos online lesen                                    </a>
7269                                </button>
7270                            </div>
7271                        </div>
7272                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb &Auml;sthetik des Computerspiels" aria-label="In den Warenkorb &Auml;sthetik des Computerspiels" data-addto="cart">
7273                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
7274  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
72740 014 0z"></path>
7275</svg>
7276                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
7277                                        In den Warenkorb                                    </span>
7278                                </button>
7279                                                                                                                    
7280<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(47280)" aria-label="Zur Wunschliste hinzuf&uuml;gen &Auml;sthetik des Computerspiels" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
7281    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
7282  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
7283</svg>
7284</button>
7285                                    </div>
7286            </div>
7287        </div>
7288        
7288<script>
7289            function initMarketingShortText_47280() {
7290                var marketingShortTextConfig = {};
7291                if (typeof window.initConfigurableSwatchOptions_47280 === "function") {
7292                    var fullConfig = window.initConfigurableSwatchOptions_47280().optionConfig
7293                    var marketingShortTextConfig = fullConfig.marketing_short_text;
7294                }
7295                return {
7296                    marketingShortText: '',
7297                    config: marketingShortTextConfig,
7298                    productId: '47280',
7299                    getMarketingShortText(detail) {
7300                        this.marketingShortText = detail.productIndex ?
7301                            this.config[detail.productIndex] :
7302                            null;
7303                    },
7304                    eventListeners: {
7305                        ['@listing-configurable-selection-changed.window'](event) {
7306                            if (this.productId == event.detail.productId) {
7307                                this.getMarketingShortText(event.detail);
7308                            }
7309
7310                        }
7311                    }
7312                }
7313            }
7314
7315            function initEditionText_47280() {
7316                var editionTextConfig = {};
7317                if (typeof window.initConfigurableSwatchOptions_47280 === "function") {
7318                    var fullConfig = window.initConfigurableSwatchOptions_47280().optionConfig
7319                    var editionTextConfig = fullConfig.edition;
7320                }
7321                return {
7322                    editionText: '',
7323                    config: editionTextConfig,
7324                    productId: '47280',
7325                    getEditionText(detail) {
7326                        this.editionText = detail.productIndex ?
7327                            this.config[detail.productIndex] :
7328                            null;
7329                    },
7330                    eventListeners: {
7331                        ['@listing-configurable-selection-changed.window'](event) {
7332                            if (this.productId == event.detail.productId) {
7333                                this.getEditionText(event.detail);
7334                            }
7335
7336                        }
7337                    }
7338                }
7339            }
7340        </script>
7340
7341                    </form>
7342                            
7343    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/47264/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21161">
7344        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="47264">
7345                                    <a href="https://meiner.de/fmv_de/hegel-studien-band-59-21161" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
7346            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-47264.window="$el.src = $event.detail" alt="Hegel-Studien Band 59" title="Hegel-Studien Band 59" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787350681_1.jpg" :style="{
7347                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
7348                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
7349            }">
7350                    </a>
7351        <div class="product-info flex flex-col flex-grow ">
7352                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
7353                                    <div class="mb-2 text-sm text-gray-500 font-medium">
7354                                                                                    <a href="https://meiner.de/fmv_de/person/Brady-Bowman-3358/" class="mb-2">
7355                                    Brady Bowman                                                                    </a>
7356                                                                    <span>|</span>
7357                                                                                            <a href="https://meiner.de/fmv_de/person/Dina-Emundts-4132/" class="mb-2">
7358                                    Dina Emundts                                                                    </a>
7359                                                                    <span>|</span>
7360                                                                                            <a href="https://meiner.de/fmv_de/person/Johannes-Georg-Schulein-3356/" class="mb-2">
7361                                    Johannes-Georg Sch&uuml;lein                                                                            (Hrsg.)
7362                                                                    </a>
7363                                                                                                                                    </div>
7364                                <a class="product-item-link" href="https://meiner.de/fmv_de/hegel-studien-band-59-21161">
7365                    Hegel-Studien Band 59                </a>
7366                            </div>
7367
7368            <div x-data="initEditionText_47264()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
7369                <!-- Marketing short text -->
7370                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
7371                </div>
7372            </div>
7373
7374                            <div class="py-1 grid  mb-4 ">
7375                    
7376                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":47264,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":47264,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46911":"1","47260":"1"},"childProductsAlertStatus":{"46911":"0","47260":"0"},"indexMapping":{"163:15":46911,"163:8":47260},"availabilityMessages":{"46911":"Lieferbar innerhalb von 3-5 Tagen","47260":"Download sofort  verf\u00fcgbar"},"openAccess":{"47264":{"status":0},"46911":{"status":0},"47260":{"status":0}}},"availabilityMessages":{"46911":"Lieferbar innerhalb von 3-5 Tagen","47260":"Download sofort  verf\u00fcgbar"},"openAccess":{"47264":{"status":0},"46911":{"status":0},"47260":{"status":0}}}'>
7377        <template x-if="containerVisible">
7378                            <!-- Popup Trigger -->
7379                <div>
7380                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
7381                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
7382                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
7383  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
7384<title>bell</title></svg>
7385</span>
7386                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
7387
7388                    <!-- Popup Modal -->
7389                    <template x-if="showModal">
7390                        <template x-teleport=".page-wrapper">
7391                            <div x-cloak class="fixed inset-0 flex items-center justify-center
7392                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
7393                                <div class="relative bg-white rounded-lg shadow-xl
7394                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
7395                                    <div class="p-6">
7396                                        <!-- Subscription Form for Popup -->
7397                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
7398                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
7399                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
7400                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
7401
7402                                            <div class="flex flex-col gap-3">
7403                                                <div class="flex-grow grow">
7404                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
7405                                                        shadow-xs focus:outline-none focus:outline-hidden
7406                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
7407                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
7408                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
7409                                                </div>
7410                                                <input type="hidden" name="product_id" :value="currentProductId">
7411                                                <input type="hidden" name="type" value="email">
7412
7413                                                
7414                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
7415
7416                                                <div class="amxnotif_guest_action">
7417                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
7418                                                        rounded-md focus:outline-none
7419                                                        focus:outline-hidden focus:ring-2
7420                                                        focus:ring-offset-2 disabled:opacity-50
7421                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
7422                                                        Benachrichtigen                                                    </button>
7423                                                </div>
7424                                            </div>
7425
7426                                                                                            <div class="flex items-start pt-2">
7427                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
7428                                                        text-blue-600 border-gray-300 rounded-sm">
7429                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
7430                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
7431                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
7432                                                </div>
7433                                                                                    </form>
7434                                    </div>
7435
7436                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
7437                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
7438                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
7439  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
7440<title>x</title></svg>
7441                                    </button>
7442                                </div>
7443                            </div>
7444                        </template>
7445                    </template>
7446                </div>
7447                    </template>
7448    </div>
7449
7450<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_47264" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":47264,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46911":"1","47260":"1"},"childProductsAlertStatus":{"46911":"0","47260":"0"},"indexMapping":"{\u0022163:15\u0022:46911,\u0022163:8\u0022:47260}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":47264,"availabilityMessages":{"46911":"Lieferbar innerhalb von 3-5 Tagen","47260":"Download sofort  verf\u00fcgbar"},"openAccess":{"47264":{"status":0},"46911":{"status":0},"47260":{"status":0}}}'>
7451    
7452    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
7453        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
7454        <span x-html="optionsLabelText"></span>
7455    </p>
7456</div>                </div>
7457            
7458                                
7458<script>
7459        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
7460            try {
7461                const attributes = (config && config.attributes) ? config.attributes : null;
7462                if (!attributes) return [];
7463                let attr = null;
7464                if (Array.isArray(attributes)) {
7465                    for (let i = 0; i < attributes.length; i++) {
7466                        const a = attributes[i];
7467                        if (a && a.id == attrId) {
7468                            attr = a;
7469                            break;
7470                        }
7471                    }
7472                } else {
7473                    attr = attributes[attrId];
7474                }
7475                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
7476            } catch (e) {
7477                return [];
7478            }
7479        };
7480
7481        function initConfigurableSwatchOptions_47264() {
7482            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46911"]},{"id":"8","label":"PDF","products":["47260"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46911":{"baseOldPrice":{"amount":119.6261672243},"oldPrice":{"amount":128},"basePrice":{"amount":119.6261672243},"finalPrice":{"amount":128},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47260":{"baseOldPrice":{"amount":88.775699934579},"oldPrice":{"amount":94.99},"basePrice":{"amount":88.775699934579},"finalPrice":{"amount":94.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":88.775699934579},"oldPrice":{"amount":94.99},"basePrice":{"amount":79.823528411765},"finalPrice":{"amount":94.99},"isApproxPrice":null},"productId":"47264","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46911":{"163":"15"},"47260":{"163":"8"}},"salable":{"163":{"15":["46911"],"8":["47260"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"46911":"005067","47260":"005068"},"output":{"46911":"Kartoniert","47260":"PDF"},"original_name":{"46911":"","47260":""},"openaccess_license_link":{"46911":"","47260":""},"openaccess_license_name":{"46911":"","47260":""},"openaccess_external_link":{"46911":"","47260":""},"gpsr_safety_info":{"46911":"","47260":""},"description":{"46911":"","47260":""},"doi":{"46911":"","47260":"10.28937\/978-3-7873-5068-1"},"isbn":{"46911":"978-3-7873-5067-4","47260":"978-3-7873-5068-1"},"marketing_short_text":{"46911":"","47260":""},"recension_text":{"46911":"","47260":""},"language":{"46911":"","47260":""},"cover":{"46911":"Kartoniert","47260":""},"pages":{"46911":"278 Seiten.","47260":""},"edition":{"46911":"","47260":"Unver\u00e4ndertes eBook der 1. Auflage von 2026"},"pod":{"46911":"Nein","47260":"Nein"},"copyright_year":{"46911":"","47260":""},"vlb_tix_link":{"46911":"https:\/\/neu.vlbtix.de\/products\/9783787350674?type=gtin","47260":""},"defaultValues":{"163":"15"}};
7483            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
7484
7485            if (typeof window.amxnotif_wrap_attributes === 'function') {
7486                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
7487                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
7488            }
7489
7490            const configurableOptionsComponent = initConfigurableOptions(
7491                '47264',
7492                config
7493            );
7494            const swatchOptionsComponent = initSwatchOptions(
7495                swatchConfig
7496            );
7497
7498            // DWS - Configurable product preselect start
7499            const confProdPreSelect = () => {
7500                return {
7501                    preselectQuerystringItems() {
7502                        var data = {"id":"46911","output":"15"};
7503                        const urlQueryParams = new URLSearchParams(window.location.search);
7504
7505                                                this.$nextTick(() => {
7506                            setTimeout(() => {
7507                                const rootEl = this.$root || this.$el;
7508                                if (!rootEl) return;
7509
7510                                const applySelection = (attrCode, attrValue) => {
7511                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
7512
7513                                    const attributes = Object.values(this.optionConfig.attributes || {});
7514                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
7515
7516                                    if (targetAttr) {
7517                                        const attrId = String(targetAttr.id);
7518                                        const optionVal = String(attrValue);
7519
7520                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
7521
7522                                        if (inputEl) {
7523                                                                                        inputEl.click();
7524                                            inputEl.dispatchEvent(new Event('change', {
7525                                                bubbles: true
7526                                            }));
7527                                        } else {
7528                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
7529                                            if (selectEl) {
7530                                                selectEl.value = optionVal;
7531                                                selectEl.dispatchEvent(new Event('change', {
7532                                                    bubbles: true
7533                                                }));
7534                                            }
7535                                        }
7536
7537                                                                                this.changeOption(attrId, optionVal, false);
7538                                    }
7539                                };
7540
7541                                                                if (data && typeof data === 'object') {
7542                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
7543                                }
7544
7545                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
7546                                    if (attribute && attribute.code) {
7547                                        let optionValue = urlQueryParams.get(attribute.code);
7548                                        if (optionValue) {
7549                                            let optionId = false;
7550                                            const attributes = Object.values(this.optionConfig.attributes || {});
7551                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
7552
7553                                            let found = false;
7554                                            Object.values(targetAttr.options).map(option => {
7555                                                if (found === false && option.label === optionValue) {
7556                                                    optionId = option.id;
7557                                                    found = true;
7558                                                }
7559                                            });
7560
7561                                            const attrId = String(targetAttr.id);
7562                                            let optionVal = String(optionValue);
7563                                            if (found) {
7564                                                optionVal = String(optionId);
7565                                            }
7566
7567                                            applySelection(attribute.code, optionVal);
7568                                        }
7569                                    }
7570                                });
7571                            }, 100);
7572                        });
7573                    }
7574                }
7575            };
7576            // DWS - Configurable product preselect end
7577
7578            const result = Object.assign(
7579                configurableOptionsComponent,
7580                swatchOptionsComponent, {
7581                    productId: '47264',
7582                    productIndex: 0,
7583                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
7584                    showSwatches: false,
7585                    precalcOptions: {},
7586                    originalInit: configurableOptionsComponent.init,
7587                    init() {
7588                        try {
7589                            this.precalcOptions = {};
7590                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
7591                            this.preselectQuerystringItems();
7592                            if (Array.isArray(attrSource)) {
7593                                attrSource.forEach(attr => {
7594                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
7595                                });
7596                            } else if (attrSource && typeof attrSource === 'object') {
7597                                Object.keys(attrSource).forEach(id => {
7598                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
7599                                });
7600                            }
7601                        } catch (e) {
7602                            console.error('Pre-calc error:', e);
7603                        }
7604
7605                        if (typeof this.originalInit === 'function') {
7606                            this.originalInit();
7607                        }
7608
7609                        try {
7610                            this.initShowSwatchesIntersect();
7611                        } catch (e) {
7612                            console.error('intersect error:', e);
7613                        }
7614                    },
7615
7616                    updateGallery() {
7617                        if (!this.productIndex) return;
7618
7619                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
7620                                method: 'GET',
7621                                headers: {
7622                                    'Content-Type': 'application/json',
7623                                    'X-Requested-With': 'XMLHttpRequest'
7624                                }
7625                            })
7626                            .then(response => response.json())
7627                            .then(data => {
7628                                if (data && data.medium) {
7629                                    window.dispatchEvent(new CustomEvent("update-gallery-47264", {
7630                                        detail: data.medium
7631                                    }));
7632                                }
7633                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
7634                    },
7635
7636
7637                    initShowSwatchesIntersect() {
7638                        const observer = new IntersectionObserver(entries => {
7639                            if (entries[0].isIntersecting) {
7640                                this.showSwatches = true;
7641                                observer.disconnect();
7642                            }
7643                        }, {
7644                            rootMargin: '512px'
7645                        });
7646                        observer.observe(this.$el);
7647                    },
7648                    getOptions(attrId) {
7649                        return this.precalcOptions[attrId] || [];
7650                    },
7651                    getOptionsByAttrId() {
7652                        return this.getOptions(this.$el.dataset.attributeId);
7653                    },
7654                    _getItemId() {
7655                        if (this.item && this.item.id) return this.item.id;
7656                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
7657                    },
7658                    getSwatchOptionHtmlId() {
7659                        const itemId = this._getItemId();
7660                        return itemId ? this.$id(`attribute-option-47264-${itemId}`) : '';
7661                    },
7662                    getSwatchOptionHtmlIdGroup() {
7663                        const itemId = this._getItemId();
7664                        return itemId ? [`attribute-option-47264-${itemId}`] : [];
7665                    },
7666                    getAttributeSwatchData(attributeId) {
7667                        const data = Object.assign({}, this.swatchConfig[attributeId]);
7668                        if (data['additional_data']) {
7669                            try {
7670                                data['details'] = JSON.parse(data['additional_data']);
7671                            } catch (e) {
7672                                data['details'] = {};
7673                            }
7674                        }
7675                        return data;
7676                    },
7677                    getSwatchType(attributeId, optionId) {
7678                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
7679                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
7680                        }
7681                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
7682                            this.swatchConfig[attributeId].details.swatch_input_type :
7683                            "empty";
7684                        if (type === 'visual') {
7685                            const config = this.swatchConfig[attributeId];
7686                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
7687                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
7688                            }
7689                            // Fallback to first option type
7690                            for (const oId in config) {
7691                                if (config[oId] && typeof config[oId].type !== 'undefined') {
7692                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
7693                                }
7694                            }
7695                        }
7696                        return type;
7697                    },
7698                    mapSwatchTypeNumberToTypeCode(type) {
7699                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
7700                    },
7701                    isTextSwatch() {
7702                        const itemId = this._getItemId();
7703                        if (!this.$el || !itemId) return false;
7704                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
7705                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
7706                    },
7707
7708                    getSwatchText() {
7709                        const itemId = this._getItemId();
7710                        if (this.item) return this.item.label || '';
7711                        if (!this.$el || !itemId) return '';
7712                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
7713                        const options = attrId ? this.getOptions(attrId) : [];
7714                        const opt = options.find(o => o.id == itemId);
7715                        return opt ? opt.label : '';
7716                    },
7717                    getSwatchBackgroundStyle() {
7718                        const itemId = this._getItemId();
7719                        if (!this.$el || !itemId) return '';
7720                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
7721                        if (!attrId) return '';
7722                        const type = this.getSwatchType(attrId, itemId);
7723                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
7724                            this.swatchConfig[attrId][itemId] :
7725                            null;
7726                        if (!swatchData) return '';
7727                        if (type === "color") return 'background-color:' + swatchData.value;
7728                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
7729                        return '';
7730                    },
7731                    swatchOptionClasses() {
7732                        const itemId = this._getItemId();
7733                        if (!this.$el || !itemId) return {};
7734                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
7735                        return {
7736                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
7737                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
7738                            'w-6 h-6': !this.isTextSwatch()
7739                        }
7740                    },
7741
7742                    onFocusSwatchItem() {
7743                        const itemId = this._getItemId();
7744                        if (itemId) this.focusedLabel = itemId;
7745                    },
7746                    onChangeOption() {
7747                        const itemId = this._getItemId();
7748                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
7749                        if (attrId && itemId) this.changeOption(attrId, itemId);
7750                    },
7751                    changeOption(attributeId, value) {
7752                        if (value === '') {
7753                            return;
7754                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
7755                        } else {
7756                            this.selectedValues[attributeId] = value;
7757                        }
7758
7759                        this.findSimpleIndex();
7760                        this.findAllowedAttributeOptions();
7761                        this.updatePrices();
7762                        this.updateGallery();
7763
7764                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
7765                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
7766
7767                        const eventDetail = {
7768                            productId: this.productId,
7769                            optionId: attributeId,
7770                            value: value,
7771                            productIndex: this.productIndex || 0,
7772                            selectedValues: this.selectedValues,
7773                            candidates: candidates,
7774                            sourceElement: this.$el
7775                        };
7776
7777                        // Dispatch for Amasty
7778                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
7779                            detail: eventDetail
7780                        }));
7781
7782                        // Dispatch for Hyva listing
7783                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
7784                            detail: eventDetail
7785                        }));
7786                    },
7787
7788
7789                    clearOptionIfActive() {
7790                        const itemId = this._getItemId();
7791                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
7792                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
7793                            this.changeOption(attrId, '');
7794
7795                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
7796                            if (!input && this.$el?.querySelector) {
7797                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
7798                            }
7799                            if (!input && this.$el?.closest) {
7800                                const root = this.$el.closest('[data-product-id]') || this.$el;
7801                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
7802                            }
7803                            if (input) {
7804                                input.checked = false;
7805                            }
7806                        }
7807                    },
7808                    get optionIsEnabled() {
7809                        const itemId = this._getItemId();
7810                        if (!this.$el || !itemId) return true;
7811                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
7812                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
7813                        return !!allowedOptions.find(opt => opt.id == itemId);
7814                    },
7815                    get isSelected() {
7816                        const itemId = this._getItemId();
7817                        if (!this.$el || !itemId) return false;
7818                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
7819                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
7820                    },
7821                    get isSwatchRequired() {
7822                        if (!this.$el) return false;
7823                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
7824                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
7825                    },
7826                    focusedLabel: false,
7827                    activeTooltipItem: false,
7828                    tooltipPositionElement: false,
7829                    setActiveTooltipItem() {
7830                        const itemId = this._getItemId();
7831                        if (!this.$el || !itemId) return;
7832                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
7833                        this.activeTooltipItem = {
7834                            attribute: attrId,
7835                            item: itemId,
7836                            index: 0
7837                        };
7838                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
7839                    },
7840                    unsetActiveTooltipItem() {
7841                        this.activeTooltipItem = false;
7842                    }
7843                },
7844                confProdPreSelect()
7845            );
7846
7847            if (result.optionConfig && result.optionConfig.attributes) {
7848                const attributes = result.optionConfig.attributes;
7849                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
7850                    let source = attributes;
7851                    if (Array.isArray(attributes)) {
7852                        source = {};
7853                        attributes.forEach(attr => {
7854                            if (attr && attr.id) source[attr.id] = attr;
7855                        });
7856                    }
7857                    const values = Object.values(source);
7858                    const wrapper = Object.assign(values, source);
7859                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
7860                        value: true,
7861                        enumerable: false
7862                    });
7863                    result.optionConfig.attributes = wrapper;
7864                }
7865            }
7866
7867            return result;
7868        }
7869
7870        window.addEventListener('alpine:init', () => {
7871            Alpine.data('initConfigurableSwatchOptions_47264', initConfigurableSwatchOptions_47264);
7872        }, {
7873            once: true
7874        });
7875    </script>
7875
7876    
7877    <div x-data="initConfigurableSwatchOptions_47264" x-defer="intersect">
7878        <div class="pagebuilder-home-hidden">
7879                                            
7880                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
7881                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
7882                        <template x-if="showSwatches">
7883                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-47264-163" role="radiogroup" aria-label="Einband">
7884                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
7885                                    <div :data-option-id="item.id" style="display: contents">
7886                                        <div x-id="getSwatchOptionHtmlIdGroup">
7887    <template x-if="optionIsEnabled">
7888        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
7888self="unsetActiveTooltipItem">
7889            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-47264-163">
7890            <div>
7891                <template x-if="isTextSwatch">
7892                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
7893                </template>
7894                <template x-if="!optionIsActive(163, item.id)">
7895                    <div>
7896                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
7897                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
7898                        </svg>
7899                    </div>
7900                </template>
7901            </div>
7902        </label>
7903    </template>
7904</div>                                    </div>
7905                                </template>
7906                            </div>
7907                        </template>
7908                    </div>
7909                </div>
7910                    </div>
7911    </div>
7912            
7913                                                <div class="meta py-4 pagebuilder-home-hidden">
7914                <div x-data="initMarketingShortText_47264()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
7915                    <!-- Marketing short text -->
7916                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
7917                    </div>
7918
7919                    <!-- Short description -->
7920                                                        </div>
7921
7922                <!-- Series  -->
7923                
7924                
7925                                                    <div class="mb-1">
7926                        <span x-data="initEditionText_47264()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
7927                            <!-- Marketing short text -->
7928                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 278 Seiten.                        </span>
7929                    </div>
7930                
7931                            </div>
7932            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
7933                
7934                <div class="justify-end" x-data="initPriceBox()" @update-prices-47264.window="updatePrice($event.detail);">
7935                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="47264" data-price-box="product-id-47264"><span class="normal-price">
7936    <span x-data x-id="['product\u002Dprice\u002D47264']" class="price-container price-final_price tax weee">
7937            <span class="price-label">Ab</span>
7938                <span class="approx-price">ca. </span>
7939        <span :id="$id('product\u002Dprice\u002D47264')" data-price-amount="94.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">94,99&nbsp;&euro;</span></span>
7940        </span>
7941</span>
7942
7943
7944</div>                </div>
7945
7946                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
7947                                            <div class="open-access-container open-access-container-47264                    flex mt-4 ml-auto sm:mt-0 hidden">
7948                            <div class="text-gray-700">
7949                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
7950                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
7951                                        Kostenlos online lesen                                    </a>
7952                                </button>
7953                            </div>
7954                        </div>
7955                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Hegel-Studien Band 59" aria-label="In den Warenkorb Hegel-Studien Band 59" data-addto="cart">
7956                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
7957  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
79570 014 0z"></path>
7958</svg>
7959                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
7960                                        In den Warenkorb                                    </span>
7961                                </button>
7962                                                                                                                    
7963<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(47264)" aria-label="Zur Wunschliste hinzuf&uuml;gen Hegel-Studien Band 59" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
7964    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
7965  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
7966</svg>
7967</button>
7968                                    </div>
7969            </div>
7970        </div>
7971        
7971<script>
7972            function initMarketingShortText_47264() {
7973                var marketingShortTextConfig = {};
7974                if (typeof window.initConfigurableSwatchOptions_47264 === "function") {
7975                    var fullConfig = window.initConfigurableSwatchOptions_47264().optionConfig
7976                    var marketingShortTextConfig = fullConfig.marketing_short_text;
7977                }
7978                return {
7979                    marketingShortText: '',
7980                    config: marketingShortTextConfig,
7981                    productId: '47264',
7982                    getMarketingShortText(detail) {
7983                        this.marketingShortText = detail.productIndex ?
7984                            this.config[detail.productIndex] :
7985                            null;
7986                    },
7987                    eventListeners: {
7988                        ['@listing-configurable-selection-changed.window'](event) {
7989                            if (this.productId == event.detail.productId) {
7990                                this.getMarketingShortText(event.detail);
7991                            }
7992
7993                        }
7994                    }
7995                }
7996            }
7997
7998            function initEditionText_47264() {
7999                var editionTextConfig = {};
8000                if (typeof window.initConfigurableSwatchOptions_47264 === "function") {
8001                    var fullConfig = window.initConfigurableSwatchOptions_47264().optionConfig
8002                    var editionTextConfig = fullConfig.edition;
8003                }
8004                return {
8005                    editionText: '',
8006                    config: editionTextConfig,
8007                    productId: '47264',
8008                    getEditionText(detail) {
8009                        this.editionText = detail.productIndex ?
8010                            this.config[detail.productIndex] :
8011                            null;
8012                    },
8013                    eventListeners: {
8014                        ['@listing-configurable-selection-changed.window'](event) {
8015                            if (this.productId == event.detail.productId) {
8016                                this.getEditionText(event.detail);
8017                            }
8018
8019                        }
8020                    }
8021                }
8022            }
8023        </script>
8023
8024                    </form>
8025                            
8026    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/47209/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21935">
8027        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="47209">
8028                                    <a href="https://meiner.de/fmv_de/mythos-21935" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
8029            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-47209.window="$el.src = $event.detail" alt="Mythos" title="Mythos" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351732_1.jpg" :style="{
8030                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
8031                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
8032            }">
8033                    </a>
8034        <div class="product-info flex flex-col flex-grow ">
8035                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
8036                                    <div class="mb-2 text-sm text-gray-500 font-medium">
8037                                                                                    <a href="https://meiner.de/fmv_de/person/Ralf-Becker-3266/" class="mb-2">
8038                                    Ralf Becker                                                                    </a>
8039                                                                    <span>|</span>
8040                                                                                            <a href="https://meiner.de/fmv_de/person/Christian-Bermes-3208/" class="mb-2">
8041                                    Christian Bermes                                                                    </a>
8042                                                                    <span>|</span>
8043                                                                                            <a href="https://meiner.de/fmv_de/person/Annika-Schlitte-8726/" class="mb-2">
8044                                    Annika Schlitte                                                                            (Hrsg.)
8045                                                                    </a>
8046                                                                                                                                    </div>
8047                                <a class="product-item-link" href="https://meiner.de/fmv_de/mythos-21935">
8048                    Mythos                </a>
8049                            </div>
8050
8051            <div x-data="initEditionText_47209()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
8052                <!-- Marketing short text -->
8053                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
8054                </div>
8055            </div>
8056
8057                            <div class="py-1 grid  mb-4 ">
8058                    
8059                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":47209,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":47209,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46908":"1","47250":"1"},"childProductsAlertStatus":{"46908":"0","47250":"0"},"indexMapping":{"163:15":46908,"163:8":47250},"availabilityMessages":{"46908":"Lieferbar innerhalb von 3-5 Tagen","47250":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"47209":{"status":0}
8059,"46908":{"status":0},"47250":{"status":0}}},"availabilityMessages":{"46908":"Lieferbar innerhalb von 3-5 Tagen","47250":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"47209":{"status":0},"46908":{"status":0},"47250":{"status":0}}}'>
8060        <template x-if="containerVisible">
8061                            <!-- Popup Trigger -->
8062                <div>
8063                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
8064                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
8065                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
8066  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
8067<title>bell</title></svg>
8068</span>
8069                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
8070
8071                    <!-- Popup Modal -->
8072                    <template x-if="showModal">
8073                        <template x-teleport=".page-wrapper">
8074                            <div x-cloak class="fixed inset-0 flex items-center justify-center
8075                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
8076                                <div class="relative bg-white rounded-lg shadow-xl
8077                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
8078                                    <div class="p-6">
8079                                        <!-- Subscription Form for Popup -->
8080                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
8081                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
8082                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
8083                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
8084
8085                                            <div class="flex flex-col gap-3">
8086                                                <div class="flex-grow grow">
8087                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
8088                                                        shadow-xs focus:outline-none focus:outline-hidden
8089                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
8090                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
8091                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
8092                                                </div>
8093                                                <input type="hidden" name="product_id" :value="currentProductId">
8094                                                <input type="hidden" name="type" value="email">
8095
8096                                                
8097                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
8098
8099                                                <div class="amxnotif_guest_action">
8100                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
8101                                                        rounded-md focus:outline-none
8102                                                        focus:outline-hidden focu
8102s:ring-2
8103                                                        focus:ring-offset-2 disabled:opacity-50
8104                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
8105                                                        Benachrichtigen                                                    </button>
8106                                                </div>
8107                                            </div>
8108
8109                                                                                            <div class="flex items-start pt-2">
8110                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
8111                                                        text-blue-600 border-gray-300 rounded-sm">
8112                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
8113                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
8114                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
8115                                                </div>
8116                                                                                    </form>
8117                                    </div>
8118
8119                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
8120                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
8121                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
8122  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
8123<title>x</title></svg>
8124                                    </button>
8125                                </div>
8126                            </div>
8127                        </template>
8128                    </template>
8129                </div>
8130                    </template>
8131    </div>
8132
8133<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_47209" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":47209,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46908":"1","47250":"1"},"childProductsAlertStatus":{"46908":"0","47250":"0"},"indexMapping":"{\u0022163:15\u0022:46908,\u0022163:8\u0022:47250}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":47209,"availabilityMessages":{"46908":"Lieferbar innerhalb von 3-5 Tagen","47250":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"47209":{"status":0},"46908":{"status":0},"47250":{"status":0}}}'>
8134    
8135    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
8136        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
8137        <span x-html="optionsLabelText"></span>
8138    </p>
8139</div>                </div>
8140            
8141                                
8141<script>
8142        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
8143            try {
8144                const attributes = (config && config.attributes) ? config.attributes : null;
8145                if (!attributes) return [];
8146                let attr = null;
8147                if (Array.isArray(attributes)) {
8148                    for (let i = 0; i < attributes.length; i++) {
8149                        const a = attributes[i];
8150                        if (a && a.id == attrId) {
8151                            attr = a;
8152                            break;
8153                        }
8154                    }
8155                } else {
8156                    attr = attributes[attrId];
8157                }
8158                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
8159            } catch (e) {
8160                return [];
8161            }
8162        };
8163
8164        function initConfigurableSwatchOptions_47209() {
8165            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46908"]},{"id":"8","label":"PDF","products":["47250"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46908":{"baseOldPrice":{"amount":67.289718626168},"oldPrice":{"amount":72},"basePrice":{"amount":67.289718626168},"finalPrice":{"amount":72},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47250":{"baseOldPrice":{"amount":46.719625168224},"oldPrice":{"amount":49.99},"basePrice":{"amount":46.719625168224},"finalPrice":{"amount":49.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":46.719625168224},"oldPrice":{"amount":49.99},"basePrice":{"amount":42.008402361345},"finalPrice":{"amount":49.99},"isApproxPrice":null},"productId":"47209","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46908":{"163":"15"},"47250":{"163":"8"}},"salable":{"163":{"15":["46908"],"8":["47250"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"46908":"000845-2026-1","47250":"eZKPh-2026-1"},"output":{"46908":"Kartoniert","47250":"PDF"},"original_name":{"46908":"","47250":""},"openaccess_license_link":{"46908":"","47250":""},"openaccess_license_name":{"46908":"","47250":""},"openaccess_external_link":{"46908":"","47250":""},"gpsr_safety_info":{"46908":"","47250":""},"description":{"46908":"Ernst Cassirer erkannte, dass der Mythos keine veraltete Lebensweise ist, sondern eine Form der Sinnstiftung und Weltgestaltung, die unser gesellschaftliches und politisches Leben noch heute ma\u00dfgeblich mitpr\u00e4gt. Mythen bieten zwar Orientierungsm\u00f6glichkeiten, bergen aber auch die Gefahr, in Ideologien umzuschlagen und somit individuelle sowie gesellschaftliche Selbstbestimmung zu gef\u00e4hrden. <br\/><br\/>Der Band reflektiert diese Ambivalenz des Mythos in aktuellen politischen und gesellschaftlichen Kontexten. Die Beitr\u00e4ge verbinden philosophische, anthropologische, rechtspolitische und \u00e4sthetische Perspektiven und zeigen, wie Mythen politische Orientierung, Meinungsbildung und Vorstellungen von Gerechtigkeit beeinflussen, zugleich aber nicht immun gegen Verblendung sind. ","47250":"Ernst Cassirer erkannte, dass der Mythos keine veraltete Lebensweise ist, sondern eine Form der Sinnstiftung und Weltgestaltung, die unser gesellschaftliches und politisches Leben noch heute ma\u00dfgeblich mitpr\u00e4gt. Mythen bieten zwar Orientierungsm\u00f6glichkeiten, bergen aber auch die Gefahr, in Ideologien umzuschlagen und somit individuelle sowie gesellschaftliche Selbstbestimmung zu gef\u00e4hrden. <br\/><br\/>Der Band reflektiert diese Ambivalenz des Mythos in aktuellen politischen und gesellschaftlichen Kontexten. Die Beitr\u00e4ge verbinden philosophische, anthropologische, rechtspolitische und \u00e4sthetische Perspektiven und zeigen, wie Mythen politische Orientierung, Meinungsbildung und Vorstellungen von Gerechtigkeit beeinflussen, zugleich aber nicht immun gegen Verblendung sind. "},"doi":{"46908":"","47250":"10.28937\/978-3-7873-5173-2"},"isbn":{"46908":"978-3-7873-5172-5","47250":"978-3-7873-5173-2"},"marketing_short_text":{"46908":"","47250":""},"recension_text":{"46908":"","47250":""},"language":{"46908":"","47250":""},"cover":{"46908":"Kartoniert","47250":""},"pages":{"46908":"184 Seiten.","47250":"184"},"edition":{"46908":"","47250":"Unver\u00e4ndertes eJournal der 1. Auflage von 2026"},"pod":{"46908":"Nein","47250":"Nein"},"copyright_year":{"46908":"","47250":""},"vlb_tix_link":{"46908":"https:\/\/neu.vlbtix.de\/products\/9783787351725?type=gtin","47250":""},"defaultValues":{"163":"15"}};
8166            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
8167
8168            if (typeof window.amxnotif_wrap_attributes === 'function') {
8169                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
8170                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
8171            }
8172
8173            const configurableOptionsComponent = initConfigurableOptions(
8174                '47209',
8175                config
8176            );
8177            const swatchOptionsComponent = initSwatchOptions(
8178                swatchConfig
8179            );
8180
8181            // DWS - Configurable product preselect start
8182            const confProdPreSelect = () => {
8183                return {
8184                    preselectQuerystringItems() {
8185                        var data = {"id":"46908","output":"15"};
8186                        const urlQueryParams = new URLSearchParams(window.location.search);
8187
8188                                                this.$nextTick(() => {
8189                            setTimeout(() => {
8190                                const rootEl = this.$root || this.$el;
8191                                if (!rootEl) return;
8192
8193                                const applySelection = (attrCode, attrValue) => {
8194                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
8195
8196                                    const attributes = Object.values(this.optionConfig.attributes || {});
8197                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
8198
8199                                    if (targetAttr) {
8200                                        const attrId = String(targetAttr.id);
8201                                        const optionVal = String(attrValue);
8202
8203                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
8204
8205                                        if (inputEl) {
8206                                                                                        inputEl.click();
8207                                            inputEl.dispatchEvent(new Event('change', {
8208                                                bubbles: true
8209                                            }));
8210                                        } else {
8211                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
8212                                            if (selectEl) {
8213                                                selectEl.value = optionVal;
8214                                                selectEl.dispatchEvent(new Event('change', {
8215                                                    bubbles: true
8216                                                }));
8217                                            }
8218                                        }
8219
8220                                                                                this.changeOption(attrId, optionVal, false);
8221                                    }
8222                                };
8223
8224                                                                if (data && typeof data === 'object') {
8225                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
8226                                }
8227
8228                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
8229                                    if (attribute && attribute.code) {
8230                                        let optionValue = urlQueryParams.get(attribute.code);
8231                                        if (optionValue) {
8232                                            let optionId = false;
8233                                            const attributes = Object.values(this.optionConfig.attributes || {});
8234                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
8235
8236                                            let found = false;
8237                                            Object.values(targetAttr.options).map(option => {
8238                                                if (found === false && option.label === optionValue) {
8239                                                    optionId = option.id;
8240                                                    found = true;
8241                                                }
8242                                            });
8243
8244                                            const attrId = String(targetAttr.id);
8245                                            let optionVal = String(optionValue);
8246                                            if (found) {
8247                                                optionVal = String(optionId);
8248                                            }
8249
8250                                            applySelection(attribute.code, optionVal);
8251                                        }
8252                                    }
8253                                });
8254                            }, 100);
8255                        });
8256                    }
8257                }
8258            };
8259            // DWS - Configurable product preselect end
8260
8261            const result = Object.assign(
8262                configurableOptionsComponent,
8263                swatchOptionsComponent, {
8264                    productId: '47209',
8265                    productIndex: 0,
8266                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
8267                    showSwatches: false,
8268                    precalcOptions: {},
8269                    originalInit: configurableOptionsComponent.init,
8270                    init() {
8271                        try {
8272                            this.precalcOptions = {};
8273                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
8274                            this.preselectQuerystringItems();
8275                            if (Array.isArray(attrSource)) {
8276                                attrSource.forEach(attr => {
8277                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
8278                                });
8279                            } else if (attrSource && typeof attrSource === 'object') {
8280                                Object.keys(attrSource).forEach(id => {
8281                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
8282                                });
8283                            }
8284                        } catch (e) {
8285                            console.error('Pre-calc error:', e);
8286                        }
8287
8288                        if (typeof this.originalInit === 'function') {
8289                            this.originalInit();
8290                        }
8291
8292                        try {
8293                            this.initShowSwatchesIntersect();
8294                        } catch (e) {
8295                            console.error('intersect error:', e);
8296                        }
8297                    },
8298
8299                    updateGallery() {
8300                        if (!this.productIndex) return;
8301
8302                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
8303                                method: 'GET',
8304                                headers: {
8305                                    'Content-Type': 'application/json',
8306                                    'X-Requested-With': 'XMLHttpRequest'
8307                                }
8308                            })
8309                            .then(response => response.json())
8310                            .then(data => {
8311                                if (data && data.medium) {
8312                                    window.dispatchEvent(new CustomEvent("update-gallery-47209", {
8313                                        detail: data.medium
8314                                    }));
8315                                }
8316                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
8317                    },
8318
8319
8320                    initShowSwatchesIntersect() {
8321                        const observer = new IntersectionObserver(entries => {
8322                            if (entries[0].isIntersecting) {
8323                                this.showSwatches = true;
8324                                observer.disconnect();
8325                            }
8326                        }, {
8327                            rootMargin: '512px'
8328                        });
8329                        observer.observe(this.$el);
8330                    },
8331                    getOptions(attrId) {
8332                        return this.precalcOptions[attrId] || [];
8333                    },
8334                    getOptionsByAttrId() {
8335                        return this.getOptions(this.$el.dataset.attributeId);
8336                    },
8337                    _getItemId() {
8338                        if (this.item && this.item.id) return this.item.id;
8339                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
8340                    },
8341                    getSwatchOptionHtmlId() {
8342                        const itemId = this._getItemId();
8343                        return itemId ? this.$id(`attribute-option-47209-${itemId}`) : '';
8344                    },
8345                    getSwatchOptionHtmlIdGroup() {
8346                        const itemId = this._getItemId();
8347                        return itemId ? [`attribute-option-47209-${itemId}`] : [];
8348                    },
8349                    getAttributeSwatchData(attributeId) {
8350                        const data = Object.assign({}, this.swatchConfig[attributeId]);
8351                        if (data['additional_data']) {
8352                            try {
8353                                data['details'] = JSON.parse(data['additional_data']);
8354                            } catch (e) {
8355                                data['details'] = {};
8356                            }
8357                        }
8358                        return data;
8359                    },
8360                    getSwatchType(attributeId, optionId) {
8361                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
8362                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
8363                        }
8364                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
8365                            this.swatchConfig[attributeId].details.swatch_input_type :
8366                            "empty";
8367                        if (type === 'visual') {
8368                            const config = this.swatchConfig[attributeId];
8369                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
8370                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
8371                            }
8372                            // Fallback to first option type
8373                            for (const oId in config) {
8374                                if (config[oId] && typeof config[oId].type !== 'undefined') {
8375                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
8376                                }
8377                            }
8378                        }
8379                        return type;
8380                    },
8381                    mapSwatchTypeNumberToTypeCode(type) {
8382                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
8383                    },
8384                    isTextSwatch() {
8385                        const itemId = this._getItemId();
8386                        if (!this.$el || !itemId) return false;
8387                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
8388                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
8389                    },
8390
8391                    getSwatchText() {
8392                        const itemId = this._getItemId();
8393                        if (this.item) return this.item.label || '';
8394                        if (!this.$el || !itemId) return '';
8395                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
8396                        const options = attrId ? this.getOptions(attrId) : [];
8397                        const opt = options.find(o => o.id == itemId);
8398                        return opt ? opt.label : '';
8399                    },
8400                    getSwatchBackgroundStyle() {
8401                        const itemId = this._getItemId();
8402                        if (!this.$el || !itemId) return '';
8403                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
8404                        if (!attrId) return '';
8405                        const type = this.getSwatchType(attrId, itemId);
8406                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
8407                            this.swatchConfig[attrId][itemId] :
8408                            null;
8409                        if (!swatchData) return '';
8410                        if (type === "color") return 'background-color:' + swatchData.value;
8411                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
8412                        return '';
8413                    },
8414                    swatchOptionClasses() {
8415                        const itemId = this._getItemId();
8416                        if (!this.$el || !itemId) return {};
8417                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
8418                        return {
8419                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
8420                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
8421                            'w-6 h-6': !this.isTextSwatch()
8422                        }
8423                    },
8424
8425                    onFocusSwatchItem() {
8426                        const itemId = this._getItemId();
8427                        if (itemId) this.focusedLabel = itemId;
8428                    },
8429                    onChangeOption() {
8430                        const itemId = this._getItemId();
8431                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
8432                        if (attrId && itemId) this.changeOption(attrId, itemId);
8433                    },
8434                    changeOption(attributeId, value) {
8435                        if (value === '') {
8436                            return;
8437                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
8438                        } else {
8439                            this.selectedValues[attributeId] = value;
8440                        }
8441
8442                        this.findSimpleIndex();
8443                        this.findAllowedAttributeOptions();
8444                        this.updatePrices();
8445                        this.updateGallery();
8446
8447                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
8448                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
8449
8450                        const eventDetail = {
8451                            productId: this.productId,
8452                            optionId: attributeId,
8453                            value: value,
8454                            productIndex: this.productIndex || 0,
8455                            selectedValues: this.selectedValues,
8456                            candidates: candidates,
8457                            sourceElement: this.$el
8458                        };
8459
8460                        // Dispatch for Amasty
8461                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
8462                            detail: eventDetail
8463                        }));
8464
8465                        // Dispatch for Hyva listing
8466                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
8467                            detail: eventDetail
8468                        }));
8469                    },
8470
8471
8472                    clearOptionIfActive() {
8473                        const itemId = this._getItemId();
8474                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
8475                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
8476                            this.changeOption(attrId, '');
8477
8478                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
8479                            if (!input && this.$el?.querySelector) {
8480                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
8481                            }
8482                            if (!input && this.$el?.closest) {
8483                                const root = this.$el.closest('[data-product-id]') || this.$el;
8484                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
8485                            }
8486                            if (input) {
8487                                input.checked = false;
8488                            }
8489                        }
8490                    },
8491                    get optionIsEnabled() {
8492                        const itemId = this._getItemId();
8493                        if (!this.$el || !itemId) return true;
8494                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
8495                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
8496                        return !!allowedOptions.find(opt => opt.id == itemId);
8497                    },
8498                    get isSelected() {
8499                        const itemId = this._getItemId();
8500                        if (!this.$el || !itemId) return false;
8501                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
8502                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
8503                    },
8504                    get isSwatchRequired() {
8505                        if (!this.$el) return false;
8506                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
8507                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
8508                    },
8509                    focusedLabel: false,
8510                    activeTooltipItem: false,
8511                    tooltipPositionElement: false,
8512                    setActiveTooltipItem() {
8513                        const itemId = this._getItemId();
8514                        if (!this.$el || !itemId) return;
8515                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
8516                        this.activeTooltipItem = {
8517                            attribute: attrId,
8518                            item: itemId,
8519                            index: 0
8520                        };
8521                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
8522                    },
8523                    unsetActiveTooltipItem() {
8524                        this.activeTooltipItem = false;
8525                    }
8526                },
8527                confProdPreSelect()
8528            );
8529
8530            if (result.optionConfig && result.optionConfig.attributes) {
8531                const attributes = result.optionConfig.attributes;
8532                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
8533                    let source = attributes;
8534                    if (Array.isArray(attributes)) {
8535                        source = {};
8536                        attributes.forEach(attr => {
8537                            if (attr && attr.id) source[attr.id] = attr;
8538                        });
8539                    }
8540                    const values = Object.values(source);
8541                    const wrapper = Object.assign(values, source);
8542                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
8543                        value: true,
8544                        enumerable: false
8545                    });
8546                    result.optionConfig.attributes = wrapper;
8547                }
8548            }
8549
8550            return result;
8551        }
8552
8553        window.addEventListener('alpine:init', () => {
8554            Alpine.data('initConfigurableSwatchOptions_47209', initConfigurableSwatchOptions_47209);
8555        }, {
8556            once: true
8557        });
8558    </script>
8558
8559    
8560    <div x-data="initConfigurableSwatchOptions_47209" x-defer="intersect">
8561        <div class="pagebuilder-home-hidden">
8562                                            
8563                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
8564                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
8565                        <template x-if="showSwatches">
8566                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-47209-163" role="radiogroup" aria-label="Einband">
8567                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
8568                                    <div :data-option-id="item.id" style="display: contents">
8569                                        <div x-id="getSwatchOptionHtmlIdGroup">
8570    <template x-if="optionIsEnabled">
8571        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
8571self="unsetActiveTooltipItem">
8572            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-47209-163">
8573            <div>
8574                <template x-if="isTextSwatch">
8575                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
8576                </template>
8577                <template x-if="!optionIsActive(163, item.id)">
8578                    <div>
8579                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
8580                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
8581                        </svg>
8582                    </div>
8583                </template>
8584            </div>
8585        </label>
8586    </template>
8587</div>                                    </div>
8588                                </template>
8589                            </div>
8590                        </template>
8591                    </div>
8592                </div>
8593                    </div>
8594    </div>
8595            
8596                                                <div class="meta py-4 pagebuilder-home-hidden">
8597                <div x-data="initMarketingShortText_47209()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
8598                    <!-- Marketing short text -->
8599                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
8600                    </div>
8601
8602                    <!-- Short description -->
8603                                                                <div class="short-description">
8604                            Ernst Cassirer erkannte, dass der Mythos keine veraltete Lebensweise ist, sondern eine Form der Sinnstiftung und Weltgestaltung, die unser gesellschaftliches und politisches Leben noch heute ...                            <a href="https://meiner.de/fmv_de/mythos-21935" class="underline">mehr</a>
8605                        </div>
8606                                    </div>
8607
8608                <!-- Series  -->
8609                                    <div class="mb-1">
8610                        <span class="sr-only">Reihe:</span>
8611                        <a href="https://meiner.de/fmv_de/programm/zeitschriften/zeitschrift-fur-kulturphilosophie">
8612                            <span>Zeitschrift f&uuml;r Kulturphilosophie</span>
8613                        </a>
8614                                                    2026/1                                            </div>
8615                
8616                
8617                                                    <div class="mb-1">
8618                        <span x-data="initEditionText_47209()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
8619                            <!-- Marketing short text -->
8620                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 184 Seiten.                        </span>
8621                    </div>
8622                
8623                            </div>
8624            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
8625                
8626                <div class="justify-end" x-data="initPriceBox()" @update-prices-47209.window="updatePrice($event.detail);">
8627                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="47209" data-price-box="product-id-47209"><span class="normal-price">
8628    <span x-data x-id="['product\u002Dprice\u002D47209']" class="price-container price-final_price tax weee">
8629            <span class="price-label">Ab</span>
8630                <span class="approx-price">ca. </span>
8631        <span :id="$id('product\u002Dprice\u002D47209')" data-price-amount="49.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">49,99&nbsp;&euro;</span></span>
8632        </span>
8633</span>
8634
8635
8636</div>                </div>
8637
8638                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
8639                                            <div class="open-access-container open-access-container-47209                    flex mt-4 ml-auto sm:mt-0 hidden">
8640                            <div class="text-gray-700">
8641                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
8642                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
8643                                        Kostenlos online lesen                                    </a>
8644                                </button>
8645                            </div>
8646                        </div>
8647                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Mythos" aria-label="In den Warenkorb Mythos" data-addto="cart">
8648                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
8649  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
86490 014 0z"></path>
8650</svg>
8651                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
8652                                        In den Warenkorb                                    </span>
8653                                </button>
8654                                                                                                                    
8655<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(47209)" aria-label="Zur Wunschliste hinzuf&uuml;gen Mythos" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
8656    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
8657  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
8658</svg>
8659</button>
8660                                    </div>
8661            </div>
8662        </div>
8663        
8663<script>
8664            function initMarketingShortText_47209() {
8665                var marketingShortTextConfig = {};
8666                if (typeof window.initConfigurableSwatchOptions_47209 === "function") {
8667                    var fullConfig = window.initConfigurableSwatchOptions_47209().optionConfig
8668                    var marketingShortTextConfig = fullConfig.marketing_short_text;
8669                }
8670                return {
8671                    marketingShortText: '',
8672                    config: marketingShortTextConfig,
8673                    productId: '47209',
8674                    getMarketingShortText(detail) {
8675                        this.marketingShortText = detail.productIndex ?
8676                            this.config[detail.productIndex] :
8677                            null;
8678                    },
8679                    eventListeners: {
8680                        ['@listing-configurable-selection-changed.window'](event) {
8681                            if (this.productId == event.detail.productId) {
8682                                this.getMarketingShortText(event.detail);
8683                            }
8684
8685                        }
8686                    }
8687                }
8688            }
8689
8690            function initEditionText_47209() {
8691                var editionTextConfig = {};
8692                if (typeof window.initConfigurableSwatchOptions_47209 === "function") {
8693                    var fullConfig = window.initConfigurableSwatchOptions_47209().optionConfig
8694                    var editionTextConfig = fullConfig.edition;
8695                }
8696                return {
8697                    editionText: '',
8698                    config: editionTextConfig,
8699                    productId: '47209',
8700                    getEditionText(detail) {
8701                        this.editionText = detail.productIndex ?
8702                            this.config[detail.productIndex] :
8703                            null;
8704                    },
8705                    eventListeners: {
8706                        ['@listing-configurable-selection-changed.window'](event) {
8707                            if (this.productId == event.detail.productId) {
8708                                this.getEditionText(event.detail);
8709                            }
8710
8711                        }
8712                    }
8713                }
8714            }
8715        </script>
8715
8716                    </form>
8717                            
8718    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/46707/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21368">
8719        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="46707">
8720                                    <a href="https://meiner.de/fmv_de/die-formen-des-denkens-21368" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
8721            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-46707.window="$el.src = $event.detail" alt="Die Formen des Denkens" title="Die Formen des Denkens" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351046_1.jpg" :style="{
8722                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
8723                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
8724            }">
8725                    </a>
8726        <div class="product-info flex flex-col flex-grow ">
8727                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
8728                                    <div class="mb-2 text-sm text-gray-500 font-medium">
8729                                                                                    <a href="https://meiner.de/fmv_de/person/Rolf-Schonberger-3862/" class="mb-2">
8730                                    Rolf Sch&ouml;nberger                                                                    </a>
8731                                                                                                                                    </div>
8732                                <a class="product-item-link" href="https://meiner.de/fmv_de/die-formen-des-denkens-21368">
8733                    Die Formen des Denkens                </a>
8734                            </div>
8735
8736            <div x-data="initEditionText_46707()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
8737                <!-- Marketing short text -->
8738                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
8739                </div>
8740            </div>
8741
8742                            <div class="py-1 grid  mb-4 ">
8743                    
8744                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":46707,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":46707,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46501":"1","46868":"1"},"childProductsAlertStatus":{"46501":"0","46868":"0"},"indexMapping":{"163:15":46501,"163:8":46868},"availabilityMessages":{"46501":"Lieferbar innerhalb von 3-5 Tagen","46868":"Download sofort  verf\u00fcgbar"},"openAccess":{"46707":{"status":0},"46501":{"status":0},"46868":{"status":0}}},"availabilityMessages":{"46501":"Lieferbar innerhalb von 3-5 Tagen","46868":"Download sofort  verf\u00fcgbar"},"openAccess":{"46707":{"status":0},"46501":{"status":0},"46868":{"status":0}}}'>
8745        <template x-if="containerVisible">
8746                            <!-- Popup Trigger -->
8747                <div>
8748                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
8749                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
8750                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
8751  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
8752<title>bell</title></svg>
8753</span>
8754                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
8755
8756                    <!-- Popup Modal -->
8757                    <template x-if="showModal">
8758                        <template x-teleport=".page-wrapper">
8759                            <div x-cloak class="fixed inset-0 flex items-center justify-center
8760                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
8761                                <div class="relative bg-white rounded-lg shadow-xl
8762                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
8763                                    <div class="p-6">
8764                                        <!-- Subscription Form for Popup -->
8765                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
8766                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
8767                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
8768                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
8769
8770                                            <div class="flex flex-col gap-3">
8771                                                <div class="flex-grow grow">
8772                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
8773                                                        shadow-xs focus:outline-none focus:outline-hidden
8774                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
8775                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
8776                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
8777                                                </div>
8778                                                <input type="hidden" name="product_id" :value="currentProductId">
8779                                                <input type="hidden" name="type" value="email">
8780
8781                                                
8782                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
8783
8784                                                <div class="amxnotif_guest_action">
8785                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
8786                                                        rounded-md focus:outline-none
8787                                                        focus:outline-hidden focus:ring-2
8788                                                        focus:ring-offset-2 disabled:opacity-50
8789                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
8790                                                        Benachrichtigen                                                    </button>
8791                                                </div>
8792                                            </div>
8793
8794                                                                                            <div class="flex items-start pt-2">
8795                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
8796                                                        text-blue-600 border-gray-300 rounded-sm">
8797                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
8798                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
8799                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
8800                                                </div>
8801                                                                                    </form>
8802                                    </div>
8803
8804                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
8805                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
8806                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
8807  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
8808<title>x</title></svg>
8809                                    </button>
8810                                </div>
8811                            </div>
8812                        </template>
8813                    </template>
8814                </div>
8815                    </template>
8816    </div>
8817
8818<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_46707" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":46707,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46501":"1","46868":"1"},"childProductsAlertStatus":{"46501":"0","46868":"0"},"indexMapping":"{\u0022163:15\u0022:46501,\u0022163:8\u0022:46868}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":46707,"availabilityMessages":{"46501":"Lieferbar innerhalb von 3-5 Tagen","46868":"Download sofort  verf\u00fcgbar"},"openAccess":{"46707":{"status":0},"46501":{"status":0},"46868":{"status":0}}}'>
8819    
8820    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
8821        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
8822        <span x-html="optionsLabelText"></span>
8823    </p>
8824</div>                </div>
8825            
8826                                
8826<script>
8827        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
8828            try {
8829                const attributes = (config && config.attributes) ? config.attributes : null;
8830                if (!attributes) return [];
8831                let attr = null;
8832                if (Array.isArray(attributes)) {
8833                    for (let i = 0; i < attributes.length; i++) {
8834                        const a = attributes[i];
8835                        if (a && a.id == attrId) {
8836                            attr = a;
8837                            break;
8838                        }
8839                    }
8840                } else {
8841                    attr = attributes[attrId];
8842                }
8843                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
8844            } catch (e) {
8845                return [];
8846            }
8847        };
8848
8849        function initConfigurableSwatchOptions_46707() {
8850            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46501"]},{"id":"8","label":"PDF","products":["46868"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46501":{"baseOldPrice":{"amount":87.85046628972},"oldPrice":{"amount":94},"basePrice":{"amount":87.85046628972},"finalPrice":{"amount":94},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46868":{"baseOldPrice":{"amount":65.411213953271},"oldPrice":{"amount":69.99},"basePrice":{"amount":65.411213953271},"finalPrice":{"amount":69.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":65.411213953271},"oldPrice":{"amount":69.99},"basePrice":{"amount":58.81512505042},"finalPrice":{"amount":69.99},"isApproxPrice":null},"productId":"46707","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46501":{"163":"15"},"46868":{"163":"8"}},"salable":{"163":{"15":["46501"],"8":["46868"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"46501":"005103","46868":"005104"},"output":{"46501":"Kartoniert","46868":"PDF"},"original_name":{"46501":"","46868":""},"openaccess_license_link":{"46501":"","46868":""},"openaccess_license_name":{"46501":"","46868":""},"openaccess_external_link":{"46501":"","46868":""},"gpsr_safety_info":{"46501":"","46868":""},"description":{"46501":"Dass man Thesen und Argumente verstehen kann, ist in der Philosophie nicht kontrovers. Aber kann man eine Philosophie als ganze verstehen? Die Suche nach einer leitenden Intention ist vielleicht anf\u00e4nglich hilfreich, aber sie st\u00f6\u00dft schnell auf die Frage: Woher stammt diese Intention?<br\/><br\/>Im 20. Jahrhundert ist der Begriff \u203aDenkform\u2039 in Mode gekommen, um all das zu fassen, was f\u00fcr einen philosophischen Versuch bestimmend ist: der grundlegende Ansatz, die leitenden Gesichtspunkte, die unausgesprochenen Grenzen zwischen dem stillschweigend Vorausgesetzten und dem Begr\u00fcndungsbed\u00fcrftigen, die Voraussetzungen der Pr\u00e4missen etc.<br\/><br\/>Die vorliegende Untersuchung will zeigen, dass die Denkform bereits in der Philosophie des Mittelalters entdeckt worden ist \u2013 also in einem Kontext, in dem es prim\u00e4r \u203anur\u2039 um die Wahrheit von Aussagen und die B\u00fcndigkeit von Begr\u00fcndungen ging. Falls der Befund zutrifft, liegt darin ein bemerkenswerter Beleg f\u00fcr ein genuin philosophisches Interesse im Denken des Mittelalters. Insbesondere bei Thomas von Aquin l\u00e4sst sich dieses Interesse im Umgang mit den bedeutenden Philosophien der Antike \u2013 Platon und Aristoteles \u2013, aber auch mit den pr\u00e4genden Orientierungsautoren wie Augustinus nachweisen. Thomas hat sogar versucht, die erste Epoche der Philosophie in ihrer Schrittfolge nicht blo\u00df doxographisch zu beschreiben, sondern in ihrer Folgerichtigkeit verst\u00e4ndlich zu machen.","46868":"Dass man Thesen und Argumente verstehe
8850n kann, ist in der Philosophie nicht kontrovers. Aber kann man eine Philosophie als ganze verstehen? Die Suche nach einer leitenden Intention ist vielleicht anf\u00e4nglich hilfreich, aber sie st\u00f6\u00dft schnell auf die Frage: Woher stammt diese Intention?<br\/><br\/>Im 20. Jahrhundert ist der Begriff \u203aDenkform\u2039 in Mode gekommen, um all das zu fassen, was f\u00fcr einen philosophischen Versuch bestimmend ist: der grundlegende Ansatz, die leitenden Gesichtspunkte, die unausgesprochenen Grenzen zwischen dem stillschweigend Vorausgesetzten und dem Begr\u00fcndungsbed\u00fcrftigen, die Voraussetzungen der Pr\u00e4missen etc.<br\/><br\/>Die vorliegende Untersuchung will zeigen, dass die Denkform bereits in der Philosophie des Mittelalters entdeckt worden ist \u2013 also in einem Kontext, in dem es prim\u00e4r \u203anur\u2039 um die Wahrheit von Aussagen und die B\u00fcndigkeit von Begr\u00fcndungen ging. Falls der Befund zutrifft, liegt darin ein bemerkenswerter Beleg f\u00fcr ein genuin philosophisches Interesse im Denken des Mittelalters. Insbesondere bei Thomas von Aquin l\u00e4sst sich dieses Interesse im Umgang mit den bedeutenden Philosophien der Antike \u2013 Platon und Aristoteles \u2013, aber auch mit den pr\u00e4genden Orientierungsautoren wie Augustinus nachweisen. Thomas hat sogar versucht, die erste Epoche der Philosophie in ihrer Schrittfolge nicht blo\u00df doxographisch zu beschreiben, sondern in ihrer Folgerichtigkeit verst\u00e4ndlich zu machen."},"doi":{"46501":"","46868":"10.28937\/978-3-7873-5104-6"},"isbn":{"46501":"978-3-7873-5103-9","46868":"978-3-7873-5104-6"},"marketing_short_text":{"46501":"","46868":""},"recension_text":{"46501":"","46868":""},"language":{"46501":"","46868":""},"cover":{"46501":"Kartoniert","46868":""},"pages":{"46501":"240 Seiten.","46868":"240 Seiten."},"edition":{"46501":"","46868":"Unver\u00e4ndertes eBook der 1. Auflage von 2026"},"pod":{"46501":"Nein","46868":"Nein"},"copyright_year":{"46501":"","46868":""},"vlb_tix_link":{"46501":"https:\/\/neu.vlbtix.de\/products\/9783787351039?type=gtin","46868":""},"defaultValues":{"163":"15"}};
8851            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
8852
8853            if (typeof window.amxnotif_wrap_attributes === 'function') {
8854                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
8855                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
8856            }
8857
8858            const configurableOptionsComponent = initConfigurableOptions(
8859                '46707',
8860                config
8861            );
8862            const swatchOptionsComponent = initSwatchOptions(
8863                swatchConfig
8864            );
8865
8866            // DWS - Configurable product preselect start
8867            const confProdPreSelect = () => {
8868                return {
8869                    preselectQuerystringItems() {
8870                        var data = {"id":"46501","output":"15"};
8871                        const urlQueryParams = new URLSearchParams(window.location.search);
8872
8873                                                this.$nextTick(() => {
8874                            setTimeout(() => {
8875                                const rootEl = this.$root || this.$el;
8876                                if (!rootEl) return;
8877
8878                                const applySelection = (attrCode, attrValue) => {
8879                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
8880
8881                                    const attributes = Object.values(this.optionConfig.attributes || {});
8882                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
8883
8884                                    if (targetAttr) {
8885                                        const attrId = String(targetAttr.id);
8886                                        const optionVal = String(attrValue);
8887
8888                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
8889
8890                                        if (inputEl) {
8891                                                                                        inputEl.click();
8892                                            inputEl.dispatchEvent(new Event('change', {
8893                                                bubbles: true
8894                                            }));
8895                                        } else {
8896                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
8897                                            if (selectEl) {
8898                                                selectEl.value = optionVal;
8899                                                selectEl.dispatchEvent(new Event('change', {
8900                                                    bubbles: true
8901                                                }));
8902                                            }
8903                                        }
8904
8905                                                                                this.changeOption(attrId, optionVal, false);
8906                                    }
8907                                };
8908
8909                                                                if (data && typeof data === 'object') {
8910                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
8911                                }
8912
8913                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
8914                                    if (attribute && attribute.code) {
8915                                        let optionValue = urlQueryParams.get(attribute.code);
8916                                        if (optionValue) {
8917                                            let optionId = false;
8918                                            const attributes = Object.values(this.optionConfig.attributes || {});
8919                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
8920
8921                                            let found = false;
8922                                            Object.values(targetAttr.options).map(option => {
8923                                                if (found === false && option.label === optionValue) {
8924                                                    optionId = option.id;
8925                                                    found = true;
8926                                                }
8927                                            });
8928
8929                                            const attrId = String(targetAttr.id);
8930                                            let optionVal = String(optionValue);
8931                                            if (found) {
8932                                                optionVal = String(optionId);
8933                                            }
8934
8935                                            applySelection(attribute.code, optionVal);
8936                                        }
8937                                    }
8938                                });
8939                            }, 100);
8940                        });
8941                    }
8942                }
8943            };
8944            // DWS - Configurable product preselect end
8945
8946            const result = Object.assign(
8947                configurableOptionsComponent,
8948                swatchOptionsComponent, {
8949                    productId: '46707',
8950                    productIndex: 0,
8951                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
8952                    showSwatches: false,
8953                    precalcOptions: {},
8954                    originalInit: configurableOptionsComponent.init,
8955                    init() {
8956                        try {
8957                            this.precalcOptions = {};
8958                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
8959                            this.preselectQuerystringItems();
8960                            if (Array.isArray(attrSource)) {
8961                                attrSource.forEach(attr => {
8962                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
8963                                });
8964                            } else if (attrSource && typeof attrSource === 'object') {
8965                                Object.keys(attrSource).forEach(id => {
8966                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
8967                                });
8968                            }
8969                        } catch (e) {
8970                            console.error('Pre-calc error:', e);
8971                        }
8972
8973                        if (typeof this.originalInit === 'function') {
8974                            this.originalInit();
8975                        }
8976
8977                        try {
8978                            this.initShowSwatchesIntersect();
8979                        } catch (e) {
8980                            console.error('intersect error:', e);
8981                        }
8982                    },
8983
8984                    updateGallery() {
8985                        if (!this.productIndex) return;
8986
8987                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
8988                                method: 'GET',
8989                                headers: {
8990                                    'Content-Type': 'application/json',
8991                                    'X-Requested-With': 'XMLHttpRequest'
8992                                }
8993                            })
8994                            .then(response => response.json())
8995                            .then(data => {
8996                                if (data && data.medium) {
8997                                    window.dispatchEvent(new CustomEvent("update-gallery-46707", {
8998                                        detail: data.medium
8999                                    }));
9000                                }
9001                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
9002                    },
9003
9004
9005                    initShowSwatchesIntersect() {
9006                        const observer = new IntersectionObserver(entries => {
9007                            if (entries[0].isIntersecting) {
9008                                this.showSwatches = true;
9009                                observer.disconnect();
9010                            }
9011                        }, {
9012                            rootMargin: '512px'
9013                        });
9014                        observer.observe(this.$el);
9015                    },
9016                    getOptions(attrId) {
9017                        return this.precalcOptions[attrId] || [];
9018                    },
9019                    getOptionsByAttrId() {
9020                        return this.getOptions(this.$el.dataset.attributeId);
9021                    },
9022                    _getItemId() {
9023                        if (this.item && this.item.id) return this.item.id;
9024                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
9025                    },
9026                    getSwatchOptionHtmlId() {
9027                        const itemId = this._getItemId();
9028                        return itemId ? this.$id(`attribute-option-46707-${itemId}`) : '';
9029                    },
9030                    getSwatchOptionHtmlIdGroup() {
9031                        const itemId = this._getItemId();
9032                        return itemId ? [`attribute-option-46707-${itemId}`] : [];
9033                    },
9034                    getAttributeSwatchData(attributeId) {
9035                        const data = Object.assign({}, this.swatchConfig[attributeId]);
9036                        if (data['additional_data']) {
9037                            try {
9038                                data['details'] = JSON.parse(data['additional_data']);
9039                            } catch (e) {
9040                                data['details'] = {};
9041                            }
9042                        }
9043                        return data;
9044                    },
9045                    getSwatchType(attributeId, optionId) {
9046                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
9047                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
9048                        }
9049                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
9050                            this.swatchConfig[attributeId].details.swatch_input_type :
9051                            "empty";
9052                        if (type === 'visual') {
9053                            const config = this.swatchConfig[attributeId];
9054                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
9055                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
9056                            }
9057                            // Fallback to first option type
9058                            for (const oId in config) {
9059                                if (config[oId] && typeof config[oId].type !== 'undefined') {
9060                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
9061                                }
9062                            }
9063                        }
9064                        return type;
9065                    },
9066                    mapSwatchTypeNumberToTypeCode(type) {
9067                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
9068                    },
9069                    isTextSwatch() {
9070                        const itemId = this._getItemId();
9071                        if (!this.$el || !itemId) return false;
9072                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
9073                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
9074                    },
9075
9076                    getSwatchText() {
9077                        const itemId = this._getItemId();
9078                        if (this.item) return this.item.label || '';
9079                        if (!this.$el || !itemId) return '';
9080                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
9081                        const options = attrId ? this.getOptions(attrId) : [];
9082                        const opt = options.find(o => o.id == itemId);
9083                        return opt ? opt.label : '';
9084                    },
9085                    getSwatchBackgroundStyle() {
9086                        const itemId = this._getItemId();
9087                        if (!this.$el || !itemId) return '';
9088                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
9089                        if (!attrId) return '';
9090                        const type = this.getSwatchType(attrId, itemId);
9091                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
9092                            this.swatchConfig[attrId][itemId] :
9093                            null;
9094                        if (!swatchData) return '';
9095                        if (type === "color") return 'background-color:' + swatchData.value;
9096                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
9097                        return '';
9098                    },
9099                    swatchOptionClasses() {
9100                        const itemId = this._getItemId();
9101                        if (!this.$el || !itemId) return {};
9102                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
9103                        return {
9104                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
9105                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
9106                            'w-6 h-6': !this.isTextSwatch()
9107                        }
9108                    },
9109
9110                    onFocusSwatchItem() {
9111                        const itemId = this._getItemId();
9112                        if (itemId) this.focusedLabel = itemId;
9113                    },
9114                    onChangeOption() {
9115                        const itemId = this._getItemId();
9116                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
9117                        if (attrId && itemId) this.changeOption(attrId, itemId);
9118                    },
9119                    changeOption(attributeId, value) {
9120                        if (value === '') {
9121                            return;
9122                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
9123                        } else {
9124                            this.selectedValues[attributeId] = value;
9125                        }
9126
9127                        this.findSimpleIndex();
9128                        this.findAllowedAttributeOptions();
9129                        this.updatePrices();
9130                        this.updateGallery();
9131
9132                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
9133                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
9134
9135                        const eventDetail = {
9136                            productId: this.productId,
9137                            optionId: attributeId,
9138                            value: value,
9139                            productIndex: this.productIndex || 0,
9140                            selectedValues: this.selectedValues,
9141                            candidates: candidates,
9142                            sourceElement: this.$el
9143                        };
9144
9145                        // Dispatch for Amasty
9146                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
9147                            detail: eventDetail
9148                        }));
9149
9150                        // Dispatch for Hyva listing
9151                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
9152                            detail: eventDetail
9153                        }));
9154                    },
9155
9156
9157                    clearOptionIfActive() {
9158                        const itemId = this._getItemId();
9159                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
9160                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
9161                            this.changeOption(attrId, '');
9162
9163                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
9164                            if (!input && this.$el?.querySelector) {
9165                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
9166                            }
9167                            if (!input && this.$el?.closest) {
9168                                const root = this.$el.closest('[data-product-id]') || this.$el;
9169                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
9170                            }
9171                            if (input) {
9172                                input.checked = false;
9173                            }
9174                        }
9175                    },
9176                    get optionIsEnabled() {
9177                        const itemId = this._getItemId();
9178                        if (!this.$el || !itemId) return true;
9179                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
9180                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
9181                        return !!allowedOptions.find(opt => opt.id == itemId);
9182                    },
9183                    get isSelected() {
9184                        const itemId = this._getItemId();
9185                        if (!this.$el || !itemId) return false;
9186                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
9187                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
9188                    },
9189                    get isSwatchRequired() {
9190                        if (!this.$el) return false;
9191                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
9192                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
9193                    },
9194                    focusedLabel: false,
9195                    activeTooltipItem: false,
9196                    tooltipPositionElement: false,
9197                    setActiveTooltipItem() {
9198                        const itemId = this._getItemId();
9199                        if (!this.$el || !itemId) return;
9200                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
9201                        this.activeTooltipItem = {
9202                            attribute: attrId,
9203                            item: itemId,
9204                            index: 0
9205                        };
9206                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
9207                    },
9208                    unsetActiveTooltipItem() {
9209                        this.activeTooltipItem = false;
9210                    }
9211                },
9212                confProdPreSelect()
9213            );
9214
9215            if (result.optionConfig && result.optionConfig.attributes) {
9216                const attributes = result.optionConfig.attributes;
9217                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
9218                    let source = attributes;
9219                    if (Array.isArray(attributes)) {
9220                        source = {};
9221                        attributes.forEach(attr => {
9222                            if (attr && attr.id) source[attr.id] = attr;
9223                        });
9224                    }
9225                    const values = Object.values(source);
9226                    const wrapper = Object.assign(values, source);
9227                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
9228                        value: true,
9229                        enumerable: false
9230                    });
9231                    result.optionConfig.attributes = wrapper;
9232                }
9233            }
9234
9235            return result;
9236        }
9237
9238        window.addEventListener('alpine:init', () => {
9239            Alpine.data('initConfigurableSwatchOptions_46707', initConfigurableSwatchOptions_46707);
9240        }, {
9241            once: true
9242        });
9243    </script>
9243
9244    
9245    <div x-data="initConfigurableSwatchOptions_46707" x-defer="intersect">
9246        <div class="pagebuilder-home-hidden">
9247                                            
9248                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
9249                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
9250                        <template x-if="showSwatches">
9251                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-46707-163" role="radiogroup" aria-label="Einband">
9252                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
9253                                    <div :data-option-id="item.id" style="display: contents">
9254                                        <div x-id="getSwatchOptionHtmlIdGroup">
9255    <template x-if="optionIsEnabled">
9256        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
9256self="unsetActiveTooltipItem">
9257            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-46707-163">
9258            <div>
9259                <template x-if="isTextSwatch">
9260                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
9261                </template>
9262                <template x-if="!optionIsActive(163, item.id)">
9263                    <div>
9264                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
9265                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
9266                        </svg>
9267                    </div>
9268                </template>
9269            </div>
9270        </label>
9271    </template>
9272</div>                                    </div>
9273                                </template>
9274                            </div>
9275                        </template>
9276                    </div>
9277                </div>
9278                    </div>
9279    </div>
9280            
9281                                                <div class="meta py-4 pagebuilder-home-hidden">
9282                <div x-data="initMarketingShortText_46707()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
9283                    <!-- Marketing short text -->
9284                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
9285                    </div>
9286
9287                    <!-- Short description -->
9288                                                                <div class="short-description">
9289                            Dass man Thesen und Argumente verstehen kann, ist in der Philosophie nicht kontrovers. Aber kann man eine Philosophie als ganze verstehen? Die Suche nach einer leitenden Intention ist vielleicht ...                            <a href="https://meiner.de/fmv_de/die-formen-des-denkens-21368" class="underline">mehr</a>
9290                        </div>
9291                                    </div>
9292
9293                <!-- Series  -->
9294                                    <div class="mb-1">
9295                        <span class="sr-only">Reihe:</span>
9296                        <a href="https://meiner.de/fmv_de/programm/reihen/studien-zu-den-quaestiones-disputatae-des-thomas-von-aquin">
9297                            <span>Studien zu den Quaestiones Disputatae des Thomas von Aquin</span>
9298                        </a>
9299                                            </div>
9300                
9301                
9302                                                    <div class="mb-1">
9303                        <span x-data="initEditionText_46707()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
9304                            <!-- Marketing short text -->
9305                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 240 Seiten.                        </span>
9306                    </div>
9307                
9308                            </div>
9309            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
9310                
9311                <div class="justify-end" x-data="initPriceBox()" @update-prices-46707.window="updatePrice($event.detail);">
9312                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="46707" data-price-box="product-id-46707"><span class="normal-price">
9313    <span x-data x-id="['product\u002Dprice\u002D46707']" class="price-container price-final_price tax weee">
9314            <span class="price-label">Ab</span>
9315                <span class="approx-price">ca. </span>
9316        <span :id="$id('product\u002Dprice\u002D46707')" data-price-amount="69.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">69,99&nbsp;&euro;</span></span>
9317        </span>
9318</span>
9319
9320
9321</div>                </div>
9322
9323                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
9324                                            <div class="open-access-container open-access-container-46707                    flex mt-4 ml-auto sm:mt-0 hidden">
9325                            <div class="text-gray-700">
9326                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
9327                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
9328                                        Kostenlos online lesen                                    </a>
9329                                </button>
9330                            </div>
9331                        </div>
9332                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Die Formen des Denkens" aria-label="In den Warenkorb Die Formen des Denkens" data-addto="cart">
9333                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
9334  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
93340 014 0z"></path>
9335</svg>
9336                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
9337                                        In den Warenkorb                                    </span>
9338                                </button>
9339                                                                                                                    
9340<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(46707)" aria-label="Zur Wunschliste hinzuf&uuml;gen Die Formen des Denkens" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
9341    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
9342  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
9343</svg>
9344</button>
9345                                    </div>
9346            </div>
9347        </div>
9348        
9348<script>
9349            function initMarketingShortText_46707() {
9350                var marketingShortTextConfig = {};
9351                if (typeof window.initConfigurableSwatchOptions_46707 === "function") {
9352                    var fullConfig = window.initConfigurableSwatchOptions_46707().optionConfig
9353                    var marketingShortTextConfig = fullConfig.marketing_short_text;
9354                }
9355                return {
9356                    marketingShortText: '',
9357                    config: marketingShortTextConfig,
9358                    productId: '46707',
9359                    getMarketingShortText(detail) {
9360                        this.marketingShortText = detail.productIndex ?
9361                            this.config[detail.productIndex] :
9362                            null;
9363                    },
9364                    eventListeners: {
9365                        ['@listing-configurable-selection-changed.window'](event) {
9366                            if (this.productId == event.detail.productId) {
9367                                this.getMarketingShortText(event.detail);
9368                            }
9369
9370                        }
9371                    }
9372                }
9373            }
9374
9375            function initEditionText_46707() {
9376                var editionTextConfig = {};
9377                if (typeof window.initConfigurableSwatchOptions_46707 === "function") {
9378                    var fullConfig = window.initConfigurableSwatchOptions_46707().optionConfig
9379                    var editionTextConfig = fullConfig.edition;
9380                }
9381                return {
9382                    editionText: '',
9383                    config: editionTextConfig,
9384                    productId: '46707',
9385                    getEditionText(detail) {
9386                        this.editionText = detail.productIndex ?
9387                            this.config[detail.productIndex] :
9388                            null;
9389                    },
9390                    eventListeners: {
9391                        ['@listing-configurable-selection-changed.window'](event) {
9392                            if (this.productId == event.detail.productId) {
9393                                this.getEditionText(event.detail);
9394                            }
9395
9396                        }
9397                    }
9398                }
9399            }
9400        </script>
9400
9401                    </form>
9402                            
9403    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/46699/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk17982">
9404        <input name="form_key" type="hidden" value="R6NBsKL42phFmgWc">        <input type="hidden" name="product" value="46699">
9405                                    <a href="https://meiner.de/fmv_de/von-sa-a-en-la-gen-und-bilderlosen-bildern-17982" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
9406            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-46699.window="$el.src = $event.detail" alt="Von s&uuml;&szlig;en L&uuml;gen und bilderlosen Bildern" title="Von s&uuml;&szlig;en L&uuml;gen und bilderlosen Bildern" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787349517_1.jpg" :style="{
9407                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
9408                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
9409            }">
9410                    </a>
9411        <div class="product-info flex flex-col flex-grow ">
9412                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
9413                                    <div class="mb-2 text-sm text-gray-500 font-medium">
9414                                                                                    <a href="https://meiner.de/fmv_de/person/Josef-Fruchtl-3439/" class="mb-2">
9415                                    Josef Fr&uuml;chtl                                                                    </a>
9416                                                                                                                                    </div>
9417                                <a class="product-item-link" href="https://meiner.de/fmv_de/von-sa-a-en-la-gen-und-bilderlosen-bildern-17982">
9418                    Von s&uuml;&szlig;en L&uuml;gen und bilderlosen Bildern                </a>
9419                            </div>
9420
9421            <div x-data="initEditionText_46699()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
9422                <!-- Marketing short text -->
9423                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
9424                </div>
9425            </div>
9426
9427                            <div class="py-1 grid  mb-4 ">
9428                    
9429                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":46699,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":46699,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2Rl","childProducts":{"46488":"1","46737":"1","46736":"1"},"childProductsAlertStatus":{"46488":"0","46737":"0","46736":"0"},"indexMapping":{"163:15":46488,"163:9":46737,"163:8":46736},"availabilityMessages":{"46488":"Lieferbar innerhalb von 3-5 Tagen","46737":"Download sofort  verf\u00fcgbar","46736":"Download sofort  verf\u00fcgbar"},"openAccess":{"46699":{"status":0},"46488":{"status":0},"46737":{"status":0},"46736":{"status":0}}},"availabilityMessages":{"46488":"Lieferbar innerhalb von 3-5 Tagen","46737":"Download sofort  verf\u00fcgbar","46736":"Download sofort  verf\u00fcgbar"},"openAccess":{"46699":{"status":0},"46488":{"status":0},"46737":{"status":0},"46736":{"status":0}}}'>
9430        <template x-if="containerVisible">
9431                            <!-- Popup Trigger -->
9432                <div>
9433                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
9434                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
9435                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
9436  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
9437<title>bell</title></svg>
9438</span>
9439                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
9440
9441                    <!-- Popup Modal -->
9442                    <template x-if="showModal">
9443                        <template x-teleport=".page-wrapper">
9444                            <div x-cloak class="fixed inset-0 flex items-center justify-center
9445                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
9446                                <div class="relative bg-white rounded-lg shadow-xl
9447                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
9448                                    <div class="p-6">
9449                                        <!-- Subscription Form for Popup -->
9450                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
9451                                            <input name="form_key" type="hidden" value="R6NBsKL42phFmgWc">
9452                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
9453                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
9454
9455                                            <div class="flex flex-col gap-3">
9456                                                <div class="flex-grow grow">
9457                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
9458                                                        shadow-xs focus:outline-none focus:outline-hidden
9459                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
9460                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
9461                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
9462                                                </div>
9463                                                <input type="hidden" name="product_id" :value="currentProductId">
9464                                                <input type="hidden" name="type" value="email">
9465
9466                                                
9467                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvZm12X2Rl">
9468
9469                                                <div class="amxnotif_guest_action">
9470                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
9471                                                        rounded-md focus:outline-none
9472                                                        focus:outline-hidden focus:ring-2
9473                                                        focus:ring-offset-2 disabled:opacity-50
9474                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
9475                                                        Benachrichtigen                                                    </button>
9476                                                </div>
9477                                            </div>
9478
9479                                                                                            <div class="flex items-start pt-2">
9480                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
9481                                                        text-blue-600 border-gray-300 rounded-sm">
9482                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
9483                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
9484                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
9485                                                </div>
9486                                                                                    </form>
9487                                    </div>
9488
9489                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
9490                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
9491                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
9492  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
9493<title>x</title></svg>
9494                                    </button>
9495                                </div>
9496                            </div>
9497                        </template>
9498                    </template>
9499                </div>
9500                    </template>
9501    </div>
9502
9503<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_46699" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":46699,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2Rl","childProducts":{"46488":"1","46737":"1","46736":"1"}
9503,"childProductsAlertStatus":{"46488":"0","46737":"0","46736":"0"},"indexMapping":"{\u0022163:15\u0022:46488,\u0022163:9\u0022:46737,\u0022163:8\u0022:46736}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":46699,"availabilityMessages":{"46488":"Lieferbar innerhalb von 3-5 Tagen","46737":"Download sofort  verf\u00fcgbar","46736":"Download sofort  verf\u00fcgbar"},"openAccess":{"46699":{"status":0},"46488":{"status":0},"46737":{"status":0},"46736":{"status":0}}}'>
9504    
9505    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
9506        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
9507        <span x-html="optionsLabelText"></span>
9508    </p>
9509</div>                </div>
9510            
9511                                
9511<script>
9512        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
9513            try {
9514                const attributes = (config && config.attributes) ? config.attributes : null;
9515                if (!attributes) return [];
9516                let attr = null;
9517                if (Array.isArray(attributes)) {
9518                    for (let i = 0; i < attributes.length; i++) {
9519                        const a = attributes[i];
9520                        if (a && a.id == attrId) {
9521                            attr = a;
9522                            break;
9523                        }
9524                    }
9525                } else {
9526                    attr = attributes[attrId];
9527                }
9528                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
9529            } catch (e) {
9530                return [];
9531            }
9532        };
9533
9534        function initConfigurableSwatchOptions_46699() {
9535            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46488"]},{"id":"8","label":"PDF","products":["46736"]},{"id":"9","label":"EPUB","products":["46737"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46488":{"baseOldPrice":{"amount":23.271027037383},"oldPrice":{"amount":24.9},"basePrice":{"amount":23.271027037383},"finalPrice":{"amount":24.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46737":{"baseOldPrice":{"amount":18.682241990654},"oldPrice":{"amount":19.99},"basePrice":{"amount":18.682241990654},"finalPrice":{"amount":19.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46736":{"baseOldPrice":{"amount":18.682241990654},"oldPrice":{"amount":19.99},"basePrice":{"amount":18.682241990654},"finalPrice":{"amount":19.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":18.682241990654},"oldPrice":{"amount":19.99},"basePrice":{"amount":16.798318327731},"finalPrice":{"amount":19.99},"isApproxPrice":null},"productId":"46699","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46488":{"163":"15"},"46737":{"163":"9"},"46736":{"163":"8"}},"salable":{"163":{"15":["46488"],"9":["46737"],"8":["46736"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"46488":"004949","46737":"004951","46736":"004950"},"output":{"46488":"Kartoniert","46736":"PDF","46737":"EPUB"},"original_name":{"46488":"","46736":"","46737":""},"openaccess_license_link":{"46488":"","46736":"","46737":""},"openaccess_license_name":{"46488":"","46736":"","46737":""},"openaccess_external_link":{"46488":"","46736":"","46737":""},"gpsr_safety_info":{"46488":"","46736":"","46737":""},"description":{"46488":"Die Filmphilosophie ist im Laufe des 20. Jahrhunderts zu einem kleinen, aber etablierten Bereich der Philosophie geworden. Von Hugo M\u00fcnsterberg (1916), Rudolf Arnheim, Rudolf Harms und Siegfried Kracauer \u00fcber Benjamin und Adorno bis zu Stanley Cavell und Gilles Deleuze sind eine Vielzahl an philosophischen Abhandlungen und Theorien zum Film entstanden, die den Film schlie\u00dflich auf eine neue Reflexions- und Bedeutungsebene gehoben haben.<br\/><br\/>Von Beginn an zogen Fragen nach dem Verh\u00e4ltnis von Film und Kunst, Film und Gesellschaft, der anregenden Kraft cinematischer Fiktionen und Imaginationen, dem Stellenwert von Emotionen und der besonderen Art von Narration das theoretische Interesse auf sich. Josef Fr\u00fcchtl f\u00fchrt in diesem Band zahlreiche Beitr\u00e4ge zur Philosophie des Films zusammen: von Adornos Pl\u00e4doyer f\u00fcr einen Film der unsichtbaren, bilderlosen Bilder \u00fcber die Selbstreflexion der Helden-figur im Kino, die De-\/Legitimation einer panoptischen Gesellschaft in einem Film wie \u00bbMinority Report\u00ab, metaphysische Gro\u00dferz\u00e4hlungen wie etwa \u00bbAvatar\u00ab, filmische Verarbeitungen von traumatisierenden Ereignissen im Film \u00bbUnited 93\u00ab und im Science-Fiction am Beispiel von Christopher Nolans Film \u00bbInterstellar\u00ab bis zur Filmkom\u00f6die.<br\/><br\/>Das Buch bietet damit einen guten, anschaulichen Einstieg in die Filmphilosophie.","46736":"Die Filmphilosophie ist im Laufe des 20. Jahrhun
9535derts zu einem kleinen, aber etablierten Bereich der Philosophie geworden. Von Hugo M\u00fcnsterberg (1916), Rudolf Arnheim, Rudolf Harms und Siegfried Kracauer \u00fcber Benjamin und Adorno bis zu Stanley Cavell und Gilles Deleuze sind eine Vielzahl an philosophischen Abhandlungen und Theorien zum Film entstanden, die den Film schlie\u00dflich auf eine neue Reflexions- und Bedeutungsebene gehoben haben.<br\/><br\/>Von Beginn an zogen Fragen nach dem Verh\u00e4ltnis von Film und Kunst, Film und Gesellschaft, der anregenden Kraft cinematischer Fiktionen und Imaginationen, dem Stellenwert von Emotionen und der besonderen Art von Narration das theoretische Interesse auf sich. Josef Fr\u00fcchtl f\u00fchrt in diesem Band zahlreiche Beitr\u00e4ge zur Philosophie des Films zusammen: von Adornos Pl\u00e4doyer f\u00fcr einen Film der unsichtbaren, bilderlosen Bilder \u00fcber die Selbstreflexion der Helden-figur im Kino, die De-\/Legitimation einer panoptischen Gesellschaft in einem Film wie \u00bbMinority Report\u00ab, metaphysische Gro\u00dferz\u00e4hlungen wie etwa \u00bbAvatar\u00ab, filmische Verarbeitungen von traumatisierenden Ereignissen im Film \u00bbUnited 93\u00ab und im Science-Fiction am Beispiel von Christopher Nolans Film \u00bbInterstellar\u00ab bis zur Filmkom\u00f6die.<br\/><br\/>Das Buch bietet damit einen guten, anschaulichen Einstieg in die Filmphilosophie.","46737":"Die Filmphilosophie ist im Laufe des 20. Jahrhunderts zu einem kleinen, aber etablierten Bereich der Philosophie geworden. Von Hugo M\u00fcnsterberg (1916), Rudolf Arnheim, Rudolf Harms und Siegfried Kracauer \u00fcber Benjamin und Adorno bis zu Stanley Cavell und Gilles Deleuze sind eine Vielzahl an philosophischen Abhandlungen und Theorien zum Film entstanden, die den Film schlie\u00dflich auf eine neue Reflexions- und Bedeutungsebene gehoben haben.<br\/><br\/>Von Beginn an zogen Fragen nach dem Verh\u00e4ltnis von Film und Kunst, Film und Gesellschaft, der anregenden Kraft cinematischer Fiktionen und Imaginationen, dem Stellenwert von Emotionen und der besonderen Art von Narration das theoretische Interesse auf sich. Josef Fr\u00fcchtl f\u00fchrt in diesem Band zahlreiche Beitr\u00e4ge zur Philosophie des Films zusammen: von Adornos Pl\u00e4doyer f\u00fcr einen Film der unsichtbaren, bilderlosen Bilder \u00fcber die Selbstreflexion der Helden-figur im Kino, die De-\/Legitimation einer panoptischen Gesellschaft in einem Film wie \u00bbMinority Report\u00ab, metaphysische Gro\u00dferz\u00e4hlungen wie etwa \u00bbAvatar\u00ab, filmische Verarbeitungen von traumatisierenden Ereignissen im Film \u00bbUnited 93\u00ab und im Science-Fiction am Beispiel von Christopher Nolans Film \u00bbInterstellar\u00ab bis zur Filmkom\u00f6die.<br\/><br\/>Das Buch bietet damit einen guten, anschaulichen Einstieg in die Filmphilosophie."},"doi":{"46488":"","46736":"10.28937\/978-3-7873-4950-0","46737":""},"isbn":{"46488":"978-3-7873-4949-4","46736":"978-3-7873-4950-0","46737":"978-3-7873-4951-7"},"marketing_short_text":{"46488":"","46736":"","46737":""},"recension_text":{"46488":"","46736":"","46737":""},"language":{"46488":"","46736":"","46737":""},"cover":{"46488":"Kartoniert","46736":"","46737":""},"pages":{"46488":"208 Seiten.","46736":"208 Seiten.","46737":"208 Seiten."},"edition":{"46488":"","46736":"Unver\u00e4ndertes eBook der 1. Auflage von 2026","46737":"Unver\u00e4ndertes EPUB der 1. Auflage von 2026"},"pod":{"46488":"Nein","46736":"Nein","46737":"Nein"},"copyright_year":{"46488":"","46736":"","46737":""},"vlb_tix_link":{"46488":"https:\/\/neu.vlbtix.de\/products\/9783787349494?type=gtin","46736":"","46737":""},"defaultValues":{"163":"15"}};
9536            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
9537
9538            if (typeof window.amxnotif_wrap_attributes === 'function') {
9539                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
9540                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
9541            }
9542
9543            const configurableOptionsComponent = initConfigurableOptions(
9544                '46699',
9545                config
9546            );
9547            const swatchOptionsComponent = initSwatchOptions(
9548                swatchConfig
9549            );
9550
9551            // DWS - Configurable product preselect start
9552            const confProdPreSelect = () => {
9553                return {
9554                    preselectQuerystringItems() {
9555                        var data = {"id":"46488","output":"15"};
9556                        const urlQueryParams = new URLSearchParams(window.location.search);
9557
9558                                                this.$nextTick(() => {
9559                            setTimeout(() => {
9560                                const rootEl = this.$root || this.$el;
9561                                if (!rootEl) return;
9562
9563                                const applySelection = (attrCode, attrValue) => {
9564                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
9565
9566                                    const attributes = Object.values(this.optionConfig.attributes || {});
9567                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
9568
9569                                    if (targetAttr) {
9570                                        const attrId = String(targetAttr.id);
9571                                        const optionVal = String(attrValue);
9572
9573                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
9574
9575                                        if (inputEl) {
9576                                                                                        inputEl.click();
9577                                            inputEl.dispatchEvent(new Event('change', {
9578                                                bubbles: true
9579                                            }));
9580                                        } else {
9581                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
9582                                            if (selectEl) {
9583                                                selectEl.value = optionVal;
9584                                                selectEl.dispatchEvent(new Event('change', {
9585                                                    bubbles: true
9586                                                }));
9587                                            }
9588                                        }
9589
9590                                                                                this.changeOption(attrId, optionVal, false);
9591                                    }
9592                                };
9593
9594                                                                if (data && typeof data === 'object') {
9595                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
9596                                }
9597
9598                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
9599                                    if (attribute && attribute.code) {
9600                                        let optionValue = urlQueryParams.get(attribute.code);
9601                                        if (optionValue) {
9602                                            let optionId = false;
9603                                            const attributes = Object.values(this.optionConfig.attributes || {});
9604                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
9605
9606                                            let found = false;
9607                                            Object.values(targetAttr.options).map(option => {
9608                                                if (found === false && option.label === optionValue) {
9609                                                    optionId = option.id;
9610                                                    found = true;
9611                                                }
9612                                            });
9613
9614                                            const attrId = String(targetAttr.id);
9615                                            let optionVal = String(optionValue);
9616                                            if (found) {
9617                                                optionVal = String(optionId);
9618                                            }
9619
9620                                            applySelection(attribute.code, optionVal);
9621                                        }
9622                                    }
9623                                });
9624                            }, 100);
9625                        });
9626                    }
9627                }
9628            };
9629            // DWS - Configurable product preselect end
9630
9631            const result = Object.assign(
9632                configurableOptionsComponent,
9633                swatchOptionsComponent, {
9634                    productId: '46699',
9635                    productIndex: 0,
9636                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
9637                    showSwatches: false,
9638                    precalcOptions: {},
9639                    originalInit: configurableOptionsComponent.init,
9640                    init() {
9641                        try {
9642                            this.precalcOptions = {};
9643                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
9644                            this.preselectQuerystringItems();
9645                            if (Array.isArray(attrSource)) {
9646                                attrSource.forEach(attr => {
9647                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
9648                                });
9649                            } else if (attrSource && typeof attrSource === 'object') {
9650                                Object.keys(attrSource).forEach(id => {
9651                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
9652                                });
9653                            }
9654                        } catch (e) {
9655                            console.error('Pre-calc error:', e);
9656                        }
9657
9658                        if (typeof this.originalInit === 'function') {
9659                            this.originalInit();
9660                        }
9661
9662                        try {
9663                            this.initShowSwatchesIntersect();
9664                        } catch (e) {
9665                            console.error('intersect error:', e);
9666                        }
9667                    },
9668
9669                    updateGallery() {
9670                        if (!this.productIndex) return;
9671
9672                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
9673                                method: 'GET',
9674                                headers: {
9675                                    'Content-Type': 'application/json',
9676                                    'X-Requested-With': 'XMLHttpRequest'
9677                                }
9678                            })
9679                            .then(response => response.json())
9680                            .then(data => {
9681                                if (data && data.medium) {
9682                                    window.dispatchEvent(new CustomEvent("update-gallery-46699", {
9683                                        detail: data.medium
9684                                    }));
9685                                }
9686                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
9687                    },
9688
9689
9690                    initShowSwatchesIntersect() {
9691                        const observer = new IntersectionObserver(entries => {
9692                            if (entries[0].isIntersecting) {
9693                                this.showSwatches = true;
9694                                observer.disconnect();
9695                            }
9696                        }, {
9697                            rootMargin: '512px'
9698                        });
9699                        observer.observe(this.$el);
9700                    },
9701                    getOptions(attrId) {
9702                        return this.precalcOptions[attrId] || [];
9703                    },
9704                    getOptionsByAttrId() {
9705                        return this.getOptions(this.$el.dataset.attributeId);
9706                    },
9707                    _getItemId() {
9708                        if (this.item && this.item.id) return this.item.id;
9709                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
9710                    },
9711                    getSwatchOptionHtmlId() {
9712                        const itemId = this._getItemId();
9713                        return itemId ? this.$id(`attribute-option-46699-${itemId}`) : '';
9714                    },
9715                    getSwatchOptionHtmlIdGroup() {
9716                        const itemId = this._getItemId();
9717                        return itemId ? [`attribute-option-46699-${itemId}`] : [];
9718                    },
9719                    getAttributeSwatchData(attributeId) {
9720                        const data = Object.assign({}, this.swatchConfig[attributeId]);
9721                        if (data['additional_data']) {
9722                            try {
9723                                data['details'] = JSON.parse(data['additional_data']);
9724                            } catch (e) {
9725                                data['details'] = {};
9726                            }
9727                        }
9728                        return data;
9729                    },
9730                    getSwatchType(attributeId, optionId) {
9731                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
9732                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
9733                        }
9734                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
9735                            this.swatchConfig[attributeId].details.swatch_input_type :
9736                            "empty";
9737                        if (type === 'visual') {
9738                            const config = this.swatchConfig[attributeId];
9739                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
9740                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
9741                            }
9742                            // Fallback to first option type
9743                            for (const oId in config) {
9744                                if (config[oId] && typeof config[oId].type !== 'undefined') {
9745                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
9746                                }
9747                            }
9748                        }
9749                        return type;
9750                    },
9751                    mapSwatchTypeNumberToTypeCode(type) {
9752                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
9753                    },
9754                    isTextSwatch() {
9755                        const itemId = this._getItemId();
9756                        if (!this.$el || !itemId) return false;
9757                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
9758                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
9759                    },
9760
9761                    getSwatchText() {
9762                        const itemId = this._getItemId();
9763                        if (this.item) return this.item.label || '';
9764                        if (!this.$el || !itemId) return '';
9765                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
9766                        const options = attrId ? this.getOptions(attrId) : [];
9767                        const opt = options.find(o => o.id == itemId);
9768                        return opt ? opt.label : '';
9769                    },
9770                    getSwatchBackgroundStyle() {
9771                        const itemId = this._getItemId();
9772                        if (!this.$el || !itemId) return '';
9773                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
9774                        if (!attrId) return '';
9775                        const type = this.getSwatchType(attrId, itemId);
9776                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
9777                            this.swatchConfig[attrId][itemId] :
9778                            null;
9779                        if (!swatchData) return '';
9780                        if (type === "color") return 'background-color:' + swatchData.value;
9781                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
9782                        return '';
9783                    },
9784                    swatchOptionClasses() {
9785                        const itemId = this._getItemId();
9786                        if (!this.$el || !itemId) return {};
9787                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
9788                        return {
9789                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
9790                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
9791                            'w-6 h-6': !this.isTextSwatch()
9792                        }
9793                    },
9794
9795                    onFocusSwatchItem() {
9796                        const itemId = this._getItemId();
9797                        if (itemId) this.focusedLabel = itemId;
9798                    },
9799                    onChangeOption() {
9800                        const itemId = this._getItemId();
9801                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
9802                        if (attrId && itemId) this.changeOption(attrId, itemId);
9803                    },
9804                    changeOption(attributeId, value) {
9805                        if (value === '') {
9806                            return;
9807                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
9808                        } else {
9809                            this.selectedValues[attributeId] = value;
9810                        }
9811
9812                        this.findSimpleIndex();
9813                        this.findAllowedAttributeOptions();
9814                        this.updatePrices();
9815                        this.updateGallery();
9816
9817                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
9818                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
9819
9820                        const eventDetail = {
9821                            productId: this.productId,
9822                            optionId: attributeId,
9823                            value: value,
9824                            productIndex: this.productIndex || 0,
9825                            selectedValues: this.selectedValues,
9826                            candidates: candidates,
9827                            sourceElement: this.$el
9828                        };
9829
9830                        // Dispatch for Amasty
9831                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
9832                            detail: eventDetail
9833                        }));
9834
9835                        // Dispatch for Hyva listing
9836                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
9837                            detail: eventDetail
9838                        }));
9839                    },
9840
9841
9842                    clearOptionIfActive() {
9843                        const itemId = this._getItemId();
9844                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
9845                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
9846                            this.changeOption(attrId, '');
9847
9848                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
9849                            if (!input && this.$el?.querySelector) {
9850                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
9851                            }
9852                            if (!input && this.$el?.closest) {
9853                                const root = this.$el.closest('[data-product-id]') || this.$el;
9854                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
9855                            }
9856                            if (input) {
9857                                input.checked = false;
9858                            }
9859                        }
9860                    },
9861                    get optionIsEnabled() {
9862                        const itemId = this._getItemId();
9863                        if (!this.$el || !itemId) return true;
9864                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
9865                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
9866                        return !!allowedOptions.find(opt => opt.id == itemId);
9867                    },
9868                    get isSelected() {
9869                        const itemId = this._getItemId();
9870                        if (!this.$el || !itemId) return false;
9871                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
9872                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
9873                    },
9874                    get isSwatchRequired() {
9875                        if (!this.$el) return false;
9876                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
9877                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
9878                    },
9879                    focusedLabel: false,
9880                    activeTooltipItem: false,
9881                    tooltipPositionElement: false,
9882                    setActiveTooltipItem() {
9883                        const itemId = this._getItemId();
9884                        if (!this.$el || !itemId) return;
9885                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
9886                        this.activeTooltipItem = {
9887                            attribute: attrId,
9888                            item: itemId,
9889                            index: 0
9890                        };
9891                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
9892                    },
9893                    unsetActiveTooltipItem() {
9894                        this.activeTooltipItem = false;
9895                    }
9896                },
9897                confProdPreSelect()
9898            );
9899
9900            if (result.optionConfig && result.optionConfig.attributes) {
9901                const attributes = result.optionConfig.attributes;
9902                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
9903                    let source = attributes;
9904                    if (Array.isArray(attributes)) {
9905                        source = {};
9906                        attributes.forEach(attr => {
9907                            if (attr && attr.id) source[attr.id] = attr;
9908                        });
9909                    }
9910                    const values = Object.values(source);
9911                    const wrapper = Object.assign(values, source);
9912                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
9913                        value: true,
9914                        enumerable: false
9915                    });
9916                    result.optionConfig.attributes = wrapper;
9917                }
9918            }
9919
9920            return result;
9921        }
9922
9923        window.addEventListener('alpine:init', () => {
9924            Alpine.data('initConfigurableSwatchOptions_46699', initConfigurableSwatchOptions_46699);
9925        }, {
9926            once: true
9927        });
9928    </script>
9928
9929    
9930    <div x-data="initConfigurableSwatchOptions_46699" x-defer="intersect">
9931        <div class="pagebuilder-home-hidden">
9932                                            
9933                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
9934                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
9935                        <template x-if="showSwatches">
9936                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-46699-163" role="radiogroup" aria-label="Einband">
9937                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
9938                                    <div :data-option-id="item.id" style="display: contents">
9939                                        <div x-id="getSwatchOptionHtmlIdGroup">
9940    <template x-if="optionIsEnabled">
9941        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
9941self="unsetActiveTooltipItem">
9942            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-46699-163">
9943            <div>
9944                <template x-if="isTextSwatch">
9945                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
9946                </template>
9947                <template x-if="!optionIsActive(163, item.id)">
9948                    <div>
9949                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
9950                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
9951                        </svg>
9952                    </div>
9953                </template>
9954            </div>
9955        </label>
9956    </template>
9957</div>                                    </div>
9958                                </template>
9959                            </div>
9960                        </template>
9961                    </div>
9962                </div>
9963                    </div>
9964    </div>
9965            
9966                                                <div class="meta py-4 pagebuilder-home-hidden">
9967                <div x-data="initMarketingShortText_46699()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
9968                    <!-- Marketing short text -->
9969                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
9970                    </div>
9971
9972                    <!-- Short description -->
9973                                                                <div class="short-description">
9974                            Die Filmphilosophie ist im Laufe des 20. Jahrhunderts zu einem kleinen, aber etablierten Bereich der Philosophie geworden. Von Hugo M&uuml;nsterberg (1916), Rudolf Arnheim, Rudolf Harms und Siegfried ...                            <a href="https://meiner.de/fmv_de/von-sa-a-en-la-gen-und-bilderlosen-bildern-17982" class="underline">mehr</a>
9975                        </div>
9976                                    </div>
9977
9978                <!-- Series  -->
9979                                    <div class="mb-1">
9980                        <span class="sr-only">Reihe:</span>
9981                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
9982                            <span>Blaue Reihe</span>
9983                        </a>
9984                                            </div>
9985                
9986                
9987                                                    <div class="mb-1">
9988                        <span x-data="initEditionText_46699()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
9989                            <!-- Marketing short text -->
9990                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 208 Seiten.                        </span>
9991                    </div>
9992                
9993                            </div>
9994            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
9995                
9996                <div class="justify-end" x-data="initPriceBox()" @update-prices-46699.window="updatePrice($event.detail);">
9997                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="46699" data-price-box="product-id-46699"><span class="normal-price">
9998    <span x-data x-id="['product\u002Dprice\u002D46699']" class="price-container price-final_price tax weee">
9999            <span class="price-label">Ab</span>
10000                <span class="approx-price">ca. </span>
10001        <span :id="$id('product\u002Dprice\u002D46699')" data-price-amount="19.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">19,99&nbsp;&euro;</span></span>
10002        </span>
10003</span>
10004
10005
10006</div>                </div>
10007
10008                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
10009                                            <div class="open-access-container open-access-container-46699                    flex mt-4 ml-auto sm:mt-0 hidden">
10010                            <div class="text-gray-700">
10011                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
10012                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
10013                                        Kostenlos online lesen                                    </a>
10014                                </button>
10015                            </div>
10016                        </div>
10017                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Von s&uuml;&szlig;en L&uuml;gen und bilderlosen Bildern" aria-label="In den Warenkorb Von s&uuml;&szlig;en L&uuml;gen und bilderlosen Bildern" data-addto="cart">
10018                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
10019  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
100190 014 0z"></path>
10020</svg>
10021                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
10022                                        In den Warenkorb                                    </span>
10023                                </button>
10024                                                                                                                    
10025<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(46699)" aria-label="Zur Wunschliste hinzuf&uuml;gen Von s&uuml;&szlig;en L&uuml;gen und bilderlosen Bildern" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
10026    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
10027  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
10028</svg>
10029</button>
10030                                    </div>
10031            </div>
10032        </div>
10033        
10033<script>
10034            function initMarketingShortText_46699() {
10035                var marketingShortTextConfig = {};
10036                if (typeof window.initConfigurableSwatchOptions_46699 === "function") {
10037                    var fullConfig = window.initConfigurableSwatchOptions_46699().optionConfig
10038                    var marketingShortTextConfig = fullConfig.marketing_short_text;
10039                }
10040                return {
10041                    marketingShortText: '',
10042                    config: marketingShortTextConfig,
10043                    productId: '46699',
10044                    getMarketingShortText(detail) {
10045                        this.marketingShortText = detail.productIndex ?
10046                            this.config[detail.productIndex] :
10047                            null;
10048                    },
10049                    eventListeners: {
10050                        ['@listing-configurable-selection-changed.window'](event) {
10051                            if (this.productId == event.detail.productId) {
10052                                this.getMarketingShortText(event.detail);
10053                            }
10054
10055                        }
10056                    }
10057                }
10058            }
10059
10060            function initEditionText_46699() {
10061                var editionTextConfig = {};
10062                if (typeof window.initConfigurableSwatchOptions_46699 === "function") {
10063                    var fullConfig = window.initConfigurableSwatchOptions_46699().optionConfig
10064                    var editionTextConfig = fullConfig.edition;
10065                }
10066                return {
10067                    editionText: '',
10068                    config: editionTextConfig,
10069                    productId: '46699',
10070                    getEditionText(detail) {
10071                        this.editionText = detail.productIndex ?
10072                            this.config[detail.productIndex] :
10073                            null;
10074                    },
10075                    eventListeners: {
10076                        ['@listing-configurable-selection-changed.window'](event) {
10077                            if (this.productId == event.detail.productId) {
10078                                this.getEditionText(event.detail);
10079                            }
10080
10081                        }
10082                    }
10083                }
10084            }
10085        </script>
10085
10086                    </form>
10087                            
10088    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/47158/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21427">
10089        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="47158">
10090                                    <a href="https://meiner.de/fmv_de/rousseau-21427" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
10091            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-47158.window="$el.src = $event.detail" alt="Rousseau" title="Rousseau" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351299_1.jpg" :style="{
10092                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
10093                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
10094            }">
10095                    </a>
10096        <div class="product-info flex flex-col flex-grow ">
10097                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
10098                                    <div class="mb-2 text-sm text-gray-500 font-medium">
10099                                                                                    <a href="https://meiner.de/fmv_de/person/Skadi-Siiri-Krause-21426/" class="mb-2">
10100                                    Skadi Siiri Krause                                                                    </a>
10101                                                                                                                                    </div>
10102                                <a class="product-item-link" href="https://meiner.de/fmv_de/rousseau-21427">
10103                    Rousseau                </a>
10104                            </div>
10105
10106            <div x-data="initEditionText_47158()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
10107                <!-- Marketing short text -->
10108                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
10109                </div>
10110            </div>
10111
10112                            <div class="py-1 grid  mb-4 ">
10113                    
10114                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":47158,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":47158,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46503":"1","47114":"1","47115":"1"},"childProductsAlertStatus":{"46503":"0","47114":"0","47115":"0"},"indexMapping":{"163:15":46503,"163:8":47114,"163:9":47115},"availabilityMessages":{"46503":"Lieferbar innerhalb von 3-5 Tagen","47114":"Download sofort  verf\u00fcgbar","47115":"Download sofort  verf\u00fcgbar"},"openAccess":{"47158":{"status":0},"46503":{"status":0},"47114":{"status":0},"47115":{"status":0}}},"availabilityMessages":{"46503":"Lieferbar innerhalb von 3-5 Tagen","47114":"Download sofort  verf\u00fcgbar","47115":"Download sofort  verf\u00fcgbar"},"openAccess":{"47158":{"status":0},"46503":{"status":0},"47114":{"status":0},"47115":{"status":0}}}'>
10115        <template x-if="containerVisible">
10116                            <!-- Popup Trigger -->
10117                <div>
10118                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
10119                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
10120                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
10121  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
10122<title>bell</title></svg>
10123</span>
10124                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
10125
10126                    <!-- Popup Modal -->
10127                    <template x-if="showModal">
10128                        <template x-teleport=".page-wrapper">
10129                            <div x-cloak class="fixed inset-0 flex items-center justify-center
10130                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
10131                                <div class="relative bg-white rounded-lg shadow-xl
10132                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
10133                                    <div class="p-6">
10134                                        <!-- Subscription Form for Popup -->
10135                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
10136                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
10137                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
10138                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
10139
10140                                            <div class="flex flex-col gap-3">
10141                                                <div class="flex-grow grow">
10142                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
10143                                                        shadow-xs focus:outline-none focus:outline-hidden
10144                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
10145                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
10146                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
10147                                                </div>
10148                                                <input type="hidden" name="product_id" :value="currentProductId">
10149                                                <input type="hidden" name="type" value="email">
10150
10151                                                
10152                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
10153
10154                                                <div class="amxnotif_guest_action">
10155                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
10156                                                        rounded-md focus:outline-none
10157                                                        focus:outline-hidden focus:ring-2
10158                                                        focus:ring-offset-2 disabled:opacity-50
10159                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
10160                                                        Benachrichtigen                                                    </button>
10161                                                </div>
10162                                            </div>
10163
10164                                                                                            <div class="flex items-start pt-2">
10165                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
10166                                                        text-blue-600 border-gray-300 rounded-sm">
10167                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
10168                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
10169                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
10170                                                </div>
10171                                                                                    </form>
10172                                    </div>
10173
10174                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
10175                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
10176                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
10177  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
10178<title>x</title></svg>
10179                                    </button>
10180                                </div>
10181                            </div>
10182                        </template>
10183                    </template>
10184                </div>
10185                    </template>
10186    </div>
10187
10188<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_47158" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":47158,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46503":"1","47114":"1","47115":"1"},"childProductsAlertStatus":{"46503":"0","47114":"0","47115":"0"},"indexMapping":"{\u0022163:15\u0022:46503,\u0022163:8\u0022:47114,\u0022163:9\u0022:47115}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":47158,"availabilityMessages":{"46503":"Lieferbar innerhalb von 3-5 Tagen","47114":"Download sofort  verf\u00fcgbar","47115":"Download sofort  verf\u00fcgbar"},"openAccess":{"47158":{"status":0},"46503":{"status":0},"47114":{"status":0},"47115":{"status":0}}}'>
10189    
10190    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
10191        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
10192        <span x-html="optionsLabelText"></span>
10193    </p>
10194</div>                </div>
10195            
10196                                
10196<script>
10197        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
10198            try {
10199                const attributes = (config && config.attributes) ? config.attributes : null;
10200                if (!attributes) return [];
10201                let attr = null;
10202                if (Array.isArray(attributes)) {
10203                    for (let i = 0; i < attributes.length; i++) {
10204                        const a = attributes[i];
10205                        if (a && a.id == attrId) {
10206                            attr = a;
10207                            break;
10208                        }
10209                    }
10210                } else {
10211                    attr = attributes[attrId];
10212                }
10213                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
10214            } catch (e) {
10215                return [];
10216            }
10217        };
10218
10219        function initConfigurableSwatchOptions_47158() {
10220            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46503"]},{"id":"8","label":"PDF","products":["47114"]},{"id":"9","label":"EPUB","products":["47115"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46503":{"baseOldPrice":{"amount":32.616821429907},"oldPrice":{"amount":34.9},"basePrice":{"amount":32.616821429907},"finalPrice":{"amount":34.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47114":{"baseOldPrice":{"amount":24.289718626168},"oldPrice":{"amount":25.99},"basePrice":{"amount":24.289718626168},"finalPrice":{"amount":25.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47115":{"baseOldPrice":{"amount":24.289718626168},"oldPrice":{"amount":25.99},"basePrice":{"amount":24.289718626168},"finalPrice":{"amount":25.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":24.289718626168},"oldPrice":{"amount":25.99},"basePrice":{"amount":21.840335134454},"finalPrice":{"amount":25.99},"isApproxPrice":null},"productId":"47158","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46503":{"163":"15"},"47114":{"163":"8"},"47115":{"163":"9"}},"salable":{"163":{"15":["46503"],"8":["47114"],"9":["47115"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"46503":"005127","47114":"005128","47115":"005129"},"output":{"46503":"Kartoniert","47114":"PDF","47115":"EPUB"},"original_name":{"46503":"","47114":"","47115":""},"openaccess_license_link":{"46503":"","47114":"","47115":""},"openaccess_license_name":{"46503":"","47114":"","47115":""},"openaccess_external_link":{"46503":"","47114":"","47115":""},"gpsr_safety_info":{"46503":"","47114":"","47115":""},"description":{"46503":"Jean-Jacques Rousseau war einer der bedeutendsten Schriftsteller im Zeitalter der Aufkl\u00e4rung. Zugleich war er derjenige, der die selbsternannten \u00bbphilosophes\u00ab am grundlegendsten kritisierte, da er dem individuell-menschlichen Aufkl\u00e4rungsprogramm die Forderung nach politischer Emanzipation der B\u00fcrger entgegenstellte. Dadurch wurde er auch zu einem scharfen Kritiker der Naturrechtstheorien, deren wichtigste Grundannahmen \u2013 die Gleichheit und Freiheit der B\u00fcrger sowie die vermeintliche K\u00fcnstlichkeit des Staates und seiner Grundgesetze \u2013 er jedoch \u00fcbernahm.<br\/><br\/>Doch Rousseau rechtfertigte weder die Monarchie noch eine feudale Gesellschaftsordnung, wie es seine Vorg\u00e4nger und Zeitgenossen taten. Er kritisierte sogar den von den \u00d6konomen seiner Zeit verteidigten Eigentumsbegriff, der die Interessen gro\u00dfer Landbesitzer und H\u00e4ndler \u00fcber die des Staates stellte. Welche Ziele aber verfolgte Rousseau mit seiner Kritik? Dieser Frage geht der vorliegende Band nach, indem er den Autor in die Diskurse seiner Zeit einordnet und insbesondere auch dessen Rolle in den politischen Debatten seiner Heimatstadt Genf eingehend er\u00f6rtert.<br\/><br\/>Der Band bietet dar\u00fcber hinaus eine Einf\u00fchrung in Rousseaus Schriften im Kontext zeitgen\u00f6ssischer Auseinandersetzungen.","47114":"Jean-Jacques Rousseau war einer der bedeutendsten Schriftsteller im Zeitalter der Aufkl\u00e4rung. Zugleich war er derjenige, der die selbsternannten \u00bbphilosophes\u00ab am grundlegendsten kritisierte, da er dem individuell-menschlichen Aufkl\u00e4rungsprogramm die Forderung nach politischer Emanzipation der B\u00fcrger entgegenstellte. Dadurch wurde er auch zu einem scharfen Kritiker der Naturrechtstheorien, deren wichtigste Grundannahmen \u2013 die Gleichheit und Freiheit der B\u00fcrger sowie die vermeintliche K\u00fcnstlichkeit des Staates und seiner Grundgesetze \u2013 er jedoch \u00fcbernahm.<br\/><br\/>Doch Rousseau rechtfertigte weder die Monarchie noch eine feudale Gesellschaftsordnung, wie es seine Vorg\u00e4nger und Zeitgenossen taten. Er kritisierte sogar den von den \u00d6konomen seiner Zeit verteidigten Eigentumsbegriff, der die Interessen gro\u00dfer Landbesitzer und H\u00e4ndler \u
1022000fcber die des Staates stellte. Welche Ziele aber verfolgte Rousseau mit seiner Kritik? Dieser Frage geht der vorliegende Band nach, indem er den Autor in die Diskurse seiner Zeit einordnet und insbesondere auch dessen Rolle in den politischen Debatten seiner Heimatstadt Genf eingehend er\u00f6rtert.<br\/><br\/>Der Band bietet dar\u00fcber hinaus eine Einf\u00fchrung in Rousseaus Schriften im Kontext zeitgen\u00f6ssischer Auseinandersetzungen.","47115":"Jean-Jacques Rousseau war einer der bedeutendsten Schriftsteller im Zeitalter der Aufkl\u00e4rung. Zugleich war er derjenige, der die selbsternannten \u00bbphilosophes\u00ab am grundlegendsten kritisierte, da er dem individuell-menschlichen Aufkl\u00e4rungsprogramm die Forderung nach politischer Emanzipation der B\u00fcrger entgegenstellte. Dadurch wurde er auch zu einem scharfen Kritiker der Naturrechtstheorien, deren wichtigste Grundannahmen \u2013 die Gleichheit und Freiheit der B\u00fcrger sowie die vermeintliche K\u00fcnstlichkeit des Staates und seiner Grundgesetze \u2013 er jedoch \u00fcbernahm.<br\/><br\/>Doch Rousseau rechtfertigte weder die Monarchie noch eine feudale Gesellschaftsordnung, wie es seine Vorg\u00e4nger und Zeitgenossen taten. Er kritisierte sogar den von den \u00d6konomen seiner Zeit verteidigten Eigentumsbegriff, der die Interessen gro\u00dfer Landbesitzer und H\u00e4ndler \u00fcber die des Staates stellte. Welche Ziele aber verfolgte Rousseau mit seiner Kritik? Dieser Frage geht der vorliegende Band nach, indem er den Autor in die Diskurse seiner Zeit einordnet und insbesondere auch dessen Rolle in den politischen Debatten seiner Heimatstadt Genf eingehend er\u00f6rtert.<br\/><br\/>Der Band bietet dar\u00fcber hinaus eine Einf\u00fchrung in Rousseaus Schriften im Kontext zeitgen\u00f6ssischer Auseinandersetzungen."},"doi":{"46503":"","47114":"10.28937\/978-3-7873-5128-2","47115":""},"isbn":{"46503":"978-3-7873-5127-5","47114":"978-3-7873-5128-2","47115":"978-3-7873-5129-9"},"marketing_short_text":{"46503":"","47114":"","47115":""},"recension_text":{"46503":"","47114":"","47115":""},"language":{"46503":"","47114":"","47115":""},"cover":{"46503":"Kartoniert","47114":"","47115":""},"pages":{"46503":"372 Seiten.","47114":"372 Seiten.","47115":"372 Seiten."},"edition":{"46503":"","47114":"Unver\u00e4ndertes eBook der 1. Auflage von 2026","47115":"Unver\u00e4ndertes EPUB der 1. Auflage von 2026"},"pod":{"46503":"Nein","47114":"Nein","47115":"Nein"},"copyright_year":{"46503":"","47114":"","47115":""},"vlb_tix_link":{"46503":"https:\/\/neu.vlbtix.de\/products\/9783787351275?type=gtin","47114":"","47115":""},"defaultValues":{"163":"15"}};
10221            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
10222
10223            if (typeof window.amxnotif_wrap_attributes === 'function') {
10224                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
10225                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
10226            }
10227
10228            const configurableOptionsComponent = initConfigurableOptions(
10229                '47158',
10230                config
10231            );
10232            const swatchOptionsComponent = initSwatchOptions(
10233                swatchConfig
10234            );
10235
10236            // DWS - Configurable product preselect start
10237            const confProdPreSelect = () => {
10238                return {
10239                    preselectQuerystringItems() {
10240                        var data = {"id":"46503","output":"15"};
10241                        const urlQueryParams = new URLSearchParams(window.location.search);
10242
10243                                                this.$nextTick(() => {
10244                            setTimeout(() => {
10245                                const rootEl = this.$root || this.$el;
10246                                if (!rootEl) return;
10247
10248                                const applySelection = (attrCode, attrValue) => {
10249                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
10250
10251                                    const attributes = Object.values(this.optionConfig.attributes || {});
10252                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
10253
10254                                    if (targetAttr) {
10255                                        const attrId = String(targetAttr.id);
10256                                        const optionVal = String(attrValue);
10257
10258                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
10259
10260                                        if (inputEl) {
10261                                                                                        inputEl.click();
10262                                            inputEl.dispatchEvent(new Event('change', {
10263                                                bubbles: true
10264                                            }));
10265                                        } else {
10266                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
10267                                            if (selectEl) {
10268                                                selectEl.value = optionVal;
10269                                                selectEl.dispatchEvent(new Event('change', {
10270                                                    bubbles: true
10271                                                }));
10272                                            }
10273                                        }
10274
10275                                                                                this.changeOption(attrId, optionVal, false);
10276                                    }
10277                                };
10278
10279                                                                if (data && typeof data === 'object') {
10280                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
10281                                }
10282
10283                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
10284                                    if (attribute && attribute.code) {
10285                                        let optionValue = urlQueryParams.get(attribute.code);
10286                                        if (optionValue) {
10287                                            let optionId = false;
10288                                            const attributes = Object.values(this.optionConfig.attributes || {});
10289                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
10290
10291                                            let found = false;
10292                                            Object.values(targetAttr.options).map(option => {
10293                                                if (found === false && option.label === optionValue) {
10294                                                    optionId = option.id;
10295                                                    found = true;
10296                                                }
10297                                            });
10298
10299                                            const attrId = String(targetAttr.id);
10300                                            let optionVal = String(optionValue);
10301                                            if (found) {
10302                                                optionVal = String(optionId);
10303                                            }
10304
10305                                            applySelection(attribute.code, optionVal);
10306                                        }
10307                                    }
10308                                });
10309                            }, 100);
10310                        });
10311                    }
10312                }
10313            };
10314            // DWS - Configurable product preselect end
10315
10316            const result = Object.assign(
10317                configurableOptionsComponent,
10318                swatchOptionsComponent, {
10319                    productId: '47158',
10320                    productIndex: 0,
10321                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
10322                    showSwatches: false,
10323                    precalcOptions: {},
10324                    originalInit: configurableOptionsComponent.init,
10325                    init() {
10326                        try {
10327                            this.precalcOptions = {};
10328                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
10329                            this.preselectQuerystringItems();
10330                            if (Array.isArray(attrSource)) {
10331                                attrSource.forEach(attr => {
10332                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
10333                                });
10334                            } else if (attrSource && typeof attrSource === 'object') {
10335                                Object.keys(attrSource).forEach(id => {
10336                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
10337                                });
10338                            }
10339                        } catch (e) {
10340                            console.error('Pre-calc error:', e);
10341                        }
10342
10343                        if (typeof this.originalInit === 'function') {
10344                            this.originalInit();
10345                        }
10346
10347                        try {
10348                            this.initShowSwatchesIntersect();
10349                        } catch (e) {
10350                            console.error('intersect error:', e);
10351                        }
10352                    },
10353
10354                    updateGallery() {
10355                        if (!this.productIndex) return;
10356
10357                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
10358                                method: 'GET',
10359                                headers: {
10360                                    'Content-Type': 'application/json',
10361                                    'X-Requested-With': 'XMLHttpRequest'
10362                                }
10363                            })
10364                            .then(response => response.json())
10365                            .then(data => {
10366                                if (data && data.medium) {
10367                                    window.dispatchEvent(new CustomEvent("update-gallery-471
1036758", {
10368                                        detail: data.medium
10369                                    }));
10370                                }
10371                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
10372                    },
10373
10374
10375                    initShowSwatchesIntersect() {
10376                        const observer = new IntersectionObserver(entries => {
10377                            if (entries[0].isIntersecting) {
10378                                this.showSwatches = true;
10379                                observer.disconnect();
10380                            }
10381                        }, {
10382                            rootMargin: '512px'
10383                        });
10384                        observer.observe(this.$el);
10385                    },
10386                    getOptions(attrId) {
10387                        return this.precalcOptions[attrId] || [];
10388                    },
10389                    getOptionsByAttrId() {
10390                        return this.getOptions(this.$el.dataset.attributeId);
10391                    },
10392                    _getItemId() {
10393                        if (this.item && this.item.id) return this.item.id;
10394                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
10395                    },
10396                    getSwatchOptionHtmlId() {
10397                        const itemId = this._getItemId();
10398                        return itemId ? this.$id(`attribute-option-47158-${itemId}`) : '';
10399                    },
10400                    getSwatchOptionHtmlIdGroup() {
10401                        const itemId = this._getItemId();
10402                        return itemId ? [`attribute-option-47158-${itemId}`] : [];
10403                    },
10404                    getAttributeSwatchData(attributeId) {
10405                        const data = Object.assign({}, this.swatchConfig[attributeId]);
10406                        if (data['additional_data']) {
10407                            try {
10408                                data['details'] = JSON.parse(data['additional_data']);
10409                            } catch (e) {
10410                                data['details'] = {};
10411                            }
10412                        }
10413                        return data;
10414                    },
10415                    getSwatchType(attributeId, optionId) {
10416                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
10417                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
10418                        }
10419                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
10420                            this.swatchConfig[attributeId].details.swatch_input_type :
10421                            "empty";
10422                        if (type === 'visual') {
10423                            const config = this.swatchConfig[attributeId];
10424                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
10425                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
10426                            }
10427                            // Fallback to first option type
10428                            for (const oId in config) {
10429                                if (config[oId] && typeof config[oId].type !== 'undefined') {
10430                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
10431                                }
10432                            }
10433                        }
10434                        return type;
10435                    },
10436                    mapSwatchTypeNumberToTypeCode(type) {
10437                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
10438                    },
10439                    isTextSwatch() {
10440                        const itemId = this._getItemId();
10441                        if (!this.$el || !itemId) return false;
10442                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
10443                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
10444                    },
10445
10446                    getSwatchText() {
10447                        const itemId = this._getItemId();
10448                        if (this.item) return this.item.label || '';
10449                        if (!this.$el || !itemId) return '';
10450                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
10451                        const options = attrId ? this.getOptions(attrId) : [];
10452                        const opt = options.find(o => o.id == itemId);
10453                        return opt ? opt.label : '';
10454                    },
10455                    getSwatchBackgroundStyle() {
10456                        const itemId = this._getItemId();
10457                        if (!this.$el || !itemId) return '';
10458                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
10459                        if (!attrId) return '';
10460                        const type = this.getSwatchType(attrId, itemId);
10461                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
10462                            this.swatchConfig[attrId][itemId] :
10463                            null;
10464                        if (!swatchData) return '';
10465                        if (type === "color") return 'background-color:' + swatchData.value;
10466                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
10467                        return '';
10468                    },
10469                    swatchOptionClasses() {
10470                        const itemId = this._getItemId();
10471                        if (!this.$el || !itemId) return {};
10472                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
10473                        return {
10474                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
10475                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
10476                            'w-6 h-6': !this.isTextSwatch()
10477                        }
10478                    },
10479
10480                    onFocusSwatchItem() {
10481                        const itemId = this._getItemId();
10482                        if (itemId) this.focusedLabel = itemId;
10483                    },
10484                    onChangeOption() {
10485                        const itemId = this._getItemId();
10486                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
10487                        if (attrId && itemId) this.changeOption(attrId, itemId);
10488                    },
10489                    changeOption(attributeId, value) {
10490                        if (value === '') {
10491                            return;
10492                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
10493                        } else {
10494                            this.selectedValues[attributeId] = value;
10495                        }
10496
10497                        this.findSimpleIndex();
10498                        this.findAllowedAttributeOptions();
10499                        this.updatePrices();
10500                        this.updateGallery();
10501
10502                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
10503                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
10504
10505                        const eventDetail = {
10506                            productId: this.productId,
10507                            optionId: attributeId,
10508                            value: value,
10509                            productIndex: this.productIndex || 0,
10510                            selectedValues: this.selectedValues,
10511                            candidates: candidates,
10512                            sourceElement: this.$el
10513                        };
10514
10515                        // Dispatch for Amasty
10516                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
10517                            detail: eventDetail
10518                        }));
10519
10520                        // Dispatch for Hyva listing
10521                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
10522                            detail: eventDetail
10523                        }));
10524                    },
10525
10526
10527                    clearOptionIfActive() {
10528                        const itemId = this._getItemId();
10529                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
10530                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
10531                            this.changeOption(attrId, '');
10532
10533                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
10534                            if (!input && this.$el?.querySelector) {
10535                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
10536                            }
10537                            if (!input && this.$el?.closest) {
10538                                const root = this.$el.closest('[data-product-id]') || this.$el;
10539                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
10540                            }
10541                            if (input) {
10542                                input.checked = false;
10543                            }
10544                        }
10545                    },
10546                    get optionIsEnabled() {
10547                        const itemId = this._getItemId();
10548                        if (!this.$el || !itemId) return true;
10549                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
10550                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
10551                        return !!allowedOptions.find(opt => opt.id == itemId);
10552                    },
10553                    get isSelected() {
10554                        const itemId = this._getItemId();
10555                        if (!this.$el || !itemId) return false;
10556                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
10557                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
10558                    },
10559                    get isSwatchRequired() {
10560                        if (!this.$el) return false;
10561                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
10562                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
10563                    },
10564                    focusedLabel: false,
10565                    activeTooltipItem: false,
10566                    tooltipPositionElement: false,
10567                    setActiveTooltipItem() {
10568                        const itemId = this._getItemId();
10569                        if (!this.$el || !itemId) return;
10570                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
10571                        this.activeTooltipItem = {
10572                            attribute: attrId,
10573                            item: itemId,
10574                            index: 0
10575                        };
10576                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
10577                    },
10578                    unsetActiveTooltipItem() {
10579                        this.activeTooltipItem = false;
10580                    }
10581                },
10582                confProdPreSelect()
10583            );
10584
10585            if (result.optionConfig && result.optionConfig.attributes) {
10586                const attributes = result.optionConfig.attributes;
10587                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
10588                    let source = attributes;
10589                    if (Array.isArray(attributes)) {
10590                        source = {};
10591                        attributes.forEach(attr => {
10592                            if (attr && attr.id) source[attr.id] = attr;
10593                        });
10594                    }
10595                    const values = Object.values(source);
10596                    const wrapper = Object.assign(values, source);
10597                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
10598                        value: true,
10599                        enumerable: false
10600                    });
10601                    result.optionConfig.attributes = wrapper;
10602                }
10603            }
10604
10605            return result;
10606        }
10607
10608        window.addEventListener('alpine:init', () => {
10609            Alpine.data('initConfigurableSwatchOptions_47158', initConfigurableSwatchOptions_47158);
10610        }, {
10611            once: true
10612        });
10613    </script>
10613
10614    
10615    <div x-data="initConfigurableSwatchOptions_47158" x-defer="intersect">
10616        <div class="pagebuilder-home-hidden">
10617                                            
10618                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
10619                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
10620                        <template x-if="showSwatches">
10621                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-47158-163" role="radiogroup" aria-label="Einband">
10622                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
10623                                    <div :data-option-id="item.id" style="display: contents">
10624                                        <div x-id="getSwatchOptionHtmlIdGroup">
10625    <template x-if="optionIsEnabled">
10626        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
10626self="unsetActiveTooltipItem">
10627            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-47158-163">
10628            <div>
10629                <template x-if="isTextSwatch">
10630                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
10631                </template>
10632                <template x-if="!optionIsActive(163, item.id)">
10633                    <div>
10634                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
10635                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
10636                        </svg>
10637                    </div>
10638                </template>
10639            </div>
10640        </label>
10641    </template>
10642</div>                                    </div>
10643                                </template>
10644                            </div>
10645                        </template>
10646                    </div>
10647                </div>
10648                    </div>
10649    </div>
10650            
10651                                                <div class="meta py-4 pagebuilder-home-hidden">
10652                <div x-data="initMarketingShortText_47158()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
10653                    <!-- Marketing short text -->
10654                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
10655                    </div>
10656
10657                    <!-- Short description -->
10658                                                                <div class="short-description">
10659                            Jean-Jacques Rousseau war einer der bedeutendsten Schriftsteller im Zeitalter der Aufkl&auml;rung. Zugleich war er derjenige, der die selbsternannten &raquo;philosophes&laquo; am grundlegendsten kritisierte, da ...                            <a href="https://meiner.de/fmv_de/rousseau-21427" class="underline">mehr</a>
10660                        </div>
10661                                    </div>
10662
10663                <!-- Series  -->
10664                                    <div class="mb-1">
10665                        <span class="sr-only">Reihe:</span>
10666                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
10667                            <span>Blaue Reihe</span>
10668                        </a>
10669                                            </div>
10670                
10671                
10672                                                    <div class="mb-1">
10673                        <span x-data="initEditionText_47158()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
10674                            <!-- Marketing short text -->
10675                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 372 Seiten.                        </span>
10676                    </div>
10677                
10678                            </div>
10679            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
10680                
10681                <div class="justify-end" x-data="initPriceBox()" @update-prices-47158.window="updatePrice($event.detail);">
10682                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="47158" data-price-box="product-id-47158"><span class="normal-price">
10683    <span x-data x-id="['product\u002Dprice\u002D47158']" class="price-container price-final_price tax weee">
10684            <span class="price-label">Ab</span>
10685                <span class="approx-price">ca. </span>
10686        <span :id="$id('product\u002Dprice\u002D47158')" data-price-amount="25.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">25,99&nbsp;&euro;</span></span>
10687        </span>
10688</span>
10689
10690
10691</div>                </div>
10692
10693                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
10694                                            <div class="open-access-container open-access-container-47158                    flex mt-4 ml-auto sm:mt-0 hidden">
10695                            <div class="text-gray-700">
10696                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
10697                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
10698                                        Kostenlos online lesen                                    </a>
10699                                </button>
10700                            </div>
10701                        </div>
10702                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Rousseau" aria-label="In den Warenkorb Rousseau" data-addto="cart">
10703                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
10704  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
107040 014 0z"></path>
10705</svg>
10706                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
10707                                        In den Warenkorb                                    </span>
10708                                </button>
10709                                                                                                                    
10710<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(47158)" aria-label="Zur Wunschliste hinzuf&uuml;gen Rousseau" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
10711    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
10712  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
10713</svg>
10714</button>
10715                                    </div>
10716            </div>
10717        </div>
10718        
10718<script>
10719            function initMarketingShortText_47158() {
10720                var marketingShortTextConfig = {};
10721                if (typeof window.initConfigurableSwatchOptions_47158 === "function") {
10722                    var fullConfig = window.initConfigurableSwatchOptions_47158().optionConfig
10723                    var marketingShortTextConfig = fullConfig.marketing_short_text;
10724                }
10725                return {
10726                    marketingShortText: '',
10727                    config: marketingShortTextConfig,
10728                    productId: '47158',
10729                    getMarketingShortText(detail) {
10730                        this.marketingShortText = detail.productIndex ?
10731                            this.config[detail.productIndex] :
10732                            null;
10733                    },
10734                    eventListeners: {
10735                        ['@listing-configurable-selection-changed.window'](event) {
10736                            if (this.productId == event.detail.productId) {
10737                                this.getMarketingShortText(event.detail);
10738                            }
10739
10740                        }
10741                    }
10742                }
10743            }
10744
10745            function initEditionText_47158() {
10746                var editionTextConfig = {};
10747                if (typeof window.initConfigurableSwatchOptions_47158 === "function") {
10748                    var fullConfig = window.initConfigurableSwatchOptions_47158().optionConfig
10749                    var editionTextConfig = fullConfig.edition;
10750                }
10751                return {
10752                    editionText: '',
10753                    config: editionTextConfig,
10754                    productId: '47158',
10755                    getEditionText(detail) {
10756                        this.editionText = detail.productIndex ?
10757                            this.config[detail.productIndex] :
10758                            null;
10759                    },
10760                    eventListeners: {
10761                        ['@listing-configurable-selection-changed.window'](event) {
10762                            if (this.productId == event.detail.productId) {
10763                                this.getEditionText(event.detail);
10764                            }
10765
10766                        }
10767                    }
10768                }
10769            }
10770        </script>
10770
10771                    </form>
10772                            
10773    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/47111/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21363">
10774        <input name="form_key" type="hidden" value="R6NBsKL42phFmgWc">        <input type="hidden" name="product" value="47111">
10775                                    <a href="https://meiner.de/fmv_de/a-ber-die-gefahr-21363" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
10776            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-47111.window="$el.src = $event.detail" alt="&Uuml;ber die Gefahr" title="&Uuml;ber die Gefahr" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787350988_1.jpg" :style="{
10777                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
10778                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
10779            }">
10780                    </a>
10781        <div class="product-info flex flex-col flex-grow ">
10782                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
10783                                    <div class="mb-2 text-sm text-gray-500 font-medium">
10784                                                                                    <a href="https://meiner.de/fmv_de/person/Heiko-Christians-3418/" class="mb-2">
10785                                    Heiko Christians                                                                    </a>
10786                                                                                                                                    </div>
10787                                <a class="product-item-link" href="https://meiner.de/fmv_de/a-ber-die-gefahr-21363">
10788                    &Uuml;ber die Gefahr                </a>
10789                            </div>
10790
10791            <div x-data="initEditionText_47111()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
10792                <!-- Marketing short text -->
10793                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
10794                </div>
10795            </div>
10796
10797                            <div class="py-1 grid  mb-4 ">
10798                    
10799                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":47111,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":47111,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2Rl","childProducts":{"46919":"1","47093":"1","47218":"1"},"childProductsAlertStatus":{"46919":"0","47093":"0","47218":"0"},"indexMapping":{"163:15":46919,"163:8":47093,"163:9":47218},"availabilityMessages":{"46919":"Lieferbar innerhalb von 3-5 Tagen","47093":"Download sofort  verf\u00fcgbar","47218":"Download sofort  verf\u00fcgbar"},"openAccess":{"47111":{"status":0},"46919":{"status":0},"47093":{"status":0},"47218":{"status":0}}},"availabilityMessages":{"46919":"Lieferbar innerhalb von 3-5 Tagen","47093":"Download sofort  verf\u00fcgbar","47218":"Download sofort  verf\u00fcgbar"},"openAccess":{"47111":{"status":0},"46919":{"status":0},"47093":{"status":0},"47218":{"status":0}}}'>
10800        <template x-if="containerVisible">
10801                            <!-- Popup Trigger -->
10802                <div>
10803                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
10804                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
10805                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
10806  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
10807<title>bell</title></svg>
10808</span>
10809                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
10810
10811                    <!-- Popup Modal -->
10812                    <template x-if="showModal">
10813                        <template x-teleport=".page-wrapper">
10814                            <div x-cloak class="fixed inset-0 flex items-center justify-center
10815                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
10816                                <div class="relative bg-white rounded-lg shadow-xl
10817                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
10818                                    <div class="p-6">
10819                                        <!-- Subscription Form for Popup -->
10820                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
10821                                            <input name="form_key" type="hidden" value="R6NBsKL42phFmgWc">
10822                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
10823                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
10824
10825                                            <div class="flex flex-col gap-3">
10826                                                <div class="flex-grow grow">
10827                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
10828                                                        shadow-xs focus:outline-none focus:outline-hidden
10829                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
10830                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
10831                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
10832                                                </div>
10833                                                <input type="hidden" name="product_id" :value="currentProductId">
10834                                                <input type="hidden" name="type" value="email">
10835
10836                                                
10837                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvZm12X2Rl">
10838
10839                                                <div class="amxnotif_guest_action">
10840                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
10841                                                        rounded-md focus:outline-none
10842                                                        focus:outline-hidden focus:ring-2
10843                                                        focus:ring-offset-2 disabled:opacity-50
10844                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
10845                                                        Benachrichtigen                                                    </button>
10846                                                </div>
10847                                            </div>
10848
10849                                                                                            <div class="flex items-start pt-2">
10850                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
10851                                                        text-blue-600 border-gray-300 rounded-sm">
10852                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
10853                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
10854                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
10855                                                </div>
10856                                                                                    </form>
10857                                    </div>
10858
10859                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
10860                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
10861                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
10862  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
10863<title>x</title></svg>
10864                                    </button>
10865                                </div>
10866                            </div>
10867                        </template>
10868                    </template>
10869                </div>
10870                    </template>
10871    </div>
10872
10873<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_47111" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":47111,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2Rl","childProducts":{"46919":"1","47093":"1","47218":"1"},"childProductsAlertStatus":{"46919":"0","47093":"0","47218":"0"},"indexMapping":"{\u0022163:15\u0022:46919,\u0022163:8\u0022:47093,\u0022163:9\u0022:47218}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":47111,"availabilityMessages":{"46919":"Lieferbar innerhalb von 3-5 Tagen","47093":"Download sofort  verf\u00fcgbar","47218":"Download sofort  verf\u00fcgbar"},"openAccess":{"47111":{"status":0},"46919":{"status":0},"47093":{"status":0},"47218":{"status":0}}}'>
10874    
10875    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
10876        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
10877        <span x-html="optionsLabelText"></span>
10878    </p>
10879</div>                </div>
10880            
10881                                
10881<script>
10882        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
10883            try {
10884                const attributes = (config && config.attributes) ? config.attributes : null;
10885                if (!attributes) return [];
10886                let attr = null;
10887                if (Array.isArray(attributes)) {
10888                    for (let i = 0; i < attributes.length; i++) {
10889                        const a = attributes[i];
10890                        if (a && a.id == attrId) {
10891                            attr = a;
10892                            break;
10893                        }
10894                    }
10895                } else {
10896                    attr = attributes[attrId];
10897                }
10898                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
10899            } catch (e) {
10900                return [];
10901            }
10902        };
10903
10904        function initConfigurableSwatchOptions_47111() {
10905            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46919"]},{"id":"8","label":"PDF","products":["47093"]},{"id":"9","label":"EPUB","products":["47218"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46919":{"baseOldPrice":{"amount":18.598129841121},"oldPrice":{"amount":19.9},"basePrice":{"amount":18.598129841121},"finalPrice":{"amount":19.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47093":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":14.009344794393},"finalPrice":{"amount":14.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47218":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":14.009344794393},"finalPrice":{"amount":14.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":12.596637655462},"finalPrice":{"amount":14.99},"isApproxPrice":null},"productId":"47111","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46919":{"163":"15"},"47093":{"163":"8"},"47218":{"163":"9"}},"salable":{"163":{"15":["46919"],"8":["47093"],"9":["47218"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"46919":"005098","47093":"005099","47218":"005100"},"output":{"46919":"Kartoniert","47093":"PDF","47218":"EPUB"},"original_name":{"46919":"","47093":"","47218":""},"openaccess_license_link":{"46919":"","47093":"","47218":""},"openaccess_license_name":{"46919":"","47093":"","47218":""},"openaccess_external_link":{"46919":"","47093":"","47218":""},"gpsr_safety_info":{"46919":"","47093":"","47218":""},"description":{"46919":"Dies ist ein Buch \u00fcber die Gefahr. Tats\u00e4chlich gibt es bis heute kein weiteres. Die Gefahr, das soundsovielte Buch zum Thema zu lesen, besteht also nicht. Bleibt die Frage, ob es dieses eine braucht. Wir leben in Zeiten, in denen die Gefahr wieder Konjunktur hat. Sie tritt ein, sie wird geahnt, taxiert, beschworen. \u2013 Nur erkl\u00e4rt wird sie als historisches, \u00e4sthetisches und semantisches Ph\u00e4nomen bisher nicht. Es gibt hingegen ganze soziologische Bibliotheken \u00fcber das Risiko. Das ist der plausible Komplement\u00e4rbegriff \u2013 solange es um Gewinne und Kalk\u00fcle, solange es um Wirtschaft geht. Die Semantik aber hat sich langsam, aber sicher verschoben \u2013 zugunsten der Gefahr. Die Weltlage legt das nahe bzw. best\u00e4tigt das. Die Gefahr hat eine lange und interessante Geschichte hinter sich, bevor sie die Gegenwart erreicht. Je nach Perspektive. Genau das aber ist bis heute g\u00e4nzlich unbearbeitet. Mit diesem Buch liegt erstmals ein historisch fundiertes, medienwissenschaftlich informiertes, gut lesbares philosophisches Essay zum Thema vor.","47093":"Dies ist ein Buch \u00fcber die Gefahr. Tats\u00e4chlich gibt es bis heute kein weiteres. Die Gefahr, das soundsovielte Buch zum Thema zu lesen, besteht also nicht. Bleibt die Frage, ob es dieses eine braucht. Wir leben in Zeiten, in denen die Gefahr wieder Konjunktur hat. Sie tritt ein, sie wird geahnt, taxiert, beschworen. \u2013 Nur erkl\u00e4rt wird sie als historisches, \u00e4sthetisches und semantisches Ph\u00e4nomen bisher nicht. Es gibt hingegen ganze soziologische Bibliotheken \u00fcber das Risiko. Das ist der plausible Komplement\u00e4rbegriff \u2013 solange es um Gewinne und Kalk\u00fcle, solange es um Wirtschaft geht. Die Semantik aber hat sich langsam, aber sicher verschoben \u2013 zugunsten der Gefahr. Die Weltlage legt das nahe bzw. best\u00e4tigt das. Die Gefahr hat eine lange und interessante Geschichte hinter sich, bevor sie die Gegenwart erreicht. Je nach Perspektive. Genau das aber ist bis heute g\u00e4nzlich unbearbeitet. Mit diesem Buch liegt erstmals ein historisch fundiertes, medienwissenschaftlich informiertes, gut lesbares philosophisches Essay zum Thema vor.","47218":"Dies ist ein Buch \u00fcber die Gefahr. Tats\u00e4chlich gibt es bis heute kein weiteres. Die Gefahr, das soundsovielte Buch zum Thema zu lesen, besteht also nicht. Bleibt die Frage, ob es dieses eine braucht. Wir leben in Zeiten, in denen die Gefahr wieder Konjunktur hat. Sie tritt ein, sie wird geahnt, taxiert, beschworen. \u2013 Nur erkl\u00e4rt wird sie als historisches, \u00e4sthetisches und semantisches Ph\u00e4nomen bisher nicht. Es gibt hingegen ganze soziologische Bibliotheken \u00fcber das Risiko. Das ist der plausible Komplement\u00e4rbegriff \u2013 solange es um Gewinne und Kalk\u00fcle, solange es um Wirtschaft geht. Die Semantik aber hat sich langsam, aber sicher verschoben \u2013 zugunsten der Gefahr. Die Weltlage legt das nahe bzw. best\u00e4tigt das. Die Gefahr hat eine lange und interessante Geschichte hinter sich, bevor sie die Gegenwart erreicht. Je nach Perspektive. Genau das aber ist bis heute g\u00e4nzlich unbearbeitet. Mit diesem Buch liegt erstmals ein historisch fundiertes, medienwissenschaftlich informiertes, gut lesbares philosophisches Essay zum Thema vor."},"doi":{"46919":"","47093":"10.28937\/978-3-7873-5099-5","47218":""},"isbn":{"46919":"978-3-7873-5098-8","47093":"978-3-7873-5099-5","47218":"978-3-7873-5100-8"},"marketing_short_text":{"46919":"","47093":"","47218":""},"recension_text":{"46919":"<div class=\"reviews\">\r\n<div class=\"review\">Christians hat ein kleines B\u00fcchlein mit geballtem Inhalt vorgelegt, das einem fast vergessenen Begleiter des Menschen endlich einen begrifflichen Rahmen geben will.<\/div>\r\n<div class=\"source\">Michael Hesse in der Frankfurter Rundschau vom 29.07.2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Nils Schniederjann bespricht \u00dcber die Gefahr bei Deutschlandfunk Kultur. Besonders hebt er Christians\u2019 ph\u00e4nomenologischen Blick hervor, der weder in \"rei\u00dferische Heldenverehrung\" noch in moralische Verurteilung verf\u00e4llt. Entstanden sei so ein \"gelehrtes, materialreiches Panorama eines Ph\u00e4nomens, das gerade jetzt wieder allgegenw\u00e4rtig scheint\".<\/div>\r\n<div class=\"source\"><a href=\"https:\/\/www.deutschlandfunkkultur.de\/buchkritik-heiko-christians-ueber-die-gefahr-eine-vorsichtige-annaeherung-100.html\"><em>Deutschlandfunk Kultur, Studio 9, 1. Juli 2026<\/em><\/a><\/div>\r\n<\/div>
10905","47093":"<div class=\"reviews\">\r\n<div class=\"review\">Christians hat ein kleines B\u00fcchlein mit geballtem Inhalt vorgelegt, das einem fast vergessenen Begleiter des Menschen endlich einen begrifflichen Rahmen geben will.<\/div>\r\n<div class=\"source\">Michael Hesse in der Frankfurter Rundschau vom 29.07.2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Nils Schniederjann bespricht \u00dcber die Gefahr bei Deutschlandfunk Kultur. Besonders hebt er Christians\u2019 ph\u00e4nomenologischen Blick hervor, der weder in \"rei\u00dferische Heldenverehrung\" noch in moralische Verurteilung verf\u00e4llt. Entstanden sei so ein \"gelehrtes, materialreiches Panorama eines Ph\u00e4nomens, das gerade jetzt wieder allgegenw\u00e4rtig scheint\".<\/div>\r\n<div class=\"source\"><a href=\"https:\/\/www.deutschlandfunkkultur.de\/buchkritik-heiko-christians-ueber-die-gefahr-eine-vorsichtige-annaeherung-100.html\"><em>Deutschlandfunk Kultur, Studio 9, 1. Juli 2026<\/em><\/a><\/div>\r\n<\/div>","47218":"<div class=\"reviews\">\r\n<div class=\"review\">Christians hat ein kleines B\u00fcchlein mit geballtem Inhalt vorgelegt, das einem fast vergessenen Begleiter des Menschen endlich einen begrifflichen Rahmen geben will.<\/div>\r\n<div class=\"source\">Michael Hesse in der Frankfurter Rundschau vom 29.07.2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Nils Schniederjann bespricht \u00dcber die Gefahr bei Deutschlandfunk Kultur. Besonders hebt er Christians\u2019 ph\u00e4nomenologischen Blick hervor, der weder in \"rei\u00dferische Heldenverehrung\" noch in moralische Verurteilung verf\u00e4llt. Entstanden sei so ein \"gelehrtes, materialreiches Panorama eines Ph\u00e4nomens, das gerade jetzt wieder allgegenw\u00e4rtig scheint\".<\/div>\r\n<div class=\"source\"><a href=\"https:\/\/www.deutschlandfunkkultur.de\/buchkritik-heiko-christians-ueber-die-gefahr-eine-vorsichtige-annaeherung-100.html\"><em>Deutschlandfunk Kultur, Studio 9, 1. Juli 2026<\/em><\/a><\/div>\r\n<\/div>"},"language":{"46919":"","47093":"","47218":""},"cover":{"46919":"Kartoniert","47093":"","47218":""},"pages":{"46919":"144","47093":"144","47218":"144"},"edition":{"46919":"","47093":"Unver\u00e4ndertes eBook der 1. Auflage von 2026","47218":"Unver\u00e4ndertes EPUB der 1. Auflage von 2026"},"pod":{"46919":"Nein","47093":"Nein","47218":"Nein"},"copyright_year":{"46919":"","47093":"","47218":""},"vlb_tix_link":{"46919":"https:\/\/neu.vlbtix.de\/products\/9783787350988?type=gtin","47093":"","47218":""},"defaultValues":{"163":"15"}};
10906            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
10907
10908            if (typeof window.amxnotif_wrap_attributes === 'function') {
10909                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
10910                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
10911            }
10912
10913            const configurableOptionsComponent = initConfigurableOptions(
10914                '47111',
10915                config
10916            );
10917            const swatchOptionsComponent = initSwatchOptions(
10918                swatchConfig
10919            );
10920
10921            // DWS - Configurable product preselect start
10922            const confProdPreSelect = () => {
10923                return {
10924                    preselectQuerystringItems() {
10925                        var data = {"id":"46919","output":"15"};
10926                        const urlQueryParams = new URLSearchParams(window.location.search);
10927
10928                                                this.$nextTick(() => {
10929                            setTimeout(() => {
10930                                const rootEl = this.$root || this.$el;
10931                                if (!rootEl) return;
10932
10933                                const applySelection = (attrCode, attrValue) => {
10934                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
10935
10936                                    const attributes = Object.values(this.optionConfig.attributes || {});
10937                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
10938
10939                                    if (targetAttr) {
10940                                        const attrId = String(targetAttr.id);
10941                                        const optionVal = String(attrValue);
10942
10943                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
10944
10945                                        if (inputEl) {
10946                                                                                        inputEl.click();
10947                                            inputEl.dispatchEvent(new Event('change', {
10948                                                bubbles: true
10949                                            }));
10950                                        } else {
10951                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
10952                                            if (selectEl) {
10953                                                selectEl.value = optionVal;
10954                                                selectEl.dispatchEvent(new Event('change', {
10955                                                    bubbles: true
10956                                                }));
10957                                            }
10958                                        }
10959
10960                                                                                this.changeOption(attrId, optionVal, false);
10961                                    }
10962                                };
10963
10964                                                                if (data && typeof data === 'object') {
10965                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
10966                                }
10967
10968                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
10969                                    if (attribute && attribute.code) {
10970                                        let optionValue = urlQueryParams.get(attribute.code);
10971                                        if (optionValue) {
10972                                            let optionId = false;
10973                                            const attributes = Object.values(this.optionConfig.attributes || {});
10974                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
10975
10976                                            let found = false;
10977                                            Object.values(targetAttr.options).map(option => {
10978                                                if (found === false && option.label === optionValue) {
10979                                                    optionId = option.id;
10980                                                    found = true;
10981                                                }
10982                                            });
10983
10984                                            const attrId = String(targetAttr.id);
10985                                            let optionVal = String(optionValue);
10986                                            if (found) {
10987                                                optionVal = String(optionId);
10988                                            }
10989
10990                                            applySelection(attribute.code, optionVal);
10991                                        }
10992                                    }
10993                                });
10994                            }, 100);
10995                        });
10996                    }
10997                }
10998            };
10999            // DWS - Configurable product preselect end
11000
11001            const result = Object.assign(
11002                configurableOptionsComponent,
11003                swatchOptionsComponent, {
11004                    productId: '47111',
11005                    productIndex: 0,
11006                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
11007                    showSwatches: false,
11008                    precalcOptions: {},
11009                    originalInit: configurableOptionsComponent.init,
11010                    init() {
11011                        try {
11012                            this.precalcOptions = {};
11013                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
11014                            this.preselectQuerystringItems();
11015                            if (Array.isArray(attrSource)) {
11016                                attrSource.forEach(attr => {
11017                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
11018                                });
11019                            } else if (attrSource && typeof attrSource === 'object') {
11020                                Object.keys(attrSource).forEach(id => {
11021                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
11022                                });
11023                            }
11024                        } catch (e) {
11025                            console.error('Pre-calc error:', e);
11026                        }
11027
11028                        if (typeof this.originalInit === 'function') {
11029                            this.originalInit();
11030                        }
11031
11032                        try {
11033                            this.initShowSwatchesIntersect();
11034                        } catch (e) {
11035                            console.error('intersect error:', e);
11036                        }
11037                    },
11038
11039                    updateGallery() {
11040                        if (!this.productIndex) return;
11041
11042                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
11043                                method: 'GET',
11044                                headers: {
11045                                    'Content-Type': 'application/json',
11046                                    'X-Requested-With': 'XMLHttpRequest'
11047                                }
11048                            })
11049                            .then(response => response.json())
11050                            .then(data => {
11051                                if (data && data.medium) {
11052                                    window.dispatchEvent(new CustomEvent("update-gallery-47111", {
11053                                        detail: data.medium
11054                                    }));
11055                                }
11056                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
11057                    },
11058
11059
11060                    initShowSwatchesIntersect() {
11061                        const observer = new IntersectionObserver(entries => {
11062                            if (entries[0].isIntersecting) {
11063                                this.showSwatches = true;
11064                                observer.disconnect();
11065                            }
11066                        }, {
11067                            rootMargin: '512px'
11068                        });
11069                        observer.observe(this.$el);
11070                    },
11071                    getOptions(attrId) {
11072                        return this.precalcOptions[attrId] || [];
11073                    },
11074                    getOptionsByAttrId() {
11075                        return this.getOptions(this.$el.dataset.attributeId);
11076                    },
11077                    _getItemId() {
11078                        if (this.item && this.item.id) return this.item.id;
11079                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
11080                    },
11081                    getSwatchOptionHtmlId() {
11082                        const itemId = this._getItemId();
11083                        return itemId ? this.$id(`attribute-option-47111-${itemId}`) : '';
11084                    },
11085                    getSwatchOptionHtmlIdGroup() {
11086                        const itemId = this._getItemId();
11087                        return itemId ? [`attribute-option-47111-${itemId}`] : [];
11088                    },
11089                    getAttributeSwatchData(attributeId) {
11090                        const data = Object.assign({}, this.swatchConfig[attributeId]);
11091                        if (data['additional_data']) {
11092                            try {
11093                                data['details'] = JSON.parse(data['additional_data']);
11094                            } catch (e) {
11095                                data['details'] = {};
11096                            }
11097                        }
11098                        return data;
11099                    },
11100                    getSwatchType(attributeId, optionId) {
11101                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
11102                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
11103                        }
11104                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
11105                            this.swatchConfig[attributeId].details.swatch_input_type :
11106                            "empty";
11107                        if (type === 'visual') {
11108                            const config = this.swatchConfig[attributeId];
11109                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
11110                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
11111                            }
11112                            // Fallback to first option type
11113                            for (const oId in config) {
11114                                if (config[oId] && typeof config[oId].type !== 'undefined') {
11115                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
11116                                }
11117                            }
11118                        }
11119                        return type;
11120                    },
11121                    mapSwatchTypeNumberToTypeCode(type) {
11122                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
11123                    },
11124                    isTextSwatch() {
11125                        const itemId = this._getItemId();
11126                        if (!this.$el || !itemId) return false;
11127                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
11128                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
11129                    },
11130
11131                    getSwatchText() {
11132                        const itemId = this._getItemId();
11133                        if (this.item) return this.item.label || '';
11134                        if (!this.$el || !itemId) return '';
11135                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
11136                        const options = attrId ? this.getOptions(attrId) : [];
11137                        const opt = options.find(o => o.id == itemId);
11138                        return opt ? opt.label : '';
11139                    },
11140                    getSwatchBackgroundStyle() {
11141                        const itemId = this._getItemId();
11142                        if (!this.$el || !itemId) return '';
11143                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
11144                        if (!attrId) return '';
11145                        const type = this.getSwatchType(attrId, itemId);
11146                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
11147                            this.swatchConfig[attrId][itemId] :
11148                            null;
11149                        if (!swatchData) return '';
11150                        if (type === "color") return 'background-color:' + swatchData.value;
11151                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
11152                        return '';
11153                    },
11154                    swatchOptionClasses() {
11155                        const itemId = this._getItemId();
11156                        if (!this.$el || !itemId) return {};
11157                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
11158                        return {
11159                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
11160                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
11161                            'w-6 h-6': !this.isTextSwatch()
11162                        }
11163                    },
11164
11165                    onFocusSwatchItem() {
11166                        const itemId = this._getItemId();
11167                        if (itemId) this.focusedLabel = itemId;
11168                    },
11169                    onChangeOption() {
11170                        const itemId = this._getItemId();
11171                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
11172                        if (attrId && itemId) this.changeOption(attrId, itemId);
11173                    },
11174                    changeOption(attributeId, value) {
11175                        if (value === '') {
11176                            return;
11177                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
11178                        } else {
11179                            this.selectedValues[attributeId] = value;
11180                        }
11181
11182                        this.findSimpleIndex();
11183                        this.findAllowedAttributeOptions();
11184                        this.updatePrices();
11185                        this.updateGallery();
11186
11187                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
11188                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
11189
11190                        const eventDetail = {
11191                            productId: this.productId,
11192                            optionId: attributeId,
11193                            value: value,
11194                            productIndex: this.productIndex || 0,
11195                            selectedValues: this.selectedValues,
11196                            candidates: candidates,
11197                            sourceElement: this.$el
11198                        };
11199
11200                        // Dispatch for Amasty
11201                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
11202                            detail: eventDetail
11203                        }));
11204
11205                        // Dispatch for Hyva listing
11206                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
11207                            detail: eventDetail
11208                        }));
11209                    },
11210
11211
11212                    clearOptionIfActive() {
11213                        const itemId = this._getItemId();
11214                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
11215                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
11216                            this.changeOption(attrId, '');
11217
11218                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
11219                            if (!input && this.$el?.querySelector) {
11220                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
11221                            }
11222                            if (!input && this.$el?.closest) {
11223                                const root = this.$el.closest('[data-product-id]') || this.$el;
11224                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
11225                            }
11226                            if (input) {
11227                                input.checked = false;
11228                            }
11229                        }
11230                    },
11231                    get optionIsEnabled() {
11232                        const itemId = this._getItemId();
11233                        if (!this.$el || !itemId) return true;
11234                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
11235                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
11236                        return !!allowedOptions.find(opt => opt.id == itemId);
11237                    },
11238                    get isSelected() {
11239                        const itemId = this._getItemId();
11240                        if (!this.$el || !itemId) return false;
11241                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
11242                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
11243                    },
11244                    get isSwatchRequired() {
11245                        if (!this.$el) return false;
11246                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
11247                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
11248                    },
11249                    focusedLabel: false,
11250                    activeTooltipItem: false,
11251                    tooltipPositionElement: false,
11252                    setActiveTooltipItem() {
11253                        const itemId = this._getItemId();
11254                        if (!this.$el || !itemId) return;
11255                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
11256                        this.activeTooltipItem = {
11257                            attribute: attrId,
11258                            item: itemId,
11259                            index: 0
11260                        };
11261                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
11262                    },
11263                    unsetActiveTooltipItem() {
11264                        this.activeTooltipItem = false;
11265                    }
11266                },
11267                confProdPreSelect()
11268            );
11269
11270            if (result.optionConfig && result.optionConfig.attributes) {
11271                const attributes = result.optionConfig.attributes;
11272                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
11273                    let source = attributes;
11274                    if (Array.isArray(attributes)) {
11275                        source = {};
11276                        attributes.forEach(attr => {
11277                            if (attr && attr.id) source[attr.id] = attr;
11278                        });
11279                    }
11280                    const values = Object.values(source);
11281                    const wrapper = Object.assign(values, source);
11282                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
11283                        value: true,
11284                        enumerable: false
11285                    });
11286                    result.optionConfig.attributes = wrapper;
11287                }
11288            }
11289
11290            return result;
11291        }
11292
11293        window.addEventListener('alpine:init', () => {
11294            Alpine.data('initConfigurableSwatchOptions_47111', initConfigurableSwatchOptions_47111);
11295        }, {
11296            once: true
11297        });
11298    </script>
11298
11299    
11300    <div x-data="initConfigurableSwatchOptions_47111" x-defer="intersect">
11301        <div class="pagebuilder-home-hidden">
11302                                            
11303                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
11304                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
11305                        <template x-if="showSwatches">
11306                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-47111-163" role="radiogroup" aria-label="Einband">
11307                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
11308                                    <div :data-option-id="item.id" style="display: contents">
11309                                        <div x-id="getSwatchOptionHtmlIdGroup">
11310    <template x-if="optionIsEnabled">
11311        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
11311self="unsetActiveTooltipItem">
11312            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-47111-163">
11313            <div>
11314                <template x-if="isTextSwatch">
11315                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
11316                </template>
11317                <template x-if="!optionIsActive(163, item.id)">
11318                    <div>
11319                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
11320                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
11321                        </svg>
11322                    </div>
11323                </template>
11324            </div>
11325        </label>
11326    </template>
11327</div>                                    </div>
11328                                </template>
11329                            </div>
11330                        </template>
11331                    </div>
11332                </div>
11333                    </div>
11334    </div>
11335            
11336                                                <div class="meta py-4 pagebuilder-home-hidden">
11337                <div x-data="initMarketingShortText_47111()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
11338                    <!-- Marketing short text -->
11339                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
11340                    </div>
11341
11342                    <!-- Short description -->
11343                                                                <div class="short-description">
11344                            Dies ist ein Buch &uuml;ber die Gefahr. Tats&auml;chlich gibt es bis heute kein weiteres. Die Gefahr, das soundsovielte Buch zum Thema zu lesen, besteht also nicht. Bleibt die Frage, ob es dieses eine ...                            <a href="https://meiner.de/fmv_de/a-ber-die-gefahr-21363" class="underline">mehr</a>
11345                        </div>
11346                                    </div>
11347
11348                <!-- Series  -->
11349                                    <div class="mb-1">
11350                        <span class="sr-only">Reihe:</span>
11351                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
11352                            <span>Blaue Reihe</span>
11353                        </a>
11354                                            </div>
11355                
11356                
11357                                                    <div class="mb-1">
11358                        <span x-data="initEditionText_47111()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
11359                            <!-- Marketing short text -->
11360                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 144                        </span>
11361                    </div>
11362                
11363                            </div>
11364            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
11365                
11366                <div class="justify-end" x-data="initPriceBox()" @update-prices-47111.window="updatePrice($event.detail);">
11367                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="47111" data-price-box="product-id-47111"><span class="normal-price">
11368    <span x-data x-id="['product\u002Dprice\u002D47111']" class="price-container price-final_price tax weee">
11369            <span class="price-label">Ab</span>
11370                <span class="approx-price">ca. </span>
11371        <span :id="$id('product\u002Dprice\u002D47111')" data-price-amount="14.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">14,99&nbsp;&euro;</span></span>
11372        </span>
11373</span>
11374
11375
11376</div>                </div>
11377
11378                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
11379                                            <div class="open-access-container open-access-container-47111                    flex mt-4 ml-auto sm:mt-0 hidden">
11380                            <div class="text-gray-700">
11381                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
11382                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
11383                                        Kostenlos online lesen                                    </a>
11384                                </button>
11385                            </div>
11386                        </div>
11387                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb &Uuml;ber die Gefahr" aria-label="In den Warenkorb &Uuml;ber die Gefahr" data-addto="cart">
11388                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
11389  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
113890 014 0z"></path>
11390</svg>
11391                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
11392                                        In den Warenkorb                                    </span>
11393                                </button>
11394                                                                                                                    
11395<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(47111)" aria-label="Zur Wunschliste hinzuf&uuml;gen &Uuml;ber die Gefahr" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
11396    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
11397  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
11398</svg>
11399</button>
11400                                    </div>
11401            </div>
11402        </div>
11403        
11403<script>
11404            function initMarketingShortText_47111() {
11405                var marketingShortTextConfig = {};
11406                if (typeof window.initConfigurableSwatchOptions_47111 === "function") {
11407                    var fullConfig = window.initConfigurableSwatchOptions_47111().optionConfig
11408                    var marketingShortTextConfig = fullConfig.marketing_short_text;
11409                }
11410                return {
11411                    marketingShortText: '',
11412                    config: marketingShortTextConfig,
11413                    productId: '47111',
11414                    getMarketingShortText(detail) {
11415                        this.marketingShortText = detail.productIndex ?
11416                            this.config[detail.productIndex] :
11417                            null;
11418                    },
11419                    eventListeners: {
11420                        ['@listing-configurable-selection-changed.window'](event) {
11421                            if (this.productId == event.detail.productId) {
11422                                this.getMarketingShortText(event.detail);
11423                            }
11424
11425                        }
11426                    }
11427                }
11428            }
11429
11430            function initEditionText_47111() {
11431                var editionTextConfig = {};
11432                if (typeof window.initConfigurableSwatchOptions_47111 === "function") {
11433                    var fullConfig = window.initConfigurableSwatchOptions_47111().optionConfig
11434                    var editionTextConfig = fullConfig.edition;
11435                }
11436                return {
11437                    editionText: '',
11438                    config: editionTextConfig,
11439                    productId: '47111',
11440                    getEditionText(detail) {
11441                        this.editionText = detail.productIndex ?
11442                            this.config[detail.productIndex] :
11443                            null;
11444                    },
11445                    eventListeners: {
11446                        ['@listing-configurable-selection-changed.window'](event) {
11447                            if (this.productId == event.detail.productId) {
11448                                this.getEditionText(event.detail);
11449                            }
11450
11451                        }
11452                    }
11453                }
11454            }
11455        </script>
11455
11456                    </form>
11457                            
11458    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/46706/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21359">
11459        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="46706">
11460                                    <a href="https://meiner.de/fmv_de/vorlesung-a-ber-die-philosophie-der-weltgeschichte-21359" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
11461            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-46706.window="$el.src = $event.detail" alt="Vorlesung &uuml;ber die Philosophie der Weltgeschichte" title="Vorlesung &uuml;ber die Philosophie der Weltgeschichte" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787350940_1.jpg" :style="{
11462                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
11463                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
11464            }">
11465                    </a>
11466        <div class="product-info flex flex-col flex-grow ">
11467                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
11468                                    <div class="mb-2 text-sm text-gray-500 font-medium">
11469                                                                                    <a href="https://meiner.de/fmv_de/person/Georg-Wilhelm-Friedrich-Hegel-3139/" class="mb-2">
11470                                    Georg Wilhelm Friedrich Hegel                                                                    </a>
11471                                                                                                                                    </div>
11472                                <a class="product-item-link" href="https://meiner.de/fmv_de/vorlesung-a-ber-die-philosophie-der-weltgeschichte-21359">
11473                    Vorlesung &uuml;ber die Philosophie der Weltgeschichte                </a>
11474                            </div>
11475
11476            <div x-data="initEditionText_46706()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
11477                <!-- Marketing short text -->
11478                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
11479                </div>
11480            </div>
11481
11482                            <div class="py-1 grid  mb-4 ">
11483                    
11484                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":46706,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":46706,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46500":"1","46770":"1"},"childProductsAlertStatus":{"46500":"0","46770":"0"},"indexMapping":{"163:15":46500,"163:8":46770},"availabilityMessages":{"46500":"Lieferbar innerhalb von 3-5 Tagen","46770":"Download sofort  verf\u00fcgbar"},"openAccess":{"46706":{"status":0},"46500":{"status":0},"46770":{"status":0}}},"availabilityMessages":{"46500":"Lieferbar innerhalb von 3-5 Tagen","46770":"Download sofort  verf\u00fcgbar"},"openAccess":{"46706":{"status":0},"46500":{"status":0},"46770":{"status":0}}}'>
11485        <template x-if="containerVisible">
11486                            <!-- Popup Trigger -->
11487                <div>
11488                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
11489                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
11490                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
11491  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
11492<title>bell</title></svg>
11493</span>
11494                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
11495
11496                    <!-- Popup Modal -->
11497                    <template x-if="showModal">
11498                        <template x-teleport=".page-wrapper">
11499                            <div x-cloak class="fixed inset-0 flex items-center justify-center
11500                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
11501                                <div class="relative bg-white rounded-lg shadow-xl
11502                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
11503                                    <div class="p-6">
11504                                        <!-- Subscription Form for Popup -->
11505                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
11506                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
11507                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
11508                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
11509
11510                                            <div class="flex flex-col gap-3">
11511                                                <div class="flex-grow grow">
11512                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
11513                                                        shadow-xs focus:outline-none focus:outline-hidden
11514                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
11515                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
11516                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
11517                                                </div>
11518                                                <input type="hidden" name="product_id" :value="currentProductId">
11519                                                <input type="hidden" name="type" value="email">
11520
11521                                                
11522                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
11523
11524                                                <div class="amxnotif_guest_action">
11525                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
11526                                                        rounded-md focus:outline-none
11527                                                        focus:outline-hidden focus:ring-2
11528                                                        focus:ring-offset-2 disabled:opacity-50
11529                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
11530                                                        Benachrichtigen                                                    </button>
11531                                                </div>
11532                                            </div>
11533
11534                                                                                            <div class="flex items-start pt-2">
11535                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
11536                                                        text-blue-600 border-gray-300 rounded-sm">
11537                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
11538                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
11539                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
11540                                                </div>
11541                                                                                    </form>
11542                                    </div>
11543
11544                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
11545                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
11546                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
11547  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
11548<title>x</title></svg>
11549                                    </button>
11550                                </div>
11551                            </div>
11552                        </template>
11553                    </template>
11554                </div>
11555                    </template>
11556    </div>
11557
11558<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_46706" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":46706,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46500":"1","46770":"1"}
11558,"childProductsAlertStatus":{"46500":"0","46770":"0"},"indexMapping":"{\u0022163:15\u0022:46500,\u0022163:8\u0022:46770}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":46706,"availabilityMessages":{"46500":"Lieferbar innerhalb von 3-5 Tagen","46770":"Download sofort  verf\u00fcgbar"},"openAccess":{"46706":{"status":0},"46500":{"status":0},"46770":{"status":0}}}'>
11559    
11560    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
11561        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
11562        <span x-html="optionsLabelText"></span>
11563    </p>
11564</div>                </div>
11565            
11566                                
11566<script>
11567        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
11568            try {
11569                const attributes = (config && config.attributes) ? config.attributes : null;
11570                if (!attributes) return [];
11571                let attr = null;
11572                if (Array.isArray(attributes)) {
11573                    for (let i = 0; i < attributes.length; i++) {
11574                        const a = attributes[i];
11575                        if (a && a.id == attrId) {
11576                            attr = a;
11577                            break;
11578                        }
11579                    }
11580                } else {
11581                    attr = attributes[attrId];
11582                }
11583                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
11584            } catch (e) {
11585                return [];
11586            }
11587        };
11588
11589        function initConfigurableSwatchOptions_46706() {
11590            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46500"]},{"id":"8","label":"PDF","products":["46770"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46500":{"baseOldPrice":{"amount":27.943924233645},"oldPrice":{"amount":29.9},"basePrice":{"amount":27.943924233645},"finalPrice":{"amount":29.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46770":{"baseOldPrice":{"amount":18.682241990654},"oldPrice":{"amount":19.99},"basePrice":{"amount":18.682241990654},"finalPrice":{"amount":19.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":18.682241990654},"oldPrice":{"amount":19.99},"basePrice":{"amount":16.798318327731},"finalPrice":{"amount":19.99},"isApproxPrice":null},"productId":"46706","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46500":{"163":"15"},"46770":{"163":"8"}},"salable":{"163":{"15":["46500"],"8":["46770"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"46500":"005093","46770":"005094"},"output":{"46500":"Kartoniert","46770":"PDF"},"original_name":{"46500":"","46770":""},"openaccess_license_link":{"46500":"","46770":""},"openaccess_license_name":{"46500":"","46770":""},"openaccess_external_link":{"46500":"","46770":""},"gpsr_safety_info":{"46500":"","46770":""},"description":{"46500":"Hegels geschichtsphilosophische Vorlesungen sind fast nur durch die Mit- und Nachschriften seiner Sch\u00fcler und H\u00f6rer zug\u00e4nglich \u2013 ein Faktum, das fr\u00fchere Ausgaben, die aus verschiedenen Nachschriften und einigen unver\u00f6ffentlichten Manuskripten kompiliert wurden, \u00fcberdeckt haben. Dieser Band gibt hingegen eine einzelne authentische Nachschrift wieder, n\u00e4mlich die von Hegels Sohn Karl Hegel von 1830\/31 \u2013 aus dem letzten Semester, in dem Hegel noch lehren konnte.<br\/><br\/>Karl Hegels Nachschrift dokumentiert damit die reifste Gestalt von Hegels Geschichtsphilosophie. In seiner Vorlesung skizzierte Hegel die politische, gesellschaftliche und religi\u00f6se Entwicklung eines einheitlichen Weltethos und des zugeh\u00f6rigen Personseins, wobei erst in Persien, u. a. von Zarathustra, die Idee der Wahrheit und des Guten allgemein gefasst und erst im Laufe der Geschichte des Christentums die W\u00fcrde des einzelnen Menschen und seine basalen Rechte erfasst werden.<br\/><br\/>Diese Ausgabe k\u00f6nnte, so der Herausgeber, \u00bbzu einer Art Game-Changer f\u00fcr die Lekt\u00fcre Hegels insgesamt werden, weil es auf Kants dogmatische Rede von einem moralischen Gesetz a priori in uns antwortet\u00ab. Bis auf leichte Korrekturen und behutsame Anpassungen an heutige Schreibweisen folgt der Text Band 27,4 der historisch-kritischen Ausgabe \u00bbG.W.F. Hegel: Gesammelte Werke\u00ab.","46770":"Hegels geschichtsphilosophische Vorlesungen sind fast nur durch die Mit- und Nachschriften seiner Sch\u00fcler und H\u00f6rer zug\u00e4nglich \u2013 ein Faktum, das fr\u00fchere Ausgaben, die aus verschiedenen Nachschriften und einigen unver\u00f6ffentlichten Manuskripten kompiliert wurden, \u00fcberdeckt haben. Dieser Band gibt hingegen eine einzelne authentische Nachschrift wieder, n\u00e4mlich die von Hegels Sohn Karl Hegel von 1830\/31 \u2013 aus dem letzten Semester, in dem Hegel noch lehren konnte.<br\/><br\/>Karl Hegels Nachschrift dokumentiert damit die reifste Gestalt von Hegels Geschichtsphilosophie. In seiner Vorlesung skizzierte Hegel die politische, gesellschaftliche und religi\u00f6se Entwicklung eines einheitlichen Weltethos und des zugeh\u00f6rigen Personseins, wobei erst in Persien, u. a. von Zarathustra, die Idee der Wahrheit und des Guten allgemein gefasst und erst im Laufe der Geschichte des Christentums die W\u00fcrde des einzelnen Menschen und seine basalen Rechte erfasst werden.<br\/><br\/>Diese Ausgabe k\u00f6nnte, so der Herausgeber, \u00bbzu einer Art Game-Changer f\u00fcr die Lekt\u00fcre Hegels insgesamt werden, weil es auf Kants dogmatische Rede von einem moralischen Gesetz a priori in uns antwortet\u00ab. Bis auf leichte Korrekturen und behutsame Anpassungen an heutige Schreibweisen folgt der Text Band 27,4 der historisch-kritischen Ausgabe \u00bbG.W.F. Hegel: Gesammelte Werke\u00ab."},"doi":{"46500":"","46770":"10.28937\/978-3-7873-5094-0"},"isbn":{"46500":"978-3-7873-5093-3","46770":"978-3-7873-5094-0"},"marketing_short_text":{"46500":"","46770":""},"recension_text":{"46500":"","46770":""},"language":{"46500":"","46770":""},"cover":{"46500":"Kartoniert","46770":""},"pages":{"46500":"LXII, 366 Seiten.","46770":"LXII, 366 Seiten."},"edition":{"46500":"","46770":"Unver\u00e4ndertes eBook der 1. Auflage von 2026"},"pod":{"46500":"Nein","46770":"Nein"},"copyright_year":{"46500":"","46770":""},"vlb_tix_link":{"46500":"https:\/\/neu.vlbtix.de\/products\/9783787350933?type=gtin","46770":""},"defaultValues":{"163":"15"}};
11591            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
11592
11593            if (typeof window.amxnotif_wrap_attributes === 'function') {
11594                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
11595                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
11596            }
11597
11598            const configurableOptionsComponent = initConfigurableOptions(
11599                '46706',
11600                config
11601            );
11602            const swatchOptionsComponent = initSwatchOptions(
11603                swatchConfig
11604            );
11605
11606            // DWS - Configurable product preselect start
11607            const confProdPreSelect = () => {
11608                return {
11609                    preselectQuerystringItems() {
11610                        var data = {"id":"46500","output":"15"};
11611                        const urlQueryParams = new URLSearchParams(window.location.search);
11612
11613                                                this.$nextTick(() => {
11614                            setTimeout(() => {
11615                                const rootEl = this.$root || this.$el;
11616                                if (!rootEl) return;
11617
11618                                const applySelection = (attrCode, attrValue) => {
11619                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
11620
11621                                    const attributes = Object.values(this.optionConfig.attributes || {});
11622                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
11623
11624                                    if (targetAttr) {
11625                                        const attrId = String(targetAttr.id);
11626                                        const optionVal = String(attrValue);
11627
11628                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
11629
11630                                        if (inputEl) {
11631                                                                                        inputEl.click();
11632                                            inputEl.dispatchEvent(new Event('change', {
11633                                                bubbles: true
11634                                            }));
11635                                        } else {
11636                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
11637                                            if (selectEl) {
11638                                                selectEl.value = optionVal;
11639                                                selectEl.dispatchEvent(new Event('change', {
11640                                                    bubbles: true
11641                                                }));
11642                                            }
11643                                        }
11644
11645                                                                                this.changeOption(attrId, optionVal, false);
11646                                    }
11647                                };
11648
11649                                                                if (data && typeof data === 'object') {
11650                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
11651                                }
11652
11653                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
11654                                    if (attribute && attribute.code) {
11655                                        let optionValue = urlQueryParams.get(attribute.code);
11656                                        if (optionValue) {
11657                                            let optionId = false;
11658                                            const attributes = Object.values(this.optionConfig.attributes || {});
11659                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
11660
11661                                            let found = false;
11662                                            Object.values(targetAttr.options).map(option => {
11663                                                if (found === false && option.label === optionValue) {
11664                                                    optionId = option.id;
11665                                                    found = true;
11666                                                }
11667                                            });
11668
11669                                            const attrId = String(targetAttr.id);
11670                                            let optionVal = String(optionValue);
11671                                            if (found) {
11672                                                optionVal = String(optionId);
11673                                            }
11674
11675                                            applySelection(attribute.code, optionVal);
11676                                        }
11677                                    }
11678                                });
11679                            }, 100);
11680                        });
11681                    }
11682                }
11683            };
11684            // DWS - Configurable product preselect end
11685
11686            const result = Object.assign(
11687                configurableOptionsComponent,
11688                swatchOptionsComponent, {
11689                    productId: '46706',
11690                    productIndex: 0,
11691                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
11692                    showSwatches: false,
11693                    precalcOptions: {},
11694                    originalInit: configurableOptionsComponent.init,
11695                    init() {
11696                        try {
11697                            this.precalcOptions = {};
11698                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
11699                            this.preselectQuerystringItems();
11700                            if (Array.isArray(attrSource)) {
11701                                attrSource.forEach(attr => {
11702                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
11703                                });
11704                            } else if (attrSource && typeof attrSource === 'object') {
11705                                Object.keys(attrSource).forEach(id => {
11706                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
11707                                });
11708                            }
11709                        } catch (e) {
11710                            console.error('Pre-calc error:', e);
11711                        }
11712
11713                        if (typeof this.originalInit === 'function') {
11714                            this.originalInit();
11715                        }
11716
11717                        try {
11718                            this.initShowSwatchesIntersect();
11719                        } catch (e) {
11720                            console.error('intersect error:', e);
11721                        }
11722                    },
11723
11724                    updateGallery() {
11725                        if (!this.productIndex) return;
11726
11727                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
11728                                method: 'GET',
11729                                headers: {
11730                                    'Content-Type': 'application/json',
11731                                    'X-Requested-With': 'XMLHttpRequest'
11732                                }
11733                            })
11734                            .then(response => response.json())
11735                            .then(data => {
11736                                if (data && data.medium) {
11737                                    window.dispatchEvent(new CustomEvent("update-gallery-46706", {
11738                                        detail: data.medium
11739                                    }));
11740                                }
11741                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
11742                    },
11743
11744
11745                    initShowSwatchesIntersect() {
11746                        const observer = new IntersectionObserver(entries => {
11747                            if (entries[0].isIntersecting) {
11748                                this.showSwatches = true;
11749                                observer.disconnect();
11750                            }
11751                        }, {
11752                            rootMargin: '512px'
11753                        });
11754                        observer.observe(this.$el);
11755                    },
11756                    getOptions(attrId) {
11757                        return this.precalcOptions[attrId] || [];
11758                    },
11759                    getOptionsByAttrId() {
11760                        return this.getOptions(this.$el.dataset.attributeId);
11761                    },
11762                    _getItemId() {
11763                        if (this.item && this.item.id) return this.item.id;
11764                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
11765                    },
11766                    getSwatchOptionHtmlId() {
11767                        const itemId = this._getItemId();
11768                        return itemId ? this.$id(`attribute-option-46706-${itemId}`) : '';
11769                    },
11770                    getSwatchOptionHtmlIdGroup() {
11771                        const itemId = this._getItemId();
11772                        return itemId ? [`attribute-option-46706-${itemId}`] : [];
11773                    },
11774                    getAttributeSwatchData(attributeId) {
11775                        const data = Object.assign({}, this.swatchConfig[attributeId]);
11776                        if (data['additional_data']) {
11777                            try {
11778                                data['details'] = JSON.parse(data['additional_data']);
11779                            } catch (e) {
11780                                data['details'] = {};
11781                            }
11782                        }
11783                        return data;
11784                    },
11785                    getSwatchType(attributeId, optionId) {
11786                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
11787                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
11788                        }
11789                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
11790                            this.swatchConfig[attributeId].details.swatch_input_type :
11791                            "empty";
11792                        if (type === 'visual') {
11793                            const config = this.swatchConfig[attributeId];
11794                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
11795                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
11796                            }
11797                            // Fallback to first option type
11798                            for (const oId in config) {
11799                                if (config[oId] && typeof config[oId].type !== 'undefined') {
11800                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
11801                                }
11802                            }
11803                        }
11804                        return type;
11805                    },
11806                    mapSwatchTypeNumberToTypeCode(type) {
11807                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
11808                    },
11809                    isTextSwatch() {
11810                        const itemId = this._getItemId();
11811                        if (!this.$el || !itemId) return false;
11812                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
11813                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
11814                    },
11815
11816                    getSwatchText() {
11817                        const itemId = this._getItemId();
11818                        if (this.item) return this.item.label || '';
11819                        if (!this.$el || !itemId) return '';
11820                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
11821                        const options = attrId ? this.getOptions(attrId) : [];
11822                        const opt = options.find(o => o.id == itemId);
11823                        return opt ? opt.label : '';
11824                    },
11825                    getSwatchBackgroundStyle() {
11826                        const itemId = this._getItemId();
11827                        if (!this.$el || !itemId) return '';
11828                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
11829                        if (!attrId) return '';
11830                        const type = this.getSwatchType(attrId, itemId);
11831                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
11832                            this.swatchConfig[attrId][itemId] :
11833                            null;
11834                        if (!swatchData) return '';
11835                        if (type === "color") return 'background-color:' + swatchData.value;
11836                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
11837                        return '';
11838                    },
11839                    swatchOptionClasses() {
11840                        const itemId = this._getItemId();
11841                        if (!this.$el || !itemId) return {};
11842                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
11843                        return {
11844                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
11845                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
11846                            'w-6 h-6': !this.isTextSwatch()
11847                        }
11848                    },
11849
11850                    onFocusSwatchItem() {
11851                        const itemId = this._getItemId();
11852                        if (itemId) this.focusedLabel = itemId;
11853                    },
11854                    onChangeOption() {
11855                        const itemId = this._getItemId();
11856                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
11857                        if (attrId && itemId) this.changeOption(attrId, itemId);
11858                    },
11859                    changeOption(attributeId, value) {
11860                        if (value === '') {
11861                            return;
11862                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
11863                        } else {
11864                            this.selectedValues[attributeId] = value;
11865                        }
11866
11867                        this.findSimpleIndex();
11868                        this.findAllowedAttributeOptions();
11869                        this.updatePrices();
11870                        this.updateGallery();
11871
11872                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
11873                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
11874
11875                        const eventDetail = {
11876                            productId: this.productId,
11877                            optionId: attributeId,
11878                            value: value,
11879                            productIndex: this.productIndex || 0,
11880                            selectedValues: this.selectedValues,
11881                            candidates: candidates,
11882                            sourceElement: this.$el
11883                        };
11884
11885                        // Dispatch for Amasty
11886                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
11887                            detail: eventDetail
11888                        }));
11889
11890                        // Dispatch for Hyva listing
11891                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
11892                            detail: eventDetail
11893                        }));
11894                    },
11895
11896
11897                    clearOptionIfActive() {
11898                        const itemId = this._getItemId();
11899                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
11900                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
11901                            this.changeOption(attrId, '');
11902
11903                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
11904                            if (!input && this.$el?.querySelector) {
11905                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
11906                            }
11907                            if (!input && this.$el?.closest) {
11908                                const root = this.$el.closest('[data-product-id]') || this.$el;
11909                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
11910                            }
11911                            if (input) {
11912                                input.checked = false;
11913                            }
11914                        }
11915                    },
11916                    get optionIsEnabled() {
11917                        const itemId = this._getItemId();
11918                        if (!this.$el || !itemId) return true;
11919                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
11920                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
11921                        return !!allowedOptions.find(opt => opt.id == itemId);
11922                    },
11923                    get isSelected() {
11924                        const itemId = this._getItemId();
11925                        if (!this.$el || !itemId) return false;
11926                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
11927                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
11928                    },
11929                    get isSwatchRequired() {
11930                        if (!this.$el) return false;
11931                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
11932                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
11933                    },
11934                    focusedLabel: false,
11935                    activeTooltipItem: false,
11936                    tooltipPositionElement: false,
11937                    setActiveTooltipItem() {
11938                        const itemId = this._getItemId();
11939                        if (!this.$el || !itemId) return;
11940                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
11941                        this.activeTooltipItem = {
11942                            attribute: attrId,
11943                            item: itemId,
11944                            index: 0
11945                        };
11946                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
11947                    },
11948                    unsetActiveTooltipItem() {
11949                        this.activeTooltipItem = false;
11950                    }
11951                },
11952                confProdPreSelect()
11953            );
11954
11955            if (result.optionConfig && result.optionConfig.attributes) {
11956                const attributes = result.optionConfig.attributes;
11957                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
11958                    let source = attributes;
11959                    if (Array.isArray(attributes)) {
11960                        source = {};
11961                        attributes.forEach(attr => {
11962                            if (attr && attr.id) source[attr.id] = attr;
11963                        });
11964                    }
11965                    const values = Object.values(source);
11966                    const wrapper = Object.assign(values, source);
11967                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
11968                        value: true,
11969                        enumerable: false
11970                    });
11971                    result.optionConfig.attributes = wrapper;
11972                }
11973            }
11974
11975            return result;
11976        }
11977
11978        window.addEventListener('alpine:init', () => {
11979            Alpine.data('initConfigurableSwatchOptions_46706', initConfigurableSwatchOptions_46706);
11980        }, {
11981            once: true
11982        });
11983    </script>
11983
11984    
11985    <div x-data="initConfigurableSwatchOptions_46706" x-defer="intersect">
11986        <div class="pagebuilder-home-hidden">
11987                                            
11988                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
11989                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
11990                        <template x-if="showSwatches">
11991                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-46706-163" role="radiogroup" aria-label="Einband">
11992                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
11993                                    <div :data-option-id="item.id" style="display: contents">
11994                                        <div x-id="getSwatchOptionHtmlIdGroup">
11995    <template x-if="optionIsEnabled">
11996        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
11996self="unsetActiveTooltipItem">
11997            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-46706-163">
11998            <div>
11999                <template x-if="isTextSwatch">
12000                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
12001                </template>
12002                <template x-if="!optionIsActive(163, item.id)">
12003                    <div>
12004                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
12005                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
12006                        </svg>
12007                    </div>
12008                </template>
12009            </div>
12010        </label>
12011    </template>
12012</div>                                    </div>
12013                                </template>
12014                            </div>
12015                        </template>
12016                    </div>
12017                </div>
12018                    </div>
12019    </div>
12020            
12021                                                <div class="meta py-4 pagebuilder-home-hidden">
12022                <div x-data="initMarketingShortText_46706()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
12023                    <!-- Marketing short text -->
12024                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
12025                    </div>
12026
12027                    <!-- Short description -->
12028                                                                <div class="short-description">
12029                            Hegels geschichtsphilosophische Vorlesungen sind fast nur durch die Mit- und Nachschriften seiner Sch&uuml;ler und H&ouml;rer zug&auml;nglich &ndash; ein Faktum, das fr&uuml;here Ausgaben, die aus verschiedenen ...                            <a href="https://meiner.de/fmv_de/vorlesung-a-ber-die-philosophie-der-weltgeschichte-21359" class="underline">mehr</a>
12030                        </div>
12031                                    </div>
12032
12033                <!-- Series  -->
12034                                    <div class="mb-1">
12035                        <span class="sr-only">Reihe:</span>
12036                        <a href="https://meiner.de/fmv_de/programm/reihen/philosophische-bibliothek">
12037                            <span>Philosophische Bibliothek</span>
12038                        </a>
12039                                                    797                                            </div>
12040                
12041                
12042                                                    <div class="mb-1">
12043                        <span x-data="initEditionText_46706()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
12044                            <!-- Marketing short text -->
12045                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, LXII, 366 Seiten.                        </span>
12046                    </div>
12047                
12048                            </div>
12049            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
12050                
12051                <div class="justify-end" x-data="initPriceBox()" @update-prices-46706.window="updatePrice($event.detail);">
12052                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="46706" data-price-box="product-id-46706"><span class="normal-price">
12053    <span x-data x-id="['product\u002Dprice\u002D46706']" class="price-container price-final_price tax weee">
12054            <span class="price-label">Ab</span>
12055                <span class="approx-price">ca. </span>
12056        <span :id="$id('product\u002Dprice\u002D46706')" data-price-amount="19.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">19,99&nbsp;&euro;</span></span>
12057        </span>
12058</span>
12059
12060
12061</div>                </div>
12062
12063                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
12064                                            <div class="open-access-container open-access-container-46706                    flex mt-4 ml-auto sm:mt-0 hidden">
12065                            <div class="text-gray-700">
12066                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
12067                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
12068                                        Kostenlos online lesen                                    </a>
12069                                </button>
12070                            </div>
12071                        </div>
12072                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Vorlesung &uuml;ber die Philosophie der Weltgeschichte" aria-label="In den Warenkorb Vorlesung &uuml;ber die Philosophie der Weltgeschichte" data-addto="cart">
12073                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
12074  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
12075</svg>
12076                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
12077                                        In den Warenkorb                                    </span>
12078                                </button>
12079                                                                                                                    
12080<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(46706)" aria-label="Zur Wunschliste hinzuf&uuml;gen Vorlesung &uuml;ber die Philosophie der Weltgeschichte" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
12081    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
12082  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
12083</svg>
12084</button>
12085                                    </div>
12086            </div>
12087        </div>
12088        
12088<script>
12089            function initMarketingShortText_46706() {
12090                var marketingShortTextConfig = {};
12091                if (typeof window.initConfigurableSwatchOptions_46706 === "function") {
12092                    var fullConfig = window.initConfigurableSwatchOptions_46706().optionConfig
12093                    var marketingShortTextConfig = fullConfig.marketing_short_text;
12094                }
12095                return {
12096                    marketingShortText: '',
12097                    config: marketingShortTextConfig,
12098                    productId: '46706',
12099                    getMarketingShortText(detail) {
12100                        this.marketingShortText = detail.productIndex ?
12101                            this.config[detail.productIndex] :
12102                            null;
12103                    },
12104                    eventListeners: {
12105                        ['@listing-configurable-selection-changed.window'](event) {
12106                            if (this.productId == event.detail.productId) {
12107                                this.getMarketingShortText(event.detail);
12108                            }
12109
12110                        }
12111                    }
12112                }
12113            }
12114
12115            function initEditionText_46706() {
12116                var editionTextConfig = {};
12117                if (typeof window.initConfigurableSwatchOptions_46706 === "function") {
12118                    var fullConfig = window.initConfigurableSwatchOptions_46706().optionConfig
12119                    var editionTextConfig = fullConfig.edition;
12120                }
12121                return {
12122                    editionText: '',
12123                    config: editionTextConfig,
12124                    productId: '46706',
12125                    getEditionText(detail) {
12126                        this.editionText = detail.productIndex ?
12127                            this.config[detail.productIndex] :
12128                            null;
12129                    },
12130                    eventListeners: {
12131                        ['@listing-configurable-selection-changed.window'](event) {
12132                            if (this.productId == event.detail.productId) {
12133                                this.getEditionText(event.detail);
12134                            }
12135
12136                        }
12137                    }
12138                }
12139            }
12140        </script>
12140
12141                    </form>
12142                            
12143    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/46705/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21230">
12144        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="46705">
12145                                    <a href="https://meiner.de/fmv_de/weltuntergang-21230" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
12146            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-46705.window="$el.src = $event.detail" alt="Weltuntergang" title="Weltuntergang" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787350759_1.jpg" :style="{
12147                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
12148                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
12149            }">
12150                    </a>
12151        <div class="product-info flex flex-col flex-grow ">
12152                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
12153                                    <div class="mb-2 text-sm text-gray-500 font-medium">
12154                                                                                    <a href="https://meiner.de/fmv_de/person/Florian-Baab-3674/" class="mb-2">
12155                                    Florian Baab                                                                    </a>
12156                                                                                                                                    </div>
12157                                <a class="product-item-link" href="https://meiner.de/fmv_de/weltuntergang-21230">
12158                    Weltuntergang                </a>
12159                            </div>
12160
12161            <div x-data="initEditionText_46705()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
12162                <!-- Marketing short text -->
12163                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
12164                </div>
12165            </div>
12166
12167                            <div class="py-1 grid  mb-4 ">
12168                    
12169                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":46705,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":46705,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46499":"1","46741":"1","46738":"1"},"childProductsAlertStatus":{"46499":"0","46741":"0","46738":"0"},"indexMapping":{"163:15":46499,"163:9":46741,"163:8":46738},"availabilityMessages":{"46499":"Lieferbar innerhalb von 3-5 Tagen","46741":"Download sofort  verf\u00fcgbar","46738":"Download sofort  verf\u00fcgbar"},"openAccess":{"46705":{"status":0},"46499":{"status":0},"46741":{"status":0},"46738":{"status":0}}},"availabilityMessages":{"46499":"Lieferbar innerhalb von 3-5 Tagen","46741":"Download sofort  verf\u00fcgbar","46738":"Download sofort  verf\u00fcgbar"},"openAccess":{"46705":{"status":0},"46499":{"status":0},"46741":{"status":0},"46738":{"status":0}}}'>
12170        <template x-if="containerVisible">
12171                            <!-- Popup Trigger -->
12172                <div>
12173                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
12174                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
12175                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
12176  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
12177<title>bell</title></svg>
12178</span>
12179                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
12180
12181                    <!-- Popup Modal -->
12182                    <template x-if="showModal">
12183                        <template x-teleport=".page-wrapper">
12184                            <div x-cloak class="fixed inset-0 flex items-center justify-center
12185                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
12186                                <div class="relative bg-white rounded-lg shadow-xl
12187                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
12188                                    <div class="p-6">
12189                                        <!-- Subscription Form for Popup -->
12190                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
12191                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
12192                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
12193                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
12194
12195                                            <div class="flex flex-col gap-3">
12196                                                <div class="flex-grow grow">
12197                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
12198                                                        shadow-xs focus:outline-none focus:outline-hidden
12199                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
12200                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
12201                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
12202                                                </div>
12203                                                <input type="hidden" name="product_id" :value="currentProductId">
12204                                                <input type="hidden" name="type" value="email">
12205
12206                                                
12207                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
12208
12209                                                <div class="amxnotif_guest_action">
12210                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
12211                                                        rounded-md focus:outline-none
12212                                                        focus:outline-hidden focus:ring-2
12213                                                        focus:ring-offset-2 disabled:opacity-50
12214                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
12215                                                        Benachrichtigen                                                    </button>
12216                                                </div>
12217                                            </div>
12218
12219                                                                                            <div class="flex items-start pt-2">
12220                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
12221                                                        text-blue-600 border-gray-300 rounded-sm">
12222                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
12223                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
12224                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
12225                                                </div>
12226                                                                                    </form>
12227                                    </div>
12228
12229                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
12230                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
12231                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
12232  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
12233<title>x</title></svg>
12234                                    </button>
12235                                </div>
12236                            </div>
12237                        </template>
12238                    </template>
12239                </div>
12240                    </template>
12241    </div>
12242
12243<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_46705" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":46705,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46499":"1","46741":"1","46738":"1"},"childProductsAlertStatus":{"46499":"0","46741":"0","46738":"0"},"indexMapping":"{\u0022163:15\u0022:46499,\u0022163:9\u0022:46741,\u0022163:8\u0022:46738}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":46705,"availabilityMessages":{"46499":"Lieferbar innerhalb von 3-5 Tagen","46741":"Download sofort  verf\u00fcgbar","46738":"Download sofort  verf\u00fcgbar"},"openAccess":{"46705":{"status":0},"46499":{"status":0},"46741":{"status":0},"46738":{"status":0}}}'>
12244    
12245    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
12246        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
12247        <span x-html="optionsLabelText"></span>
12248    </p>
12249</div>                </div>
12250            
12251                                
12251<script>
12252        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
12253            try {
12254                const attributes = (config && config.attributes) ? config.attributes : null;
12255                if (!attributes) return [];
12256                let attr = null;
12257                if (Array.isArray(attributes)) {
12258                    for (let i = 0; i < attributes.length; i++) {
12259                        const a = attributes[i];
12260                        if (a && a.id == attrId) {
12261                            attr = a;
12262                            break;
12263                        }
12264                    }
12265                } else {
12266                    attr = attributes[attrId];
12267                }
12268                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
12269            } catch (e) {
12270                return [];
12271            }
12272        };
12273
12274        function initConfigurableSwatchOptions_46705() {
12275            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46499"]},{"id":"8","label":"PDF","products":["46738"]},{"id":"9","label":"EPUB","products":["46741"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46499":{"baseOldPrice":{"amount":18.598129841121},"oldPrice":{"amount":19.9},"basePrice":{"amount":18.598129841121},"finalPrice":{"amount":19.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46741":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":14.009344794393},"finalPrice":{"amount":14.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46738":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":14.009344794393},"finalPrice":{"amount":14.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":12.596637655462},"finalPrice":{"amount":14.99},"isApproxPrice":null},"productId":"46705","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46499":{"163":"15"},"46741":{"163":"9"},"46738":{"163":"8"}},"salable":{"163":{"15":["46499"],"9":["46741"],"8":["46738"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"46499":"005073","46741":"005075","46738":"005074"},"output":{"46499":"Kartoniert","46738":"PDF","46741":"EPUB"},"original_name":{"46499":"","46738":"","46741":""},"openaccess_license_link":{"46499":"","46738":"","46741":""},"openaccess_license_name":{"46499":"","46738":"","46741":""},"openaccess_external_link":{"46499":"","46738":"","46741":""},"gpsr_safety_info":{"46499":"","46738":"","46741":""},"description":{"46499":"Weltuntergang: Ein Wort, das es nur im Deutschen gibt, anderswo spricht man von der Apokalypse und vom Ende der Welt. Sp\u00e4testens seit dem Abwurf der nuklearen Bombe Mitte des 20. Jahrhunderts ist das Konzept reale M\u00f6glichkeit, und Menschen unterschiedlicher Zeiten sind unterschiedlich mit ihm umgegangen. So entstand eine charakteristisch moderne Form des Weltverh\u00e4ltnisses: Wenn die Zukunft bedroht ist, wird die Gegenwart zum Ort der Entscheidung. Raum f\u00fcr Hoffnung bleibt dennoch, selbst nach dem Untergang des Abendlandes (Spengler) und nach dem Ende der Geschichte (Fukuyama): Solange es die Welt gibt, erm\u00f6glicht jedes Ende einen neuen Anfang. ","46738":"Weltuntergang: Ein Wort, das es nur im Deutschen gibt, anderswo spricht man von der Apokalypse und vom Ende der Welt. Sp\u00e4testens seit dem Abwurf der nuklearen Bombe Mitte des 20. Jahrhunderts ist das Konzept reale M\u00f6glichkeit, und Menschen unterschiedlicher Zeiten sind unterschiedlich mit ihm umgegangen. So entstand eine charakteristisch moderne Form des Weltverh\u00e4ltnisses: Wenn die Zukunft bedroht ist, wird die Gegenwart zum Ort der Entscheidung. Raum f\u00fcr Hoffnung bleibt dennoch, selbst nach dem Untergang des Abendlandes (Spengler) und nach dem Ende der Geschichte (Fukuyama): Solange es die Welt gibt, erm\u00f6glicht jedes Ende einen neuen Anfang. ","46741":"Weltuntergang: Ein Wort, das es nur im Deutschen gibt, anderswo spricht man von der Apokalypse und vom Ende der Welt. Sp\u00e4testens seit dem Abwurf der nuklearen Bombe Mitte des 20. Jahrhun
12275derts ist das Konzept reale M\u00f6glichkeit, und Menschen unterschiedlicher Zeiten sind unterschiedlich mit ihm umgegangen. So entstand eine charakteristisch moderne Form des Weltverh\u00e4ltnisses: Wenn die Zukunft bedroht ist, wird die Gegenwart zum Ort der Entscheidung. Raum f\u00fcr Hoffnung bleibt dennoch, selbst nach dem Untergang des Abendlandes (Spengler) und nach dem Ende der Geschichte (Fukuyama): Solange es die Welt gibt, erm\u00f6glicht jedes Ende einen neuen Anfang. "},"doi":{"46499":"","46738":"10.28937\/978-3-7873-5074-2","46741":""},"isbn":{"46499":"978-3-7873-5073-5","46738":"978-3-7873-5074-2","46741":"978-3-7873-5075-9"},"marketing_short_text":{"46499":"","46738":"","46741":""},"recension_text":{"46499":"","46738":"","46741":""},"language":{"46499":"","46738":"","46741":""},"cover":{"46499":"Kartoniert","46738":"","46741":""},"pages":{"46499":"138 Seiten","46738":"138","46741":"138"},"edition":{"46499":"","46738":"Unver\u00e4ndertes eBook der 1. Auflage von 2026","46741":"Unver\u00e4ndertes EPUB der 1. Auflage von 2026"},"pod":{"46499":"Nein","46738":"Nein","46741":"Nein"},"copyright_year":{"46499":"","46738":"","46741":""},"vlb_tix_link":{"46499":"https:\/\/neu.vlbtix.de\/products\/9783787350735?type=gtin","46738":"","46741":""},"defaultValues":{"163":"15"}};
12276            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
12277
12278            if (typeof window.amxnotif_wrap_attributes === 'function') {
12279                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
12280                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
12281            }
12282
12283            const configurableOptionsComponent = initConfigurableOptions(
12284                '46705',
12285                config
12286            );
12287            const swatchOptionsComponent = initSwatchOptions(
12288                swatchConfig
12289            );
12290
12291            // DWS - Configurable product preselect start
12292            const confProdPreSelect = () => {
12293                return {
12294                    preselectQuerystringItems() {
12295                        var data = {"id":"46499","output":"15"};
12296                        const urlQueryParams = new URLSearchParams(window.location.search);
12297
12298                                                this.$nextTick(() => {
12299                            setTimeout(() => {
12300                                const rootEl = this.$root || this.$el;
12301                                if (!rootEl) return;
12302
12303                                const applySelection = (attrCode, attrValue) => {
12304                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
12305
12306                                    const attributes = Object.values(this.optionConfig.attributes || {});
12307                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
12308
12309                                    if (targetAttr) {
12310                                        const attrId = String(targetAttr.id);
12311                                        const optionVal = String(attrValue);
12312
12313                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
12314
12315                                        if (inputEl) {
12316                                                                                        inputEl.click();
12317                                            inputEl.dispatchEvent(new Event('change', {
12318                                                bubbles: true
12319                                            }));
12320                                        } else {
12321                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
12322                                            if (selectEl) {
12323                                                selectEl.value = optionVal;
12324                                                selectEl.dispatchEvent(new Event('change', {
12325                                                    bubbles: true
12326                                                }));
12327                                            }
12328                                        }
12329
12330                                                                                this.changeOption(attrId, optionVal, false);
12331                                    }
12332                                };
12333
12334                                                                if (data && typeof data === 'object') {
12335                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
12336                                }
12337
12338                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
12339                                    if (attribute && attribute.code) {
12340                                        let optionValue = urlQueryParams.get(attribute.code);
12341                                        if (optionValue) {
12342                                            let optionId = false;
12343                                            const attributes = Object.values(this.optionConfig.attributes || {});
12344                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
12345
12346                                            let found = false;
12347                                            Object.values(targetAttr.options).map(option => {
12348                                                if (found === false && option.label === optionValue) {
12349                                                    optionId = option.id;
12350                                                    found = true;
12351                                                }
12352                                            });
12353
12354                                            const attrId = String(targetAttr.id);
12355                                            let optionVal = String(optionValue);
12356                                            if (found) {
12357                                                optionVal = String(optionId);
12358                                            }
12359
12360                                            applySelection(attribute.code, optionVal);
12361                                        }
12362                                    }
12363                                });
12364                            }, 100);
12365                        });
12366                    }
12367                }
12368            };
12369            // DWS - Configurable product preselect end
12370
12371            const result = Object.assign(
12372                configurableOptionsComponent,
12373                swatchOptionsComponent, {
12374                    productId: '46705',
12375                    productIndex: 0,
12376                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
12377                    showSwatches: false,
12378                    precalcOptions: {},
12379                    originalInit: configurableOptionsComponent.init,
12380                    init() {
12381                        try {
12382                            this.precalcOptions = {};
12383                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
12384                            this.preselectQuerystringItems();
12385                            if (Array.isArray(attrSource)) {
12386                                attrSource.forEach(attr => {
12387                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
12388                                });
12389                            } else if (attrSource && typeof attrSource === 'object') {
12390                                Object.keys(attrSource).forEach(id => {
12391                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
12392                                });
12393                            }
12394                        } catch (e) {
12395                            console.error('Pre-calc error:', e);
12396                        }
12397
12398                        if (typeof this.originalInit === 'function') {
12399                            this.originalInit();
12400                        }
12401
12402                        try {
12403                            this.initShowSwatchesIntersect();
12404                        } catch (e) {
12405                            console.error('intersect error:', e);
12406                        }
12407                    },
12408
12409                    updateGallery() {
12410                        if (!this.productIndex) return;
12411
12412                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
12413                                method: 'GET',
12414                                headers: {
12415                                    'Content-Type': 'application/json',
12416                                    'X-Requested-With': 'XMLHttpRequest'
12417                                }
12418                            })
12419                            .then(response => response.json())
12420                            .then(data => {
12421                                if (data && data.medium) {
12422                                    window.dispatchEvent(new CustomEvent("update-gallery-46705", {
12423                                        detail: data.medium
12424                                    }));
12425                                }
12426                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
12427                    },
12428
12429
12430                    initShowSwatchesIntersect() {
12431                        const observer = new IntersectionObserver(entries => {
12432                            if (entries[0].isIntersecting) {
12433                                this.showSwatches = true;
12434                                observer.disconnect();
12435                            }
12436                        }, {
12437                            rootMargin: '512px'
12438                        });
12439                        observer.observe(this.$el);
12440                    },
12441                    getOptions(attrId) {
12442                        return this.precalcOptions[attrId] || [];
12443                    },
12444                    getOptionsByAttrId() {
12445                        return this.getOptions(this.$el.dataset.attributeId);
12446                    },
12447                    _getItemId() {
12448                        if (this.item && this.item.id) return this.item.id;
12449                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
12450                    },
12451                    getSwatchOptionHtmlId() {
12452                        const itemId = this._getItemId();
12453                        return itemId ? this.$id(`attribute-option-46705-${itemId}`) : '';
12454                    },
12455                    getSwatchOptionHtmlIdGroup() {
12456                        const itemId = this._getItemId();
12457                        return itemId ? [`attribute-option-46705-${itemId}`] : [];
12458                    },
12459                    getAttributeSwatchData(attributeId) {
12460                        const data = Object.assign({}, this.swatchConfig[attributeId]);
12461                        if (data['additional_data']) {
12462                            try {
12463                                data['details'] = JSON.parse(data['additional_data']);
12464                            } catch (e) {
12465                                data['details'] = {};
12466                            }
12467                        }
12468                        return data;
12469                    },
12470                    getSwatchType(attributeId, optionId) {
12471                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
12472                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
12473                        }
12474                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
12475                            this.swatchConfig[attributeId].details.swatch_input_type :
12476                            "empty";
12477                        if (type === 'visual') {
12478                            const config = this.swatchConfig[attributeId];
12479                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
12480                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
12481                            }
12482                            // Fallback to first option type
12483                            for (const oId in config) {
12484                                if (config[oId] && typeof config[oId].type !== 'undefined') {
12485                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
12486                                }
12487                            }
12488                        }
12489                        return type;
12490                    },
12491                    mapSwatchTypeNumberToTypeCode(type) {
12492                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
12493                    },
12494                    isTextSwatch() {
12495                        const itemId = this._getItemId();
12496                        if (!this.$el || !itemId) return false;
12497                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
12498                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
12499                    },
12500
12501                    getSwatchText() {
12502                        const itemId = this._getItemId();
12503                        if (this.item) return this.item.label || '';
12504                        if (!this.$el || !itemId) return '';
12505                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
12506                        const options = attrId ? this.getOptions(attrId) : [];
12507                        const opt = options.find(o => o.id == itemId);
12508                        return opt ? opt.label : '';
12509                    },
12510                    getSwatchBackgroundStyle() {
12511                        const itemId = this._getItemId();
12512                        if (!this.$el || !itemId) return '';
12513                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
12514                        if (!attrId) return '';
12515                        const type = this.getSwatchType(attrId, itemId);
12516                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
12517                            this.swatchConfig[attrId][itemId] :
12518                            null;
12519                        if (!swatchData) return '';
12520                        if (type === "color") return 'background-color:' + swatchData.value;
12521                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
12522                        return '';
12523                    },
12524                    swatchOptionClasses() {
12525                        const itemId = this._getItemId();
12526                        if (!this.$el || !itemId) return {};
12527                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
12528                        return {
12529                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
12530                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
12531                            'w-6 h-6': !this.isTextSwatch()
12532                        }
12533                    },
12534
12535                    onFocusSwatchItem() {
12536                        const itemId = this._getItemId();
12537                        if (itemId) this.focusedLabel = itemId;
12538                    },
12539                    onChangeOption() {
12540                        const itemId = this._getItemId();
12541                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
12542                        if (attrId && itemId) this.changeOption(attrId, itemId);
12543                    },
12544                    changeOption(attributeId, value) {
12545                        if (value === '') {
12546                            return;
12547                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
12548                        } else {
12549                            this.selectedValues[attributeId] = value;
12550                        }
12551
12552                        this.findSimpleIndex();
12553                        this.findAllowedAttributeOptions();
12554                        this.updatePrices();
12555                        this.updateGallery();
12556
12557                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
12558                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
12559
12560                        const eventDetail = {
12561                            productId: this.productId,
12562                            optionId: attributeId,
12563                            value: value,
12564                            productIndex: this.productIndex || 0,
12565                            selectedValues: this.selectedValues,
12566                            candidates: candidates,
12567                            sourceElement: this.$el
12568                        };
12569
12570                        // Dispatch for Amasty
12571                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
12572                            detail: eventDetail
12573                        }));
12574
12575                        // Dispatch for Hyva listing
12576                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
12577                            detail: eventDetail
12578                        }));
12579                    },
12580
12581
12582                    clearOptionIfActive() {
12583                        const itemId = this._getItemId();
12584                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
12585                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
12586                            this.changeOption(attrId, '');
12587
12588                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
12589                            if (!input && this.$el?.querySelector) {
12590                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
12591                            }
12592                            if (!input && this.$el?.closest) {
12593                                const root = this.$el.closest('[data-product-id]') || this.$el;
12594                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
12595                            }
12596                            if (input) {
12597                                input.checked = false;
12598                            }
12599                        }
12600                    },
12601                    get optionIsEnabled() {
12602                        const itemId = this._getItemId();
12603                        if (!this.$el || !itemId) return true;
12604                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
12605                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
12606                        return !!allowedOptions.find(opt => opt.id == itemId);
12607                    },
12608                    get isSelected() {
12609                        const itemId = this._getItemId();
12610                        if (!this.$el || !itemId) return false;
12611                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
12612                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
12613                    },
12614                    get isSwatchRequired() {
12615                        if (!this.$el) return false;
12616                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
12617                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
12618                    },
12619                    focusedLabel: false,
12620                    activeTooltipItem: false,
12621                    tooltipPositionElement: false,
12622                    setActiveTooltipItem() {
12623                        const itemId = this._getItemId();
12624                        if (!this.$el || !itemId) return;
12625                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
12626                        this.activeTooltipItem = {
12627                            attribute: attrId,
12628                            item: itemId,
12629                            index: 0
12630                        };
12631                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
12632                    },
12633                    unsetActiveTooltipItem() {
12634                        this.activeTooltipItem = false;
12635                    }
12636                },
12637                confProdPreSelect()
12638            );
12639
12640            if (result.optionConfig && result.optionConfig.attributes) {
12641                const attributes = result.optionConfig.attributes;
12642                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
12643                    let source = attributes;
12644                    if (Array.isArray(attributes)) {
12645                        source = {};
12646                        attributes.forEach(attr => {
12647                            if (attr && attr.id) source[attr.id] = attr;
12648                        });
12649                    }
12650                    const values = Object.values(source);
12651                    const wrapper = Object.assign(values, source);
12652                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
12653                        value: true,
12654                        enumerable: false
12655                    });
12656                    result.optionConfig.attributes = wrapper;
12657                }
12658            }
12659
12660            return result;
12661        }
12662
12663        window.addEventListener('alpine:init', () => {
12664            Alpine.data('initConfigurableSwatchOptions_46705', initConfigurableSwatchOptions_46705);
12665        }, {
12666            once: true
12667        });
12668    </script>
12668
12669    
12670    <div x-data="initConfigurableSwatchOptions_46705" x-defer="intersect">
12671        <div class="pagebuilder-home-hidden">
12672                                            
12673                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
12674                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
12675                        <template x-if="showSwatches">
12676                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-46705-163" role="radiogroup" aria-label="Einband">
12677                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
12678                                    <div :data-option-id="item.id" style="display: contents">
12679                                        <div x-id="getSwatchOptionHtmlIdGroup">
12680    <template x-if="optionIsEnabled">
12681        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
12681self="unsetActiveTooltipItem">
12682            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-46705-163">
12683            <div>
12684                <template x-if="isTextSwatch">
12685                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
12686                </template>
12687                <template x-if="!optionIsActive(163, item.id)">
12688                    <div>
12689                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
12690                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
12691                        </svg>
12692                    </div>
12693                </template>
12694            </div>
12695        </label>
12696    </template>
12697</div>                                    </div>
12698                                </template>
12699                            </div>
12700                        </template>
12701                    </div>
12702                </div>
12703                    </div>
12704    </div>
12705            
12706                                                <div class="meta py-4 pagebuilder-home-hidden">
12707                <div x-data="initMarketingShortText_46705()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
12708                    <!-- Marketing short text -->
12709                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
12710                    </div>
12711
12712                    <!-- Short description -->
12713                                                                <div class="short-description">
12714                            Weltuntergang: Ein Wort, das es nur im Deutschen gibt, anderswo spricht man von der Apokalypse und vom Ende der Welt. Sp&auml;testens seit dem Abwurf der nuklearen Bombe Mitte des 20. Jahrhunderts ...
12715                            <a href="https://meiner.de/fmv_de/weltuntergang-21230" class="underline">mehr</a>
12716                        </div>
12717                                    </div>
12718
12719                <!-- Series  -->
12720                                    <div class="mb-1">
12721                        <span class="sr-only">Reihe:</span>
12722                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
12723                            <span>Blaue Reihe</span>
12724                        </a>
12725                                            </div>
12726                
12727                
12728                                                    <div class="mb-1">
12729                        <span x-data="initEditionText_46705()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
12730                            <!-- Marketing short text -->
12731                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 138 Seiten                        </span>
12732                    </div>
12733                
12734                            </div>
12735            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
12736                
12737                <div class="justify-end" x-data="initPriceBox()" @update-prices-46705.window="updatePrice($event.detail);">
12738                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="46705" data-price-box="product-id-46705"><span class="normal-price">
12739    <span x-data x-id="['product\u002Dprice\u002D46705']" class="price-container price-final_price tax weee">
12740            <span class="price-label">Ab</span>
12741                <span class="approx-price">ca. </span>
12742        <span :id="$id('product\u002Dprice\u002D46705')" data-price-amount="14.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">14,99&nbsp;&euro;</span></span>
12743        </span>
12744</span>
12745
12746
12747</div>                </div>
12748
12749                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
12750                                            <div class="open-access-container open-access-container-46705                    flex mt-4 ml-auto sm:mt-0 hidden">
12751                            <div class="text-gray-700">
12752                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
12753                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
12754                                        Kostenlos online lesen                                    </a>
12755                                </button>
12756                            </div>
12757                        </div>
12758                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Weltuntergang" aria-label="In den Warenkorb Weltuntergang" data-addto="cart">
12759                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
12760  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
127600 014 0z"></path>
12761</svg>
12762                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
12763                                        In den Warenkorb                                    </span>
12764                                </button>
12765                                                                                                                    
12766<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(46705)" aria-label="Zur Wunschliste hinzuf&uuml;gen Weltuntergang" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
12767    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
12768  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
12769</svg>
12770</button>
12771                                    </div>
12772            </div>
12773        </div>
12774        
12774<script>
12775            function initMarketingShortText_46705() {
12776                var marketingShortTextConfig = {};
12777                if (typeof window.initConfigurableSwatchOptions_46705 === "function") {
12778                    var fullConfig = window.initConfigurableSwatchOptions_46705().optionConfig
12779                    var marketingShortTextConfig = fullConfig.marketing_short_text;
12780                }
12781                return {
12782                    marketingShortText: '',
12783                    config: marketingShortTextConfig,
12784                    productId: '46705',
12785                    getMarketingShortText(detail) {
12786                        this.marketingShortText = detail.productIndex ?
12787                            this.config[detail.productIndex] :
12788                            null;
12789                    },
12790                    eventListeners: {
12791                        ['@listing-configurable-selection-changed.window'](event) {
12792                            if (this.productId == event.detail.productId) {
12793                                this.getMarketingShortText(event.detail);
12794                            }
12795
12796                        }
12797                    }
12798                }
12799            }
12800
12801            function initEditionText_46705() {
12802                var editionTextConfig = {};
12803                if (typeof window.initConfigurableSwatchOptions_46705 === "function") {
12804                    var fullConfig = window.initConfigurableSwatchOptions_46705().optionConfig
12805                    var editionTextConfig = fullConfig.edition;
12806                }
12807                return {
12808                    editionText: '',
12809                    config: editionTextConfig,
12810                    productId: '46705',
12811                    getEditionText(detail) {
12812                        this.editionText = detail.productIndex ?
12813                            this.config[detail.productIndex] :
12814                            null;
12815                    },
12816                    eventListeners: {
12817                        ['@listing-configurable-selection-changed.window'](event) {
12818                            if (this.productId == event.detail.productId) {
12819                                this.getEditionText(event.detail);
12820                            }
12821
12822                        }
12823                    }
12824                }
12825            }
12826        </script>
12826
12827                    </form>
12828                            
12829    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/4150/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk13216">
12830        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="4150">
12831                                    <a href="https://meiner.de/fmv_de/a-ber-das-recht-des-volks-zu-einer-revolution-13216" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
12832            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-4150.window="$el.src = $event.detail" alt="&Uuml;ber das Recht des Volks zu einer Revolution" title="&Uuml;ber das Recht des Volks zu einer Revolution" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787344505_4.jpg" :style="{
12833                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
12834                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
12835            }">
12836                    </a>
12837        <div class="product-info flex flex-col flex-grow ">
12838                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
12839                                    <div class="mb-2 text-sm text-gray-500 font-medium">
12840                                                                                    <a href="https://meiner.de/fmv_de/person/Johann-Benjamin-Erhard-13217/" class="mb-2">
12841                                    Johann Benjamin Erhard                                                                    </a>
12842                                                                                                                                    </div>
12843                                <a class="product-item-link" href="https://meiner.de/fmv_de/a-ber-das-recht-des-volks-zu-einer-revolution-13216">
12844                    &Uuml;ber das Recht des Volks zu einer Revolution                </a>
12845                            </div>
12846
12847            <div x-data="initEditionText_4150()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
12848                <!-- Marketing short text -->
12849                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
12850                </div>
12851            </div>
12852
12853                            <div class="py-1 grid  mb-4 ">
12854                    
12855                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":4150,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":4150,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"9909":"1","15378":"1"},"childProductsAlertStatus":{"9909":"0","15378":"0"},"indexMapping":{"163:15":9909,"163:8":15378},"availabilityMessages":{"9909":"Lieferbar innerhalb von 3-5 Tagen","15378":"Download sofort  verf\u00fcgbar"},"openAccess":{"4150":{"status":0},"9909":{"status":0},"15378":{"status":0}}},"availabilityMessages":{"9909":"Lieferbar innerhalb von 3-5 Tagen","15378":"Download sofort  verf\u00fcgbar"},"openAccess":{"4150":{"status":0},"9909":{"status":0},"15378":{"status":0}}}'>
12856        <template x-if="containerVisible">
12857                            <!-- Popup Trigger -->
12858                <div>
12859                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
12860                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
12861                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
12862  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
12863<title>bell</title></svg>
12864</span>
12865                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
12866
12867                    <!-- Popup Modal -->
12868                    <template x-if="showModal">
12869                        <template x-teleport=".page-wrapper">
12870                            <div x-cloak class="fixed inset-0 flex items-center justify-center
12871                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
12872                                <div class="relative bg-white rounded-lg shadow-xl
12873                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
12874                                    <div class="p-6">
12875                                        <!-- Subscription Form for Popup -->
12876                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
12877                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
12878                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
12879                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
12880
12881                                            <div class="flex flex-col gap-3">
12882                                                <div class="flex-grow grow">
12883                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
12884                                                        shadow-xs focus:outline-none focus:outline-hidden
12885                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
12886                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
12887                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
12888                                                </div>
12889                                                <input type="hidden" name="product_id" :value="currentProductId">
12890                                                <input type="hidden" name="type" value="email">
12891
12892                                                
12893                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
12894
12895                                                <div class="amxnotif_guest_action">
12896                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
12897                                                        rounded-md focus:outline-none
12898                                                        focus:outline-hidden focus:ring-2
12899                                                        focus:ring-offset-2 disabled:opacity-50
12900                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
12901                                                        Benachrichtigen                                                    </button>
12902                                                </div>
12903                                            </div>
12904
12905                                                                                            <div class="flex items-start pt-2">
12906                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
12907                                                        text-blue-600 border-gray-300 rounded-sm">
12908                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
12909                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
12910                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
12911                                                </div>
12912                                                                                    </form>
12913                                    </div>
12914
12915                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
12916                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
12917                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
12918  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
12919<title>x</title></svg>
12920                                    </button>
12921                                </div>
12922                            </div>
12923                        </template>
12924                    </template>
12925                </div>
12926                    </template>
12927    </div>
12928
12929<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_4150" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":4150,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"9909":"1","15378":"1"},"childProductsAlertStatus":{"9909":"0","15378":"0"},"indexMapping":"{\u0022163:15\u0022:9909,\u0022163:8\u0022:15378}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":4150,"availabilityMessages":{"9909":"Lieferbar innerhalb von 3-5 Tagen","15378":"Download sofort  verf\u00fcgbar"},"openAccess":{"4150":{"status":0},"9909":{"status":0},"15378":{"status":0}}}'>
12930    
12931    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
12932        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
12933        <span x-html="optionsLabelText"></span>
12934    </p>
12935</div>                </div>
12936            
12937                                
12937<script>
12938        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
12939            try {
12940                const attributes = (config && config.attributes) ? config.attributes : null;
12941                if (!attributes) return [];
12942                let attr = null;
12943                if (Array.isArray(attributes)) {
12944                    for (let i = 0; i < attributes.length; i++) {
12945                        const a = attributes[i];
12946                        if (a && a.id == attrId) {
12947                            attr = a;
12948                            break;
12949                        }
12950                    }
12951                } else {
12952                    attr = attributes[attrId];
12953                }
12954                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
12955            } catch (e) {
12956                return [];
12957            }
12958        };
12959
12960        function initConfigurableSwatchOptions_4150() {
12961            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["9909"]},{"id":"8","label":"PDF","products":["15378"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"9909":{"baseOldPrice":{"amount":23.271027037383},"oldPrice":{"amount":24.9},"basePrice":{"amount":23.271027037383},"finalPrice":{"amount":24.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"15378":{"baseOldPrice":{"amount":17.747662551402},"oldPrice":{"amount":18.99},"basePrice":{"amount":17.747662551402},"finalPrice":{"amount":18.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":17.747662551402},"oldPrice":{"amount":18.99},"basePrice":{"amount":17.747662551402},"finalPrice":{"amount":18.99},"isApproxPrice":null},"productId":"4150","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"9909":{"163":"15"},"15378":{"163":"8"}},"salable":{"163":{"15":["9909"],"8":["15378"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"9909":"004277","15378":"004450"},"output":{"9909":"Kartoniert","15378":"PDF"},"original_name":{"9909":"","15378":""},"openaccess_license_link":{"9909":"","15378":""},"openaccess_license_name":{"9909":"","15378":""},"openaccess_external_link":{"9909":"","15378":""},"gpsr_safety_info":{"9909":"","15378":""},"description":{"9909":"\u00bbUeber das Recht des Volks zu einer Revolution\u00ab des N\u00fcrnberger Arztes und Kantianers Johann Benjamin Erhard ist ein Schl\u00fcsseltext der deutschen Revolutionstheorie um 1800 und ein Werk von besonderer ideengeschichtlicher Bedeutung. Als Klassiker im Feld der Menschenrechtstheorie ist das Buch unver\u00e4ndert diskussionsw\u00fcrdig.<br\/><br\/>Erhard z\u00e4hlt zu den Denkern der nachkantischen Philosophie, die ihre theoretischen \u00dcberlegungen nicht in einem systematischen Hauptwerk zusammengefasst haben. Seine wichtigsten Beitr\u00e4ge liegen in Briefen und Rezensionen vor. Seine politische Theorie hat er allerdings in der Revolutions-Schrift ausf\u00fchrlicher entwickelt. Nach der \u00dcbersetzung von \u00c9tienne de La Bo\u00e9ties Abhandlung \u00bbFreiwillige Knechtschaft\u00ab arbeitete Erhard 1793 zun\u00e4chst als Entgegnung auf La Bo\u00e9tie eine \u00bbPr\u00fcfung der Alleinherrschaft nach moralischen Prinzipien\u00ab f\u00fcr Wielands \u00bbNeuen Teutschen Merkur\u00ab aus. Sein Verleger Friedrich Carl Forberg urteilte dar\u00fcber: \u00bbIch kenne niemanden, der \u00fcber Gegenst\u00e4nde des Staatsrechts mit dem Tiefsinne, und dem mutigen Blicke philosophirt h\u00e4tte [\u2026].\u00ab <br\/>Die Revolutionsschrift setzt diese \u00dcberlegungen fort. Sie wurde nach ihrem Erscheinen 1795 in mehreren Staaten verboten und hat dennoch eine gr\u00f6\u00dfere Wirkung entfalten k\u00f6nnen: In Fichtes Rechtstheorie, Schillers Dramenwerk oder der politischen Philosophie der Fr\u00fchromantik finden sich Reaktionen auf Erhards Ausf\u00fchrungen.","15378":"\u00bbUeber das Recht des Volks zu einer Revolution\u00ab des N\u00fcrnberger Arztes und Kantianers Johann Benjamin Erhard ist ein Schl\u00fcsseltext der deutschen Revolutionstheorie um 1800 und ein Werk von besonderer ideengeschichtlicher Bedeutung. Als Klassiker im Feld der Menschenrechtstheorie ist das Buch unver\u00e4ndert diskussionsw\u00fcrdig.<br\/><br\/>Erhard z\u00e4hlt zu den Denkern der nachkantischen Philosophie, die ihre theoretischen \u00dcberlegungen nicht in einem systematischen Hauptwerk zusammengefasst haben. Seine wichtigsten Beitr\u00e4ge liegen in Briefen und Rezensionen vor. Seine politische Theorie hat er allerdings in der Revolutions-Schrift ausf\u00fchrlicher entwickelt. Nach der \u00dcbersetzung von \u00c9tienne de La Bo\u00e9ties Abhandlung \u00bbFreiwillige Knechtschaft\u00ab arbeitete Erhard 1793 zun\u00e4chst als Entgegnung auf La Bo\u00e9tie eine \u00bbPr\u00fcfung der Alleinherrschaft nach moralischen Prinzipien\u00ab f\u00fcr Wielands \u00bbNeuen Teutschen Merkur\u00ab aus. Sein Verleger Friedrich Carl Forberg urteilte dar\u00fcber: \u00bbIch kenne niemanden, der \u00fcber Gegenst\u00e4nde des Staatsrechts mit dem Tiefsinne, und dem mutigen Blicke philosophirt h\u00e4tte [\u2026].\u00ab <br\/>Die Revolutionsschrift setzt diese \u00dcberlegungen fort. Sie wurde nach ihrem Erscheinen 1795 in mehreren Staaten verboten und hat dennoch eine gr\u00f6\u00dfere Wirkung entfalten k\u00f6nnen: In Fichtes Rechtstheorie, Schillers Dramenwerk oder der politischen Philosophie der Fr\u00fchromantik finden sich Reaktionen auf Erhards Ausf\u00fchrungen."},"doi":{"9909":"","15378":"10.28937\/978-3-7873-4450-5"},"isbn":{"9909":"978-3-7873-4277-8","15378":"978-3-7873-4450-5"},"marketing_short_text":{"9909":"","15378":""},"recension_text":{"9909":"","15378":""},"language":{"9909":"","15378":""},"cover":{"9909":"Kartoniert","15378":""},"pages":{"9909":"XCVIII, 140 Seiten","15378":"172 Seiten"},"edition":{"9909":"","15378":"Unver\u00e4ndertes eBook der 1. Auflage von 2026"},"pod":{"9909":"Nein","15378":"Nein"},"copyright_year":{"9909":"","15378":""},"vlb_tix_link":{"9909":"https:\/\/neu.vlbtix.de\/products\/9783787342778?type=gtin","15378":""},"defaultValues":{"163":"15"}};
12962            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
12963
12964            if (typeof window.amxnotif_wrap_attributes === 'function') {
12965                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
12966                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
12967            }
12968
12969            const configurableOptionsComponent = initConfigurableOptions(
12970                '4150',
12971                config
12972            );
12973            const swatchOptionsComponent = initSwatchOptions(
12974                swatchConfig
12975            );
12976
12977            // DWS - Configurable product preselect start
12978            const confProdPreSelect = () => {
12979                return {
12980                    preselectQuerystringItems() {
12981                        var data = {"id":"9909","output":"15"};
12982                        const urlQueryParams = new URLSearchParams(window.location.search);
12983
12984                                                this.$nextTick(() => {
12985                            setTimeout(() => {
12986                                const rootEl = this.$root || this.$el;
12987                                if (!rootEl) return;
12988
12989                                const applySelection = (attrCode, attrValue) => {
12990                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
12991
12992                                    const attributes = Object.values(this.optionConfig.attributes || {});
12993                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
12994
12995                                    if (targetAttr) {
12996                                        const attrId = String(targetAttr.id);
12997                                        const optionVal = String(attrValue);
12998
12999                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
13000
13001                                        if (inputEl) {
13002                                                                                        inputEl.click();
13003                                            inputEl.dispatchEvent(new Event('change', {
13004                                                bubbles: true
13005                                            }));
13006                                        } else {
13007                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
13008                                            if (selectEl) {
13009                                                selectEl.value = optionVal;
13010                                                selectEl.dispatchEvent(new Event('change', {
13011                                                    bubbles: true
13012                                                }));
13013                                            }
13014                                        }
13015
13016                                                                                this.changeOption(attrId, optionVal, false);
13017                                    }
13018                                };
13019
13020                                                                if (data && typeof data === 'object') {
13021                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
13022                                }
13023
13024                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
13025                                    if (attribute && attribute.code) {
13026                                        let optionValue = urlQueryParams.get(attribute.code);
13027                                        if (optionValue) {
13028                                            let optionId = false;
13029                                            const attributes = Object.values(this.optionConfig.attributes || {});
13030                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
13031
13032                                            let found = false;
13033                                            Object.values(targetAttr.options).map(option => {
13034                                                if (found === false && option.label === optionValue) {
13035                                                    optionId = option.id;
13036                                                    found = true;
13037                                                }
13038                                            });
13039
13040                                            const attrId = String(targetAttr.id);
13041                                            let optionVal = String(optionValue);
13042                                            if (found) {
13043                                                optionVal = String(optionId);
13044                                            }
13045
13046                                            applySelection(attribute.code, optionVal);
13047                                        }
13048                                    }
13049                                });
13050                            }, 100);
13051                        });
13052                    }
13053                }
13054            };
13055            // DWS - Configurable product preselect end
13056
13057            const result = Object.assign(
13058                configurableOptionsComponent,
13059                swatchOptionsComponent, {
13060                    productId: '4150',
13061                    productIndex: 0,
13062                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
13063                    showSwatches: false,
13064                    precalcOptions: {},
13065                    originalInit: configurableOptionsComponent.init,
13066                    init() {
13067                        try {
13068                            this.precalcOptions = {};
13069                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
13070                            this.preselectQuerystringItems();
13071                            if (Array.isArray(attrSource)) {
13072                                attrSource.forEach(attr => {
13073                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
13074                                });
13075                            } else if (attrSource && typeof attrSource === 'object') {
13076                                Object.keys(attrSource).forEach(id => {
13077                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
13078                                });
13079                            }
13080                        } catch (e) {
13081                            console.error('Pre-calc error:', e);
13082                        }
13083
13084                        if (typeof this.originalInit === 'function') {
13085                            this.originalInit();
13086                        }
13087
13088                        try {
13089                            this.initShowSwatchesIntersect();
13090                        } catch (e) {
13091                            console.error('intersect error:', e);
13092                        }
13093                    },
13094
13095                    updateGallery() {
13096                        if (!this.productIndex) return;
13097
13098                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
13099                                method: 'GET',
13100                                headers: {
13101                                    'Content-Type': 'application/json',
13102                                    'X-Requested-With': 'XMLHttpRequest'
13103                                }
13104                            })
13105                            .then(response => response.json())
13106                            .then(data => {
13107                                if (data && data.medium) {
13108                                    window.dispatchEvent(new CustomEvent("update-gallery-4150", {
13109                                        detail: data.medium
13110                                    }));
13111                                }
13112                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
13113                    },
13114
13115
13116                    initShowSwatchesIntersect() {
13117                        const observer = new IntersectionObserver(entries => {
13118                            if (entries[0].isIntersecting) {
13119                                this.showSwatches = true;
13120                                observer.disconnect();
13121                            }
13122                        }, {
13123                            rootMargin: '512px'
13124                        });
13125                        observer.observe(this.$el);
13126                    },
13127                    getOptions(attrId) {
13128                        return this.precalcOptions[attrId] || [];
13129                    },
13130                    getOptionsByAttrId() {
13131                        return this.getOptions(this.$el.dataset.attributeId);
13132                    },
13133                    _getItemId() {
13134                        if (this.item && this.item.id) return this.item.id;
13135                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
13136                    },
13137                    getSwatchOptionHtmlId() {
13138                        const itemId = this._getItemId();
13139                        return itemId ? this.$id(`attribute-option-4150-${itemId}`) : '';
13140                    },
13141                    getSwatchOptionHtmlIdGroup() {
13142                        const itemId = this._getItemId();
13143                        return itemId ? [`attribute-option-4150-${itemId}`] : [];
13144                    },
13145                    getAttributeSwatchData(attributeId) {
13146                        const data = Object.assign({}, this.swatchConfig[attributeId]);
13147                        if (data['additional_data']) {
13148                            try {
13149                                data['details'] = JSON.parse(data['additional_data']);
13150                            } catch (e) {
13151                                data['details'] = {};
13152                            }
13153                        }
13154                        return data;
13155                    },
13156                    getSwatchType(attributeId, optionId) {
13157                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
13158                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
13159                        }
13160                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
13161                            this.swatchConfig[attributeId].details.swatch_input_type :
13162                            "empty";
13163                        if (type === 'visual') {
13164                            const config = this.swatchConfig[attributeId];
13165                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
13166                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
13167                            }
13168                            // Fallback to first option type
13169                            for (const oId in config) {
13170                                if (config[oId] && typeof config[oId].type !== 'undefined') {
13171                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
13172                                }
13173                            }
13174                        }
13175                        return type;
13176                    },
13177                    mapSwatchTypeNumberToTypeCode(type) {
13178                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
13179                    },
13180                    isTextSwatch() {
13181                        const itemId = this._getItemId();
13182                        if (!this.$el || !itemId) return false;
13183                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
13184                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
13185                    },
13186
13187                    getSwatchText() {
13188                        const itemId = this._getItemId();
13189                        if (this.item) return this.item.label || '';
13190                        if (!this.$el || !itemId) return '';
13191                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
13192                        const options = attrId ? this.getOptions(attrId) : [];
13193                        const opt = options.find(o => o.id == itemId);
13194                        return opt ? opt.label : '';
13195                    },
13196                    getSwatchBackgroundStyle() {
13197                        const itemId = this._getItemId();
13198                        if (!this.$el || !itemId) return '';
13199                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
13200                        if (!attrId) return '';
13201                        const type = this.getSwatchType(attrId, itemId);
13202                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
13203                            this.swatchConfig[attrId][itemId] :
13204                            null;
13205                        if (!swatchData) return '';
13206                        if (type === "color") return 'background-color:' + swatchData.value;
13207                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
13208                        return '';
13209                    },
13210                    swatchOptionClasses() {
13211                        const itemId = this._getItemId();
13212                        if (!this.$el || !itemId) return {};
13213                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
13214                        return {
13215                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
13216                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
13217                            'w-6 h-6': !this.isTextSwatch()
13218                        }
13219                    },
13220
13221                    onFocusSwatchItem() {
13222                        const itemId = this._getItemId();
13223                        if (itemId) this.focusedLabel = itemId;
13224                    },
13225                    onChangeOption() {
13226                        const itemId = this._getItemId();
13227                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
13228                        if (attrId && itemId) this.changeOption(attrId, itemId);
13229                    },
13230                    changeOption(attributeId, value) {
13231                        if (value === '') {
13232                            return;
13233                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
13234                        } else {
13235                            this.selectedValues[attributeId] = value;
13236                        }
13237
13238                        this.findSimpleIndex();
13239                        this.findAllowedAttributeOptions();
13240                        this.updatePrices();
13241                        this.updateGallery();
13242
13243                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
13244                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
13245
13246                        const eventDetail = {
13247                            productId: this.productId,
13248                            optionId: attributeId,
13249                            value: value,
13250                            productIndex: this.productIndex || 0,
13251                            selectedValues: this.selectedValues,
13252                            candidates: candidates,
13253                            sourceElement: this.$el
13254                        };
13255
13256                        // Dispatch for Amasty
13257                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
13258                            detail: eventDetail
13259                        }));
13260
13261                        // Dispatch for Hyva listing
13262                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
13263                            detail: eventDetail
13264                        }));
13265                    },
13266
13267
13268                    clearOptionIfActive() {
13269                        const itemId = this._getItemId();
13270                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
13271                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
13272                            this.changeOption(attrId, '');
13273
13274                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
13275                            if (!input && this.$el?.querySelector) {
13276                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
13277                            }
13278                            if (!input && this.$el?.closest) {
13279                                const root = this.$el.closest('[data-product-id]') || this.$el;
13280                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
13281                            }
13282                            if (input) {
13283                                input.checked = false;
13284                            }
13285                        }
13286                    },
13287                    get optionIsEnabled() {
13288                        const itemId = this._getItemId();
13289                        if (!this.$el || !itemId) return true;
13290                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
13291                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
13292                        return !!allowedOptions.find(opt => opt.id == itemId);
13293                    },
13294                    get isSelected() {
13295                        const itemId = this._getItemId();
13296                        if (!this.$el || !itemId) return false;
13297                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
13298                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
13299                    },
13300                    get isSwatchRequired() {
13301                        if (!this.$el) return false;
13302                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
13303                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
13304                    },
13305                    focusedLabel: false,
13306                    activeTooltipItem: false,
13307                    tooltipPositionElement: false,
13308                    setActiveTooltipItem() {
13309                        const itemId = this._getItemId();
13310                        if (!this.$el || !itemId) return;
13311                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
13312                        this.activeTooltipItem = {
13313                            attribute: attrId,
13314                            item: itemId,
13315                            index: 0
13316                        };
13317                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
13318                    },
13319                    unsetActiveTooltipItem() {
13320                        this.activeTooltipItem = false;
13321                    }
13322                },
13323                confProdPreSelect()
13324            );
13325
13326            if (result.optionConfig && result.optionConfig.attributes) {
13327                const attributes = result.optionConfig.attributes;
13328                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
13329                    let source = attributes;
13330                    if (Array.isArray(attributes)) {
13331                        source = {};
13332                        attributes.forEach(attr => {
13333                            if (attr && attr.id) source[attr.id] = attr;
13334                        });
13335                    }
13336                    const values = Object.values(source);
13337                    const wrapper = Object.assign(values, source);
13338                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
13339                        value: true,
13340                        enumerable: false
13341                    });
13342                    result.optionConfig.attributes = wrapper;
13343                }
13344            }
13345
13346            return result;
13347        }
13348
13349        window.addEventListener('alpine:init', () => {
13350            Alpine.data('initConfigurableSwatchOptions_4150', initConfigurableSwatchOptions_4150);
13351        }, {
13352            once: true
13353        });
13354    </script>
13354
13355    
13356    <div x-data="initConfigurableSwatchOptions_4150" x-defer="intersect">
13357        <div class="pagebuilder-home-hidden">
13358                                            
13359                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
13360                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
13361                        <template x-if="showSwatches">
13362                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-4150-163" role="radiogroup" aria-label="Einband">
13363                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
13364                                    <div :data-option-id="item.id" style="display: contents">
13365                                        <div x-id="getSwatchOptionHtmlIdGroup">
13366    <template x-if="optionIsEnabled">
13367        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
13367self="unsetActiveTooltipItem">
13368            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-4150-163">
13369            <div>
13370                <template x-if="isTextSwatch">
13371                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
13372                </template>
13373                <template x-if="!optionIsActive(163, item.id)">
13374                    <div>
13375                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
13376                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
13377                        </svg>
13378                    </div>
13379                </template>
13380            </div>
13381        </label>
13382    </template>
13383</div>                                    </div>
13384                                </template>
13385                            </div>
13386                        </template>
13387                    </div>
13388                </div>
13389                    </div>
13390    </div>
13391            
13392                                                <div class="meta py-4 pagebuilder-home-hidden">
13393                <div x-data="initMarketingShortText_4150()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
13394                    <!-- Marketing short text -->
13395                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
13396                    </div>
13397
13398                    <!-- Short description -->
13399                                                                <div class="short-description">
13400                            &raquo;Ueber das Recht des Volks zu einer Revolution&laquo; des N&uuml;rnberger Arztes und Kantianers Johann Benjamin Erhard ist ein Schl&uuml;sseltext der deutschen Revolutionstheorie um 1800 und ein Werk von ...                            <a href="https://meiner.de/fmv_de/a-ber-das-recht-des-volks-zu-einer-revolution-13216" class="underline">mehr</a>
13401                        </div>
13402                                    </div>
13403
13404                <!-- Series  -->
13405                                    <div class="mb-1">
13406                        <span class="sr-only">Reihe:</span>
13407                        <a href="https://meiner.de/fmv_de/programm/reihen/philosophische-bibliothek">
13408                            <span>Philosophische Bibliothek</span>
13409                        </a>
13410                                                    771                                            </div>
13411                
13412                
13413                                                    <div class="mb-1">
13414                        <span x-data="initEditionText_4150()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
13415                            <!-- Marketing short text -->
13416                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, XCVIII, 140 Seiten                        </span>
13417                    </div>
13418                
13419                            </div>
13420            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
13421                
13422                <div class="justify-end" x-data="initPriceBox()" @update-prices-4150.window="updatePrice($event.detail);">
13423                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="4150" data-price-box="product-id-4150"><span class="normal-price">
13424    <span x-data x-id="['product\u002Dprice\u002D4150']" class="price-container price-final_price tax weee">
13425            <span class="price-label">Ab</span>
13426                <span class="approx-price">ca. </span>
13427        <span :id="$id('product\u002Dprice\u002D4150')" data-price-amount="18.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">18,99&nbsp;&euro;</span></span>
13428        </span>
13429</span>
13430
13431
13432</div>                </div>
13433
13434                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
13435                                            <div class="open-access-container open-access-container-4150                    flex mt-4 ml-auto sm:mt-0 hidden">
13436                            <div class="text-gray-700">
13437                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
13438                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
13439                                        Kostenlos online lesen                                    </a>
13440                                </button>
13441                            </div>
13442                        </div>
13443                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb &Uuml;ber das Recht des Volks zu einer Revolution" aria-label="In den Warenkorb &Uuml;ber das Recht des Volks zu einer Revolution" data-addto="cart">
13444                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
13445  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
13446</svg>
13447                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
13448                                        In den Warenkorb                                    </span>
13449                                </button>
13450                                                                                                                    
13451<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(4150)" aria-label="Zur Wunschliste hinzuf&uuml;gen &Uuml;ber das Recht des Volks zu einer Revolution" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
13452    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
13453  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
13454</svg>
13455</button>
13456                                    </div>
13457            </div>
13458        </div>
13459        
13459<script>
13460            function initMarketingShortText_4150() {
13461                var marketingShortTextConfig = {};
13462                if (typeof window.initConfigurableSwatchOptions_4150 === "function") {
13463                    var fullConfig = window.initConfigurableSwatchOptions_4150().optionConfig
13464                    var marketingShortTextConfig = fullConfig.marketing_short_text;
13465                }
13466                return {
13467                    marketingShortText: '',
13468                    config: marketingShortTextConfig,
13469                    productId: '4150',
13470                    getMarketingShortText(detail) {
13471                        this.marketingShortText = detail.productIndex ?
13472                            this.config[detail.productIndex] :
13473                            null;
13474                    },
13475                    eventListeners: {
13476                        ['@listing-configurable-selection-changed.window'](event) {
13477                            if (this.productId == event.detail.productId) {
13478                                this.getMarketingShortText(event.detail);
13479                            }
13480
13481                        }
13482                    }
13483                }
13484            }
13485
13486            function initEditionText_4150() {
13487                var editionTextConfig = {};
13488                if (typeof window.initConfigurableSwatchOptions_4150 === "function") {
13489                    var fullConfig = window.initConfigurableSwatchOptions_4150().optionConfig
13490                    var editionTextConfig = fullConfig.edition;
13491                }
13492                return {
13493                    editionText: '',
13494                    config: editionTextConfig,
13495                    productId: '4150',
13496                    getEditionText(detail) {
13497                        this.editionText = detail.productIndex ?
13498                            this.config[detail.productIndex] :
13499                            null;
13500                    },
13501                    eventListeners: {
13502                        ['@listing-configurable-selection-changed.window'](event) {
13503                            if (this.productId == event.detail.productId) {
13504                                this.getEditionText(event.detail);
13505                            }
13506
13507                        }
13508                    }
13509                }
13510            }
13511        </script>
13511
13512                    </form>
13513                            
13514    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/39968/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk17366">
13515        <input name="form_key" type="hidden" value="YDP9RAeVFUo72arn">        <input type="hidden" name="product" value="39968">
13516                                    <a href="https://meiner.de/fmv_de/kritik-der-digitalisierung-17366" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
13517            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-39968.window="$el.src = $event.detail" alt="Kritik der Digitalisierung" title="Kritik der Digitalisierung" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351923_1.jpg" :style="{
13518                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
13519                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
13520            }">
13521                    </a>
13522        <div class="product-info flex flex-col flex-grow ">
13523                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
13524                                    <div class="mb-2 text-sm text-gray-500 font-medium">
13525                                                                                    <a href="https://meiner.de/fmv_de/person/Daniel-Martin-Feige-3273/" class="mb-2">
13526                                    Daniel Martin Feige                                                                    </a>
13527                                                                                                                                    </div>
13528                                <a class="product-item-link" href="https://meiner.de/fmv_de/kritik-der-digitalisierung-17366">
13529                    Kritik der Digitalisierung                </a>
13530                            </div>
13531
13532            <div x-data="initEditionText_39968()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
13533                <!-- Marketing short text -->
13534                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
13535                </div>
13536            </div>
13537
13538                            <div class="py-1 grid  mb-4 ">
13539                    
13540                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":39968,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":39968,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2RlL2RpZS1zYWNoZS1kZXItbG9naWs~","childProducts":{"47023":"1","47057":"1","47058":"1"},"childProductsAlertStatus":{"47023":"0","47057":"0","47058":"0"},"indexMapping":{"163:15":47023,"163:8":47057,"163:9":47058},"availabilityMessages":{"47023":"Lieferbar innerhalb von 3-5 Tagen","47057":"Download sofort  verf\u00fcgbar","47058":"Download sofort  verf\u00fcgbar"},"openAccess":{"39968":{"status":0},"47023":{"status":0},"47057":{"status":0},"47058":{"status":0}}},"availabilityMessages":{"47023":"Lieferbar innerhalb von 3-5 Tagen","47057":"Download sofort  verf\u00fcgbar","47058":"Download sofort  verf\u00fcgbar"},"openAccess":{"39968":{"status":0},"47023":{"status":0},"47057":{"status":0},"47058":{"status":0}}}'>
13541        <template x-if="containerVisible">
13542                            <!-- Popup Trigger -->
13543                <div>
13544                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
13545                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
13546                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
13547  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
13548<title>bell</title></svg>
13549</span>
13550                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
13551
13552                    <!-- Popup Modal -->
13553                    <template x-if="showModal">
13554                        <template x-teleport=".page-wrapper">
13555                            <div x-cloak class="fixed inset-0 flex items-center justify-center
13556                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
13557                                <div class="relative bg-white rounded-lg shadow-xl
13558                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
13559                                    <div class="p-6">
13560                                        <!-- Subscription Form for Popup -->
13561                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
13562                                            <input name="form_key" type="hidden" value="YDP9RAeVFUo72arn">
13563                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
13564                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
13565
13566                                            <div class="flex flex-col gap-3">
13567                                                <div class="flex-grow grow">
13568                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
13569                                                        shadow-xs focus:outline-none focus:outline-hidden
13570                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
13571                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
13572                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
13573                                                </div>
13574                                                <input type="hidden" name="product_id" :value="currentProductId">
13575                                                <input type="hidden" name="type" value="email">
13576
13577                                                                                                    <input type="hidden" name="parent_id" value="4130">
13578                                                
13579                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvZm12X2RlL2RpZS1zYWNoZS1kZXItbG9naWs~">
13580
13581                                                <div class="amxnotif_guest_action">
13582                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
13583                                                        rounded-md focus:outline-none
13584                                                        focus:outline-hidden focus:ring-2
13585                                                        focus:ring-offset-2 disabled:opacity-50
13586                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
13587                                                        Benachrichtigen                                                    </button>
13588                                                </div>
13589                                            </div>
13590
13591                                                                                            <div class="flex items-start pt-2">
13592                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
13593                                                        text-blue-600 border-gray-300 rounded-sm">
13594                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
13595                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
13596                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
13597                                                </div>
13598                                                                                    </form>
13599                                    </div>
13600
13601                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
13602                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
13603                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
13604  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
13605<title>x</title></svg>
13606                                    </button>
13607                                </div>
13608                            </div>
13609                        </template>
13610                    </template>
13611                </div>
13612                    </template>
13613    </div>
13614
13615<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_39968" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":39968,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2RlL2RpZS1zYWNoZS1kZXItbG9naWs~","childProducts":{"47023":"1","47057":"1","47058":"1"},"childProductsAlertStatus":{"47023":"0","47057":"0","47058":"0"},"indexMapping":"{\u0022163:15\u0022:47023,\u0022163:8\u0022:47057,\u0022163:9\u0022:47058}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":39968,"availabilityMessages":{"47023":"Lieferbar innerhalb von 3-5 Tagen","47057":"Download sofort  verf\u00fcgbar","47058":"Download sofort  verf\u00fcgbar"},"openAccess":{"39968":{"status":0},"47023":{"status":0},"47057":{"status":0},"47058":{"status":0}}}'>
13616    
13617    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
13618        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
13619        <span x-html="optionsLabelText"></span>
13620    </p>
13621</div>                </div>
13622            
13623                                
13623<script>
13624        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
13625            try {
13626                const attributes = (config && config.attributes) ? config.attributes : null;
13627                if (!attributes) return [];
13628                let attr = null;
13629                if (Array.isArray(attributes)) {
13630                    for (let i = 0; i < attributes.length; i++) {
13631                        const a = attributes[i];
13632                        if (a && a.id == attrId) {
13633                            attr = a;
13634                            break;
13635                        }
13636                    }
13637                } else {
13638                    attr = attributes[attrId];
13639                }
13640                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
13641            } catch (e) {
13642                return [];
13643            }
13644        };
13645
13646        function initConfigurableSwatchOptions_39968() {
13647            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["47023"]},{"id":"8","label":"PDF","products":["47057"]},{"id":"9","label":"EPUB","products":["47058"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"47023":{"baseOldPrice":{"amount":18.598129841121},"oldPrice":{"amount":19.9},"basePrice":{"amount":18.598129841121},"finalPrice":{"amount":19.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47057":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":14.009344794393},"finalPrice":{"amount":14.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47058":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":14.009344794393},"finalPrice":{"amount":14.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":12.596637655462},"finalPrice":{"amount":14.99},"isApproxPrice":null},"productId":"39968","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"47023":{"163":"15"},"47057":{"163":"8"},"47058":{"163":"9"}},"salable":{"163":{"15":["47023"],"8":["47057"],"9":["47058"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"47023":"005190","47057":"005191","47058":"005192"},"output":{"47023":"Kartoniert","47057":"PDF","47058":"EPUB"},"original_name":{"47023":"","47057":"","47058":""},"openaccess_license_link":{"47023":"","47057":"","47058":""},"openaccess_license_name":{"47023":"","47057":"","47058":""},"openaccess_external_link":{"47023":"","47057":"","47058":""},"gpsr_safety_info":{"47023":"","47057":"","47058":""},"description":{"47023":"\u203aDigitalisierung\u2039 ist in aller Munde: Ihre mangelhafte Umsetzung wird ebenso angemahnt, wie vor ihren Folgen gewarnt wird. Das neue Buch von Daniel Martin Feige zeigt, dass die mit der Digitalisierung verbundenen Technologien weder neutrale noch unschuldige Mittel zu beliebigen Zwecken sind und soziale Medien keine Orte des Diskurses. Es weist nach, dass wir Begriffe wie Geist, Denken und Handeln KI-Systemen nicht sinnvoll zuschreiben k\u00f6nnen und entsprechende Diskurse einer Umarbeitung von Begriffen dienen, die wir eigentlich nur auf Menschen anwenden k\u00f6nnen.<br\/><br\/>Feige entwickelt seine Kritik an der Datifizierung unseres gesellschaftlichen Lebens in drei Schritten: aus technikphilosophischer, anthropologischer und kunstphilosophischer Perspektive. Dabei macht er plausibel, dass Kunst unter den Bedingungen der Digitalisierung eine kritische Rolle erf\u00fcllen kann und dass wir auf umstrittene Begriffe wie Autonomie und selbst Genie nicht verzichten k\u00f6nnen.<br\/><br\/>Sein Buch bietet zum ersten Mal den systematischen Entwurf einer kritischen Theorie der Digitalisierung. Dass sich vor dem Hintergrund seiner Diagnose sowohl Analysen, die die Digitalisierung bis in die Vor- und Fr\u00fchgeschichte verl\u00e4ngern, als auch Diskurse, die der K\u00fcnstlichen Intelligenz die F\u00e4higkeit zu handeln und zu denken zusprechen, als h\u00f6c
13647hst problematisch erweisen, zeigt Feige in seinem differenziert argumentierenden Essay.","47057":"\u203aDigitalisierung\u2039 ist in aller Munde: Ihre mangelhafte Umsetzung wird ebenso angemahnt, wie vor ihren Folgen gewarnt wird. Das neue Buch von Daniel Martin Feige zeigt, dass die mit der Digitalisierung verbundenen Technologien weder neutrale noch unschuldige Mittel zu beliebigen Zwecken sind und soziale Medien keine Orte des Diskurses. Es weist nach, dass wir Begriffe wie Geist, Denken und Handeln KI-Systemen nicht sinnvoll zuschreiben k\u00f6nnen und entsprechende Diskurse einer Umarbeitung von Begriffen dienen, die wir eigentlich nur auf Menschen anwenden k\u00f6nnen.<br\/><br\/>Feige entwickelt seine Kritik an der Datifizierung unseres gesellschaftlichen Lebens in drei Schritten: aus technikphilosophischer, anthropologischer und kunstphilosophischer Perspektive. Dabei macht er plausibel, dass Kunst unter den Bedingungen der Digitalisierung eine kritische Rolle erf\u00fcllen kann und dass wir auf umstrittene Begriffe wie Autonomie und selbst Genie nicht verzichten k\u00f6nnen.<br\/><br\/>Sein Buch bietet zum ersten Mal den systematischen Entwurf einer kritischen Theorie der Digitalisierung. Dass sich vor dem Hintergrund seiner Diagnose sowohl Analysen, die die Digitalisierung bis in die Vor- und Fr\u00fchgeschichte verl\u00e4ngern, als auch Diskurse, die der K\u00fcnstlichen Intelligenz die F\u00e4higkeit zu handeln und zu denken zusprechen, als h\u00f6chst problematisch erweisen, zeigt Feige in seinem differenziert argumentierenden Essay.","47058":"\u203aDigitalisierung\u2039 ist in aller Munde: Ihre mangelhafte Umsetzung wird ebenso angemahnt, wie vor ihren Folgen gewarnt wird. Das neue Buch von Daniel Martin Feige zeigt, dass die mit der Digitalisierung verbundenen Technologien weder neutrale noch unschuldige Mittel zu beliebigen Zwecken sind und soziale Medien keine Orte des Diskurses. Es weist nach, dass wir Begriffe wie Geist, Denken und Handeln KI-Systemen nicht sinnvoll zuschreiben k\u00f6nnen und entsprechende Diskurse einer Umarbeitung von Begriffen dienen, die wir eigentlich nur auf Menschen anwenden k\u00f6nnen.<br\/><br\/>Feige entwickelt seine Kritik an der Datifizierung unseres gesellschaftlichen Lebens in drei Schritten: aus technikphilosophischer, anthropologischer und kunstphilosophischer Perspektive. Dabei macht er plausibel, dass Kunst unter den Bedingungen der Digitalisierung eine kritische Rolle erf\u00fcllen kann und dass wir auf umstrittene Begriffe wie Autonomie und selbst Genie nicht verzichten k\u00f6nnen.<br\/><br\/>Sein Buch bietet zum ersten Mal den systematischen Entwurf einer kritischen Theorie der Digitalisierung. Dass sich vor dem Hintergrund seiner Diagnose sowohl Analysen, die die Digitalisierung bis in die Vor- und Fr\u00fchgeschichte verl\u00e4ngern, als auch Diskurse, die der K\u00fcnstlichen Intelligenz die F\u00e4higkeit zu handeln und zu denken zusprechen, als h\u00f6chst problematisch erweisen, zeigt Feige in seinem differenziert argumentierenden Essay."},"doi":{"47023":"","47057":"10.28937\/978-3-7873-5191-6","47058":""},"isbn":{"47023":"978-3-7873-5190-9","47057":"978-3-7873-5191-6","47058":"978-3-7873-5192-3"},"marketing_short_text":{"47023":"","47057":"","47058":""},"recension_text":{"47023":"<div class=\"reviews\">\r\n<div class=\"review\">\u203aKritik der Digitalisierung\u2039 ist eine wichtige und philosophisch fundierte Auseinandersetzung mit den Technologien, Konzepten und Begriffen, die unser Leben heute pr\u00e4gen. Wer dieses Buch gelesen hat, wird \u00fcber \u203aDigitalisierung\u2039 oder \u203ak\u00fcnstliche Intelligenz\u2039 sicher pr\u00e4ziser denken und sprechen k\u00f6nnen als vor der Lekt\u00fcre.<\/div>\r\n<div class=\"source\"><\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Daniel Martin Feige zeigt mit seinem Essay \u203aKritik der Digitalisierung\u2039 gekonnt M\u00f6glichkeiten der Reaktualisierung der \u00e4lteren kritischen Theorie zur Analyse des Digitalzeitalters auf.\n<\/div>\r\n<div class=\"source\">Dr. Marcel Remme, f\u00fcr lehrerbibliothek.de, 2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Feige bietet eine gr\u00fcndliche und systematische Darstellung.<\/div>\r\n<div class=\"source\">Thomas Gro\u00df in zeitzeichen 08\/2025<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Feige gelingt es, die Tiefe philosophischen Nachdenkens f\u00fcr den KI-Diskurs zu erschlie\u00dfen, ohne bereits den Anspruch zu erheben, sie ganz au
13647szuloten. Er zeigt, was m\u00f6glich ist, wenn man die philosophische Tradition in Anspruch nimmt und \u00fcber reine Schlagworte und eine blo\u00df politische Bewertung der Digitalisierung hinauskommt.<\/div>\r\n<div class=\"source\">Marc P\u00fcschel in Junge Welt vom 29.07.2025<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Dieses Buch zeigt sehr anschaulich, warum digitale Systeme nur etwas Nachgebautes sind. Warum sie das, was menschliche Vernunft leisten kann, eben nicht leisten, auch nicht die sogenannte K\u00fcnstliche Intelligenz. Und dass es deshalb fatal ist, wenn wir uns der Logik des Digitalen unterwerfen. [\u2026] Das ist die Pointe dieses spannenden Buchs von Daniel Martin Feige, seine \u203aKritik der Digitalisierung\u2039: Nicht dass der Mensch digitale Technik nutzt, ist das Problem. Sondern dass er zugleich beginnt, die eigene Vernunft auszuschalten.<\/div>\r\n<div class=\"source\">Wilm H\u00fcffer auf SWR Kultur<\/div>\r\n<\/div>","47057":"<div class=\"reviews\">\r\n<div class=\"review\">\u203aKritik der Digitalisierung\u2039 ist eine wichtige und philosophisch fundierte Auseinandersetzung mit den Technologien, Konzepten und Begriffen, die unser Leben heute pr\u00e4gen. Wer dieses Buch gelesen hat, wird \u00fcber \u203aDigitalisierung\u2039 oder \u203ak\u00fcnstliche Intelligenz\u2039 sicher pr\u00e4ziser denken und sprechen k\u00f6nnen als vor der Lekt\u00fcre.<\/div>\r\n<div class=\"source\"><\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Daniel Martin Feige zeigt mit seinem Essay \u203aKritik der Digitalisierung\u2039 gekonnt M\u00f6glichkeiten der Reaktualisierung der \u00e4lteren kritischen Theorie zur Analyse des Digitalzeitalters auf.\n<\/div>\r\n<div class=\"source\">Dr. Marcel Remme, f\u00fcr lehrerbibliothek.de, 2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Feige bietet eine gr\u00fcndliche und systematische Darstellung.<\/div>\r\n<div class=\"source\">Thomas Gro\u00df in zeitzeichen 08\/2025<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Feige gelingt es, die Tiefe philosophischen Nachdenkens f\u00fcr den KI-Diskurs zu erschlie\u00dfen, ohne bereits den Anspruch zu erheben, sie ganz auszuloten. Er zeigt, was m\u00f6glich ist, wenn man die philosophische Tradition in Anspruch nimmt und \u00fcber reine Schlagworte und eine blo\u00df politische Bewertung der Digitalisierung hinauskommt.<\/div>\r\n<div class=\"source\">Marc P\u00fcschel in Junge Welt vom 29.07.2025<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Dieses Buch zeigt sehr anschaulich, warum digitale Systeme nur etwas Nachgebautes sind. Warum sie das, was menschliche Vernunft leisten kann, eben nicht leisten, auch nicht die sogenannte K\u00fcnstliche Intelligenz. Und dass es deshalb fatal ist, wenn wir uns der Logik des Digitalen unterwerfen. [\u2026] Das ist die Pointe dieses spannenden Buchs von Daniel Martin Feige, seine \u203aKritik der Digitalisierung\u2039: Nicht dass der Mensch digitale Technik nutzt, ist das Problem. Sondern dass er zugleich beginnt, die eigene Vernunft auszuschalten.<\/div>\r\n<div class=\"source\">Wilm H\u00fcffer auf SWR Kultur<\/div>\r\n<\/div>","47058":"<div class=\"reviews\">\r\n<div class=\"review\">\u203aKritik der Digitalisierung\u2039 ist eine wichtige und philosophisch fundierte Auseinandersetzung mit den Technologien, Konzepten und Begriffen, die unser Leben heute pr\u00e4gen. Wer dieses Buch gelesen hat, wird \u00fcber \u203aDigitalisierung\u2039 oder \u203ak\u00fcnstliche Intelligenz\u2039 sicher pr\u00e4ziser denken und sprechen k\u00f6nnen als vor der Lekt\u00fcre.<\/div>\r\n<div class=\"source\"><\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Daniel Martin Feige zeigt mit seinem Essay \u203aKritik der Digitalisierung\u2039 gekonnt M\u00f6glichkeiten der Reaktualisierung der \u00e4lteren kritischen Theorie zur Analyse des Digitalzeitalters auf.\n<\/div>\r\n<div class=\"source\">Dr. Marcel Remme, f\u00fcr lehrerbibliothek.de, 2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Feige bietet eine gr\u00fcndliche und systematische Darstellung.<\/div>\r\n<div class=\"source\">Thomas Gro\u00df in zeitzeichen 08\/2025<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Feige gelingt es, die Tiefe philosophischen Nachdenkens f\u00fcr den KI-Diskurs zu erschlie\u00dfen, ohne bereits den Anspruch zu erheben, sie ganz au
13647szuloten. Er zeigt, was m\u00f6glich ist, wenn man die philosophische Tradition in Anspruch nimmt und \u00fcber reine Schlagworte und eine blo\u00df politische Bewertung der Digitalisierung hinauskommt.<\/div>\r\n<div class=\"source\">Marc P\u00fcschel in Junge Welt vom 29.07.2025<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Dieses Buch zeigt sehr anschaulich, warum digitale Systeme nur etwas Nachgebautes sind. Warum sie das, was menschliche Vernunft leisten kann, eben nicht leisten, auch nicht die sogenannte K\u00fcnstliche Intelligenz. Und dass es deshalb fatal ist, wenn wir uns der Logik des Digitalen unterwerfen. [\u2026] Das ist die Pointe dieses spannenden Buchs von Daniel Martin Feige, seine \u203aKritik der Digitalisierung\u2039: Nicht dass der Mensch digitale Technik nutzt, ist das Problem. Sondern dass er zugleich beginnt, die eigene Vernunft auszuschalten.<\/div>\r\n<div class=\"source\">Wilm H\u00fcffer auf SWR Kultur<\/div>\r\n<\/div>"},"language":{"47023":"","47057":"","47058":""},"cover":{"47023":"Kartoniert","47057":"","47058":""},"pages":{"47023":"186 Seiten","47057":"186 Seiten","47058":"186 Seiten"},"edition":{"47023":"2., geringf\u00fcgig korrigierte Auflage","47057":"2., geringf\u00fcgig korrigierte Auflage","47058":"2., geringf\u00fcgig korrigierte Auflage"},"pod":{"47023":"Nein","47057":"Nein","47058":"Nein"},"copyright_year":{"47023":"","47057":"","47058":""},"vlb_tix_link":{"47023":"https:\/\/neu.vlbtix.de\/products\/9783787351909?type=gtin","47057":"","47058":""},"defaultValues":{"163":"15"}};
13648            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
13649
13650            if (typeof window.amxnotif_wrap_attributes === 'function') {
13651                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
13652                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
13653            }
13654
13655            const configurableOptionsComponent = initConfigurableOptions(
13656                '39968',
13657                config
13658            );
13659            const swatchOptionsComponent = initSwatchOptions(
13660                swatchConfig
13661            );
13662
13663            // DWS - Configurable product preselect start
13664            const confProdPreSelect = () => {
13665                return {
13666                    preselectQuerystringItems() {
13667                        var data = {"id":"47023","output":"15"};
13668                        const urlQueryParams = new URLSearchParams(window.location.search);
13669
13670                                                this.$nextTick(() => {
13671                            setTimeout(() => {
13672                                const rootEl = this.$root || this.$el;
13673                                if (!rootEl) return;
13674
13675                                const applySelection = (attrCode, attrValue) => {
13676                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
13677
13678                                    const attributes = Object.values(this.optionConfig.attributes || {});
13679                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
13680
13681                                    if (targetAttr) {
13682                                        const attrId = String(targetAttr.id);
13683                                        const optionVal = String(attrValue);
13684
13685                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
13686
13687                                        if (inputEl) {
13688                                                                                        inputEl.click();
13689                                            inputEl.dispatchEvent(new Event('change', {
13690                                                bubbles: true
13691                                            }));
13692                                        } else {
13693                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
13694                                            if (selectEl) {
13695                                                selectEl.value = optionVal;
13696                                                selectEl.dispatchEvent(new Event('change', {
13697                                                    bubbles: true
13698                                                }));
13699                                            }
13700                                        }
13701
13702                                                                                this.changeOption(attrId, optionVal, false);
13703                                    }
13704                                };
13705
13706                                                                if (data && typeof data === 'object') {
13707                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
13708                                }
13709
13710                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
13711                                    if (attribute && attribute.code) {
13712                                        let optionValue = urlQueryParams.get(attribute.code);
13713                                        if (optionValue) {
13714                                            let optionId = false;
13715                                            const attributes = Object.values(this.optionConfig.attributes || {});
13716                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
13717
13718                                            let found = false;
13719                                            Object.values(targetAttr.options).map(option => {
13720                                                if (found === false && option.label === optionValue) {
13721                                                    optionId = option.id;
13722                                                    found = true;
13723                                                }
13724                                            });
13725
13726                                            const attrId = String(targetAttr.id);
13727                                            let optionVal = String(optionValue);
13728                                            if (found) {
13729                                                optionVal = String(optionId);
13730                                            }
13731
13732                                            applySelection(attribute.code, optionVal);
13733                                        }
13734                                    }
13735                                });
13736                            }, 100);
13737                        });
13738                    }
13739                }
13740            };
13741            // DWS - Configurable product preselect end
13742
13743            const result = Object.assign(
13744                configurableOptionsComponent,
13745                swatchOptionsComponent, {
13746                    productId: '39968',
13747                    productIndex: 0,
13748                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
13749                    showSwatches: false,
13750                    precalcOptions: {},
13751                    originalInit: configurableOptionsComponent.init,
13752                    init() {
13753                        try {
13754                            this.precalcOptions = {};
13755                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
13756                            this.preselectQuerystringItems();
13757                            if (Array.isArray(attrSource)) {
13758                                attrSource.forEach(attr => {
13759                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
13760                                });
13761                            } else if (attrSource && typeof attrSource === 'object') {
13762                                Object.keys(attrSource).forEach(id => {
13763                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
13764                                });
13765                            }
13766                        } catch (e) {
13767                            console.error('Pre-calc error:', e);
13768                        }
13769
13770                        if (typeof this.originalInit === 'function') {
13771                            this.originalInit();
13772                        }
13773
13774                        try {
13775                            this.initShowSwatchesIntersect();
13776                        } catch (e) {
13777                            console.error('intersect error:', e);
13778                        }
13779                    },
13780
13781                    updateGallery() {
13782                        if (!this.productIndex) return;
13783
13784                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
13785                                method: 'GET',
13786                                headers: {
13787                                    'Content-Type': 'application/json',
13788                                    'X-Requested-With': 'XMLHttpRequest'
13789                                }
13790                            })
13791                            .then(response => response.json())
13792                            .then(data => {
13793                                if (data && data.medium) {
13794                                    window.dispatchEvent(new CustomEvent("update-gallery-39968", {
13795                                        detail: data.medium
13796                                    }));
13797                                }
13798                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
13799                    },
13800
13801
13802                    initShowSwatchesIntersect() {
13803                        const observer = new IntersectionObserver(entries => {
13804                            if (entries[0].isIntersecting) {
13805                                this.showSwatches = true;
13806                                observer.disconnect();
13807                            }
13808                        }, {
13809                            rootMargin: '512px'
13810                        });
13811                        observer.observe(this.$el);
13812                    },
13813                    getOptions(attrId) {
13814                        return this.precalcOptions[attrId] || [];
13815                    },
13816                    getOptionsByAttrId() {
13817                        return this.getOptions(this.$el.dataset.attributeId);
13818                    },
13819                    _getItemId() {
13820                        if (this.item && this.item.id) return this.item.id;
13821                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
13822                    },
13823                    getSwatchOptionHtmlId() {
13824                        const itemId = this._getItemId();
13825                        return itemId ? this.$id(`attribute-option-39968-${itemId}`) : '';
13826                    },
13827                    getSwatchOptionHtmlIdGroup() {
13828                        const itemId = this._getItemId();
13829                        return itemId ? [`attribute-option-39968-${itemId}`] : [];
13830                    },
13831                    getAttributeSwatchData(attributeId) {
13832                        const data = Object.assign({}, this.swatchConfig[attributeId]);
13833                        if (data['additional_data']) {
13834                            try {
13835                                data['details'] = JSON.parse(data['additional_data']);
13836                            } catch (e) {
13837                                data['details'] = {};
13838                            }
13839                        }
13840                        return data;
13841                    },
13842                    getSwatchType(attributeId, optionId) {
13843                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
13844                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
13845                        }
13846                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
13847                            this.swatchConfig[attributeId].details.swatch_input_type :
13848                            "empty";
13849                        if (type === 'visual') {
13850                            const config = this.swatchConfig[attributeId];
13851                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
13852                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
13853                            }
13854                            // Fallback to first option type
13855                            for (const oId in config) {
13856                                if (config[oId] && typeof config[oId].type !== 'undefined') {
13857                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
13858                                }
13859                            }
13860                        }
13861                        return type;
13862                    },
13863                    mapSwatchTypeNumberToTypeCode(type) {
13864                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
13865                    },
13866                    isTextSwatch() {
13867                        const itemId = this._getItemId();
13868                        if (!this.$el || !itemId) return false;
13869                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
13870                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
13871                    },
13872
13873                    getSwatchText() {
13874                        const itemId = this._getItemId();
13875                        if (this.item) return this.item.label || '';
13876                        if (!this.$el || !itemId) return '';
13877                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
13878                        const options = attrId ? this.getOptions(attrId) : [];
13879                        const opt = options.find(o => o.id == itemId);
13880                        return opt ? opt.label : '';
13881                    },
13882                    getSwatchBackgroundStyle() {
13883                        const itemId = this._getItemId();
13884                        if (!this.$el || !itemId) return '';
13885                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
13886                        if (!attrId) return '';
13887                        const type = this.getSwatchType(attrId, itemId);
13888                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
13889                            this.swatchConfig[attrId][itemId] :
13890                            null;
13891                        if (!swatchData) return '';
13892                        if (type === "color") return 'background-color:' + swatchData.value;
13893                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
13894                        return '';
13895                    },
13896                    swatchOptionClasses() {
13897                        const itemId = this._getItemId();
13898                        if (!this.$el || !itemId) return {};
13899                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
13900                        return {
13901                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
13902                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
13903                            'w-6 h-6': !this.isTextSwatch()
13904                        }
13905                    },
13906
13907                    onFocusSwatchItem() {
13908                        const itemId = this._getItemId();
13909                        if (itemId) this.focusedLabel = itemId;
13910                    },
13911                    onChangeOption() {
13912                        const itemId = this._getItemId();
13913                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
13914                        if (attrId && itemId) this.changeOption(attrId, itemId);
13915                    },
13916                    changeOption(attributeId, value) {
13917                        if (value === '') {
13918                            return;
13919                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
13920                        } else {
13921                            this.selectedValues[attributeId] = value;
13922                        }
13923
13924                        this.findSimpleIndex();
13925                        this.findAllowedAttributeOptions();
13926                        this.updatePrices();
13927                        this.updateGallery();
13928
13929                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
13930                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
13931
13932                        const eventDetail = {
13933                            productId: this.productId,
13934                            optionId: attributeId,
13935                            value: value,
13936                            productIndex: this.productIndex || 0,
13937                            selectedValues: this.selectedValues,
13938                            candidates: candidates,
13939                            sourceElement: this.$el
13940                        };
13941
13942                        // Dispatch for Amasty
13943                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
13944                            detail: eventDetail
13945                        }));
13946
13947                        // Dispatch for Hyva listing
13948                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
13949                            detail: eventDetail
13950                        }));
13951                    },
13952
13953
13954                    clearOptionIfActive() {
13955                        const itemId = this._getItemId();
13956                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
13957                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
13958                            this.changeOption(attrId, '');
13959
13960                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
13961                            if (!input && this.$el?.querySelector) {
13962                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
13963                            }
13964                            if (!input && this.$el?.closest) {
13965                                const root = this.$el.closest('[data-product-id]') || this.$el;
13966                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
13967                            }
13968                            if (input) {
13969                                input.checked = false;
13970                            }
13971                        }
13972                    },
13973                    get optionIsEnabled() {
13974                        const itemId = this._getItemId();
13975                        if (!this.$el || !itemId) return true;
13976                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
13977                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
13978                        return !!allowedOptions.find(opt => opt.id == itemId);
13979                    },
13980                    get isSelected() {
13981                        const itemId = this._getItemId();
13982                        if (!this.$el || !itemId) return false;
13983                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
13984                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
13985                    },
13986                    get isSwatchRequired() {
13987                        if (!this.$el) return false;
13988                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
13989                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
13990                    },
13991                    focusedLabel: false,
13992                    activeTooltipItem: false,
13993                    tooltipPositionElement: false,
13994                    setActiveTooltipItem() {
13995                        const itemId = this._getItemId();
13996                        if (!this.$el || !itemId) return;
13997                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
13998                        this.activeTooltipItem = {
13999                            attribute: attrId,
14000                            item: itemId,
14001                            index: 0
14002                        };
14003                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
14004                    },
14005                    unsetActiveTooltipItem() {
14006                        this.activeTooltipItem = false;
14007                    }
14008                },
14009                confProdPreSelect()
14010            );
14011
14012            if (result.optionConfig && result.optionConfig.attributes) {
14013                const attributes = result.optionConfig.attributes;
14014                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
14015                    let source = attributes;
14016                    if (Array.isArray(attributes)) {
14017                        source = {};
14018                        attributes.forEach(attr => {
14019                            if (attr && attr.id) source[attr.id] = attr;
14020                        });
14021                    }
14022                    const values = Object.values(source);
14023                    const wrapper = Object.assign(values, source);
14024                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
14025                        value: true,
14026                        enumerable: false
14027                    });
14028                    result.optionConfig.attributes = wrapper;
14029                }
14030            }
14031
14032            return result;
14033        }
14034
14035        window.addEventListener('alpine:init', () => {
14036            Alpine.data('initConfigurableSwatchOptions_39968', initConfigurableSwatchOptions_39968);
14037        }, {
14038            once: true
14039        });
14040    </script>
14040
14041    
14042    <div x-data="initConfigurableSwatchOptions_39968" x-defer="intersect">
14043        <div class="pagebuilder-home-hidden">
14044                                            
14045                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
14046                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
14047                        <template x-if="showSwatches">
14048                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-39968-163" role="radiogroup" aria-label="Einband">
14049                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
14050                                    <div :data-option-id="item.id" style="display: contents">
14051                                        <div x-id="getSwatchOptionHtmlIdGroup">
14052    <template x-if="optionIsEnabled">
14053        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
14053self="unsetActiveTooltipItem">
14054            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-39968-163">
14055            <div>
14056                <template x-if="isTextSwatch">
14057                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
14058                </template>
14059                <template x-if="!optionIsActive(163, item.id)">
14060                    <div>
14061                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
14062                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
14063                        </svg>
14064                    </div>
14065                </template>
14066            </div>
14067        </label>
14068    </template>
14069</div>                                    </div>
14070                                </template>
14071                            </div>
14072                        </template>
14073                    </div>
14074                </div>
14075                    </div>
14076    </div>
14077            
14078                                                <div class="meta py-4 pagebuilder-home-hidden">
14079                <div x-data="initMarketingShortText_39968()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
14080                    <!-- Marketing short text -->
14081                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
14082                    </div>
14083
14084                    <!-- Short description -->
14085                                                                <div class="short-description">
14086                            &rsaquo;Digitalisierung&lsaquo; ist in aller Munde: Ihre mangelhafte Umsetzung wird ebenso angemahnt, wie vor ihren Folgen gewarnt wird. Das neue Buch von Daniel Martin Feige zeigt, dass die mit der ...                            <a href="https://meiner.de/fmv_de/kritik-der-digitalisierung-17366" class="underline">mehr</a>
14087                        </div>
14088                                    </div>
14089
14090                <!-- Series  -->
14091                                    <div class="mb-1">
14092                        <span class="sr-only">Reihe:</span>
14093                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
14094                            <span>Blaue Reihe</span>
14095                        </a>
14096                                            </div>
14097                
14098                
14099                                                    <div class="mb-1">
14100                        <span x-data="initEditionText_39968()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
14101                            <!-- Marketing short text -->
14102                            <span class="edition-text" x-html="editionText"></span>&nbsp;2025, 186 Seiten                        </span>
14103                    </div>
14104                
14105                            </div>
14106            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
14107                
14108                <div class="justify-end" x-data="initPriceBox()" @update-prices-39968.window="updatePrice($event.detail);">
14109                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="39968" data-price-box="product-id-39968"><span class="normal-price">
14110    <span x-data x-id="['product\u002Dprice\u002D39968']" class="price-container price-final_price tax weee">
14111            <span class="price-label">Ab</span>
14112                <span class="approx-price">ca. </span>
14113        <span :id="$id('product\u002Dprice\u002D39968')" data-price-amount="14.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">14,99&nbsp;&euro;</span></span>
14114        </span>
14115</span>
14116
14117
14118</div>                </div>
14119
14120                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
14121                                            <div class="open-access-container open-access-container-39968                    flex mt-4 ml-auto sm:mt-0 hidden">
14122                            <div class="text-gray-700">
14123                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
14124                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
14125                                        Kostenlos online lesen                                    </a>
14126                                </button>
14127                            </div>
14128                        </div>
14129                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Kritik der Digitalisierung" aria-label="In den Warenkorb Kritik der Digitalisierung" data-addto="cart">
14130                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
14131  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
141310 014 0z"></path>
14132</svg>
14133                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
14134                                        In den Warenkorb                                    </span>
14135                                </button>
14136                                                                                                                    
14137<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(39968)" aria-label="Zur Wunschliste hinzuf&uuml;gen Kritik der Digitalisierung" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
14138    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
14139  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
14140</svg>
14141</button>
14142                                    </div>
14143            </div>
14144        </div>
14145        
14145<script>
14146            function initMarketingShortText_39968() {
14147                var marketingShortTextConfig = {};
14148                if (typeof window.initConfigurableSwatchOptions_39968 === "function") {
14149                    var fullConfig = window.initConfigurableSwatchOptions_39968().optionConfig
14150                    var marketingShortTextConfig = fullConfig.marketing_short_text;
14151                }
14152                return {
14153                    marketingShortText: '',
14154                    config: marketingShortTextConfig,
14155                    productId: '39968',
14156                    getMarketingShortText(detail) {
14157                        this.marketingShortText = detail.productIndex ?
14158                            this.config[detail.productIndex] :
14159                            null;
14160                    },
14161                    eventListeners: {
14162                        ['@listing-configurable-selection-changed.window'](event) {
14163                            if (this.productId == event.detail.productId) {
14164                                this.getMarketingShortText(event.detail);
14165                            }
14166
14167                        }
14168                    }
14169                }
14170            }
14171
14172            function initEditionText_39968() {
14173                var editionTextConfig = {};
14174                if (typeof window.initConfigurableSwatchOptions_39968 === "function") {
14175                    var fullConfig = window.initConfigurableSwatchOptions_39968().optionConfig
14176                    var editionTextConfig = fullConfig.edition;
14177                }
14178                return {
14179                    editionText: '',
14180                    config: editionTextConfig,
14181                    productId: '39968',
14182                    getEditionText(detail) {
14183                        this.editionText = detail.productIndex ?
14184                            this.config[detail.productIndex] :
14185                            null;
14186                    },
14187                    eventListeners: {
14188                        ['@listing-configurable-selection-changed.window'](event) {
14189                            if (this.productId == event.detail.productId) {
14190                                this.getEditionText(event.detail);
14191                            }
14192
14193                        }
14194                    }
14195                }
14196            }
14197        </script>
14197
14198                    </form>
14199                            
14200    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/47049/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk22146">
14201        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="47049">
14202                                    <a href="https://meiner.de/fmv_de/archiv-fa-r-begriffsgeschichte-band-672-22146" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
14203            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-47049.window="$el.src = $event.detail" alt="Archiv f&uuml;r Begriffsgeschichte. Band 67,2" title="Archiv f&uuml;r Begriffsgeschichte. Band 67,2" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351770_15.jpg" :style="{
14204                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
14205                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
14206            }">
14207                    </a>
14208        <div class="product-info flex flex-col flex-grow ">
14209                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
14210                                    <div class="mb-2 text-sm text-gray-500 font-medium">
14211                                                                                    <a href="https://meiner.de/fmv_de/person/Carsten-Dutt-8730/" class="mb-2">
14212                                    Carsten Dutt                                                                    </a>
14213                                                                    <span>|</span>
14214                                                                                            <a href="https://meiner.de/fmv_de/person/Hubertus-Busche-3209/" class="mb-2">
14215                                    Hubertus Busche                                                                    </a>
14216                                                                    <span>|</span>
14217                                                                                            <a href="https://meiner.de/fmv_de/person/Michael-Erler-3210/" class="mb-2">
14218                                    Michael Erler                                                                            (Hrsg.)
14219                                                                    </a>
14220                                                                                                                                    </div>
14221                                <a class="product-item-link" href="https://meiner.de/fmv_de/archiv-fa-r-begriffsgeschichte-band-672-22146">
14222                    Archiv f&uuml;r Begriffsgeschichte. Band 67,2                </a>
14223                            </div>
14224
14225            <div x-data="initEditionText_47049()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
14226                <!-- Marketing short text -->
14227                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
14228                </div>
14229            </div>
14230
14231                            <div class="py-1 grid  mb-4 ">
14232                    
14233                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":47049,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":47049,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46920":"1","47024":"1"},"childProductsAlertStatus":{"46920":"0","47024":"0"},"indexMapping":{"163:15":46920,"163:8":47024},"availabilityMessages":{"46920":"Lieferbar innerhalb von 3-5 Tagen","47024":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"47049":{"status":0},"46920":{"status":0},"47024":{"status":0}}},"availabilityMessages":{"46920":"Lieferbar innerhalb von 3-5 Tagen","47024":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"47049":{"status":0},"46920":{"status":0},"47024":{"status":0}}}'>
14234        <template x-if="containerVisible">
14235                            <!-- Popup Trigger -->
14236                <div>
14237                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
14238                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
14239                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
14240  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
14241<title>bell</title></svg>
14242</span>
14243                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
14244
14245                    <!-- Popup Modal -->
14246                    <template x-if="showModal">
14247                        <template x-teleport=".page-wrapper">
14248                            <div x-cloak class="fixed inset-0 flex items-center justify-center
14249                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
14250                                <div class="relative bg-white rounded-lg shadow-xl
14251                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
14252                                    <div class="p-6">
14253                                        <!-- Subscription Form for Popup -->
14254                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
14255                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
14256                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
14257                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
14258
14259                                            <div class="flex flex-col gap-3">
14260                                                <div class="flex-grow grow">
14261                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
14262                                                        shadow-xs focus:outline-none focus:outline-hidden
14263                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
14264                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
14265                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
14266                                                </div>
14267                                                <input type="hidden" name="product_id" :value="currentProductId">
14268                                                <input type="hidden" name="type" value="email">
14269
14270                                                
14271                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
14272
14273                                                <div class="amxnotif_guest_action">
14274                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
14275                                                        rounded-md focus:outline-none
14276                                                        focus:outline-hidden focus:ring-2
14277                                                        focus:ring-offset-2 disabled:opacity-50
14278                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
14279                                                        Benachrichtigen                                                    </button>
14280                                                </div>
14281                                            </div>
14282
14283                                                                                            <div class="flex items-start pt-2">
14284                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
14285                                                        text-blue-600 border-gray-300 rounded-sm">
14286                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
14287                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
14288                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
14289                                                </div>
14290                                                                                    </form>
14291                                    </div>
14292
14293                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
14294                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
14295                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
14296  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
14297<title>x</title></svg>
14298                                    </button>
14299                                </div>
14300                            </div>
14301                        </template>
14302                    </template>
14303                </div>
14304                    </template>
14305    </div>
14306
14307<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_47049" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":47049,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46920":"1","47024":"1"},"childProductsAlertStatus":{"46920":"0","47024":"0"},"indexMapping":"{\u0022163:15\u0022:46920,\u0022163:8\u0022:47024}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":47049,"availabilityMessages":{"46920":"Lieferbar innerhalb von 3-5 Tagen","47024":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"47049":{"status":0},"46920":{"status":0},"47024":{"status":0}}}'>
14308    
14309    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
14310        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
14311        <span x-html="optionsLabelText"></span>
14312    </p>
14313</div>                </div>
14314            
14315                                
14315<script>
14316        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
14317            try {
14318                const attributes = (config && config.attributes) ? config.attributes : null;
14319                if (!attributes) return [];
14320                let attr = null;
14321                if (Array.isArray(attributes)) {
14322                    for (let i = 0; i < attributes.length; i++) {
14323                        const a = attributes[i];
14324                        if (a && a.id == attrId) {
14325                            attr = a;
14326                            break;
14327                        }
14328                    }
14329                } else {
14330                    attr = attributes[attrId];
14331                }
14332                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
14333            } catch (e) {
14334                return [];
14335            }
14336        };
14337
14338        function initConfigurableSwatchOptions_47049() {
14339            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46920"]},{"id":"8","label":"PDF","products":["47024"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46920":{"baseOldPrice":{"amount":62.616821429907},"oldPrice":{"amount":67},"basePrice":{"amount":62.616821429907},"finalPrice":{"amount":67},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47024":{"baseOldPrice":{"amount":46.719625168224},"oldPrice":{"amount":49.99},"basePrice":{"amount":46.719625168224},"finalPrice":{"amount":49.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":46.719625168224},"oldPrice":{"amount":49.99},"basePrice":{"amount":42.008402361345},"finalPrice":{"amount":49.99},"isApproxPrice":null},"productId":"47049","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46920":{"163":"15"},"47024":{"163":"8"}},"salable":{"163":{"15":["46920"],"8":["47024"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"46920":"000369-67-2","47024":"eAFB-67-2"},"output":{"46920":"Kartoniert","47024":"PDF"},"original_name":{"46920":"","47024":""},"openaccess_license_link":{"46920":"","47024":""},"openaccess_license_name":{"46920":"","47024":""},"openaccess_external_link":{"46920":"","47024":""},"gpsr_safety_info":{"46920":"","47024":""},"description":{"46920":"Mit dem von Nadja Germann und Frieder Vogelmann kuratierten Schwerpunkt \u00bbWissen \u00fcber Grenzen\u00ab versammelt das Archiv f\u00fcr Begriffsgeschichte theoretisch-methodologische Reflexionen und materiale Studien zu einer \u00bbkritisch-aufkl\u00e4rerischen, transkulturell geweiteten Begriffsgeschichte\u00ab. Der einleitende Beitrag profiliert ihre Erkenntnisziele und Verfahren als Revision der bisherigen Praxis philosophischer Begriffsgeschichtsschreibung. Die sich anschlie\u00dfenden Studien von Germann, Maarten J. F. M. Hoenen und Bret W. Davis gehen je auf ihre Weise Grenzziehungen und -verschiebungen des Wissensbegriffs in der arabisch-islamischen Philosophie des Mittelalters, im sp\u00e4tmittelalterlichen Thomismus sowie im Zen-Buddhismus nach. Eine abschlie\u00dfende Replik von Carsten Dutt nimmt zu den kritischen und konstruktiven Anspr\u00fcchen des Heftschwerpunkts Stellung.","47024":"Mit dem von Nadja Germann und Frieder Vogelmann kuratierten Schwerpunkt \u00bbWissen \u00fcber Grenzen\u00ab versammelt das Archiv f\u00fcr Begriffsgeschichte theoretisch-methodologische Reflexionen und materiale Studien zu einer \u00bbkritisch-aufkl\u00e4rerischen, transkulturell geweiteten Begriffsgeschichte\u00ab. Der einleitende Beitrag profiliert ihre Erkenntnisziele und Verfahren als Revision der bisherigen Praxis philosophischer Begriffsgeschichtsschreibung. Die sich anschlie\u00dfenden Studien von Germann, Maarten J. F. M. Hoenen und Bret W. Davis gehen je auf ihre Weise Grenzziehungen und -verschiebungen des Wissensbegriffs in der arabisch-islamischen Philosophie des Mittelalters, im sp\u00e4tmittelalterlichen Thomismus sowie im Zen-Buddhismus nach. Eine abschlie\u00dfende Replik von Carsten Dutt nimmt zu den kritischen und konstruktiven Anspr\u00fcchen des Heftschwerpunkts Stellung."},"doi":{"46920":"","47024":"10.28937\/978-3-7873-5177-0"},"isbn":{"46920":"978-3-7873-5176-3","47024":""},"marketing_short_text":{"46920":"","47024":""},"recension_text":{"46920":"","47024":""},"language":{"46920":"","47024":""},"cover":{"46920":"Kartoniert","47024":""},"pages":{"46920":"191 Seiten.","47024":"191 Seiten."},"edition":{"46920":"","47024":"Unver\u00e4ndertes eJournal der 1. Auflage von 2025"},"pod":{"46920":"Nein","47024":"Nein"},"copyright_year":{"46920":"","47024":""},"vlb_tix_link":{"46920":"https:\/\/neu.vlbtix.de\/products\/9783787351763?type=gtin","47024":""},"defaultValues":{"163":"15"}};
14340            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
14341
14342            if (typeof window.amxnotif_wrap_attributes === 'function') {
14343                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
14344                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
14345            }
14346
14347            const configurableOptionsComponent = initConfigurableOptions(
14348                '47049',
14349                config
14350            );
14351            const swatchOptionsComponent = initSwatchOptions(
14352                swatchConfig
14353            );
14354
14355            // DWS - Configurable product preselect start
14356            const confProdPreSelect = () => {
14357                return {
14358                    preselectQuerystringItems() {
14359                        var data = {"id":"46920","output":"15"};
14360                        const urlQueryParams = new URLSearchParams(window.location.search);
14361
14362                                                this.$nextTick(() => {
14363                            setTimeout(() => {
14364                                const rootEl = this.$root || this.$el;
14365                                if (!rootEl) return;
14366
14367                                const applySelection = (attrCode, attrValue) => {
14368                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
14369
14370                                    const attributes = Object.values(this.optionConfig.attributes || {});
14371                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
14372
14373                                    if (targetAttr) {
14374                                        const attrId = String(targetAttr.id);
14375                                        const optionVal = String(attrValue);
14376
14377                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
14378
14379                                        if (inputEl) {
14380                                                                                        inputEl.click();
14381                                            inputEl.dispatchEvent(new Event('change', {
14382                                                bubbles: true
14383                                            }));
14384                                        } else {
14385                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
14386                                            if (selectEl) {
14387                                                selectEl.value = optionVal;
14388                                                selectEl.dispatchEvent(new Event('change', {
14389                                                    bubbles: true
14390                                                }));
14391                                            }
14392                                        }
14393
14394                                                                                this.changeOption(attrId, optionVal, false);
14395                                    }
14396                                };
14397
14398                                                                if (data && typeof data === 'object') {
14399                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
14400                                }
14401
14402                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
14403                                    if (attribute && attribute.code) {
14404                                        let optionValue = urlQueryParams.get(attribute.code);
14405                                        if (optionValue) {
14406                                            let optionId = false;
14407                                            const attributes = Object.values(this.optionConfig.attributes || {});
14408                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
14409
14410                                            let found = false;
14411                                            Object.values(targetAttr.options).map(option => {
14412                                                if (found === false && option.label === optionValue) {
14413                                                    optionId = option.id;
14414                                                    found = true;
14415                                                }
14416                                            });
14417
14418                                            const attrId = String(targetAttr.id);
14419                                            let optionVal = String(optionValue);
14420                                            if (found) {
14421                                                optionVal = String(optionId);
14422                                            }
14423
14424                                            applySelection(attribute.code, optionVal);
14425                                        }
14426                                    }
14427                                });
14428                            }, 100);
14429                        });
14430                    }
14431                }
14432            };
14433            // DWS - Configurable product preselect end
14434
14435            const result = Object.assign(
14436                configurableOptionsComponent,
14437                swatchOptionsComponent, {
14438                    productId: '47049',
14439                    productIndex: 0,
14440                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
14441                    showSwatches: false,
14442                    precalcOptions: {},
14443                    originalInit: configurableOptionsComponent.init,
14444                    init() {
14445                        try {
14446                            this.precalcOptions = {};
14447                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
14448                            this.preselectQuerystringItems();
14449                            if (Array.isArray(attrSource)) {
14450                                attrSource.forEach(attr => {
14451                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
14452                                });
14453                            } else if (attrSource && typeof attrSource === 'object') {
14454                                Object.keys(attrSource).forEach(id => {
14455                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
14456                                });
14457                            }
14458                        } catch (e) {
14459                            console.error('Pre-calc error:', e);
14460                        }
14461
14462                        if (typeof this.originalInit === 'function') {
14463                            this.originalInit();
14464                        }
14465
14466                        try {
14467                            this.initShowSwatchesIntersect();
14468                        } catch (e) {
14469                            console.error('intersect error:', e);
14470                        }
14471                    },
14472
14473                    updateGallery() {
14474                        if (!this.productIndex) return;
14475
14476                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
14477                                method: 'GET',
14478                                headers: {
14479                                    'Content-Type': 'application/json',
14480                                    'X-Requested-With': 'XMLHttpRequest'
14481                                }
14482                            })
14483                            .then(response => response.json())
14484                            .then(data => {
14485                                if (data && data.medium) {
14486                                    window.dispatchEvent(new CustomEvent("update-gallery-47049", {
14487                                        detail: data.medium
14488                                    }));
14489                                }
14490                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
14491                    },
14492
14493
14494                    initShowSwatchesIntersect() {
14495                        const observer = new IntersectionObserver(entries => {
14496                            if (entries[0].isIntersecting) {
14497                                this.showSwatches = true;
14498                                observer.disconnect();
14499                            }
14500                        }, {
14501                            rootMargin: '512px'
14502                        });
14503                        observer.observe(this.$el);
14504                    },
14505                    getOptions(attrId) {
14506                        return this.precalcOptions[attrId] || [];
14507                    },
14508                    getOptionsByAttrId() {
14509                        return this.getOptions(this.$el.dataset.attributeId);
14510                    },
14511                    _getItemId() {
14512                        if (this.item && this.item.id) return this.item.id;
14513                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
14514                    },
14515                    getSwatchOptionHtmlId() {
14516                        const itemId = this._getItemId();
14517                        return itemId ? this.$id(`attribute-option-47049-${itemId}`) : '';
14518                    },
14519                    getSwatchOptionHtmlIdGroup() {
14520                        const itemId = this._getItemId();
14521                        return itemId ? [`attribute-option-47049-${itemId}`] : [];
14522                    },
14523                    getAttributeSwatchData(attributeId) {
14524                        const data = Object.assign({}, this.swatchConfig[attributeId]);
14525                        if (data['additional_data']) {
14526                            try {
14527                                data['details'] = JSON.parse(data['additional_data']);
14528                            } catch (e) {
14529                                data['details'] = {};
14530                            }
14531                        }
14532                        return data;
14533                    },
14534                    getSwatchType(attributeId, optionId) {
14535                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
14536                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
14537                        }
14538                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
14539                            this.swatchConfig[attributeId].details.swatch_input_type :
14540                            "empty";
14541                        if (type === 'visual') {
14542                            const config = this.swatchConfig[attributeId];
14543                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
14544                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
14545                            }
14546                            // Fallback to first option type
14547                            for (const oId in config) {
14548                                if (config[oId] && typeof config[oId].type !== 'undefined') {
14549                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
14550                                }
14551                            }
14552                        }
14553                        return type;
14554                    },
14555                    mapSwatchTypeNumberToTypeCode(type) {
14556                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
14557                    },
14558                    isTextSwatch() {
14559                        const itemId = this._getItemId();
14560                        if (!this.$el || !itemId) return false;
14561                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
14562                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
14563                    },
14564
14565                    getSwatchText() {
14566                        const itemId = this._getItemId();
14567                        if (this.item) return this.item.label || '';
14568                        if (!this.$el || !itemId) return '';
14569                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
14570                        const options = attrId ? this.getOptions(attrId) : [];
14571                        const opt = options.find(o => o.id == itemId);
14572                        return opt ? opt.label : '';
14573                    },
14574                    getSwatchBackgroundStyle() {
14575                        const itemId = this._getItemId();
14576                        if (!this.$el || !itemId) return '';
14577                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
14578                        if (!attrId) return '';
14579                        const type = this.getSwatchType(attrId, itemId);
14580                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
14581                            this.swatchConfig[attrId][itemId] :
14582                            null;
14583                        if (!swatchData) return '';
14584                        if (type === "color") return 'background-color:' + swatchData.value;
14585                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
14586                        return '';
14587                    },
14588                    swatchOptionClasses() {
14589                        const itemId = this._getItemId();
14590                        if (!this.$el || !itemId) return {};
14591                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
14592                        return {
14593                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
14594                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
14595                            'w-6 h-6': !this.isTextSwatch()
14596                        }
14597                    },
14598
14599                    onFocusSwatchItem() {
14600                        const itemId = this._getItemId();
14601                        if (itemId) this.focusedLabel = itemId;
14602                    },
14603                    onChangeOption() {
14604                        const itemId = this._getItemId();
14605                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
14606                        if (attrId && itemId) this.changeOption(attrId, itemId);
14607                    },
14608                    changeOption(attributeId, value) {
14609                        if (value === '') {
14610                            return;
14611                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
14612                        } else {
14613                            this.selectedValues[attributeId] = value;
14614                        }
14615
14616                        this.findSimpleIndex();
14617                        this.findAllowedAttributeOptions();
14618                        this.updatePrices();
14619                        this.updateGallery();
14620
14621                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
14622                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
14623
14624                        const eventDetail = {
14625                            productId: this.productId,
14626                            optionId: attributeId,
14627                            value: value,
14628                            productIndex: this.productIndex || 0,
14629                            selectedValues: this.selectedValues,
14630                            candidates: candidates,
14631                            sourceElement: this.$el
14632                        };
14633
14634                        // Dispatch for Amasty
14635                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
14636                            detail: eventDetail
14637                        }));
14638
14639                        // Dispatch for Hyva listing
14640                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
14641                            detail: eventDetail
14642                        }));
14643                    },
14644
14645
14646                    clearOptionIfActive() {
14647                        const itemId = this._getItemId();
14648                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
14649                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
14650                            this.changeOption(attrId, '');
14651
14652                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
14653                            if (!input && this.$el?.querySelector) {
14654                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
14655                            }
14656                            if (!input && this.$el?.closest) {
14657                                const root = this.$el.closest('[data-product-id]') || this.$el;
14658                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
14659                            }
14660                            if (input) {
14661                                input.checked = false;
14662                            }
14663                        }
14664                    },
14665                    get optionIsEnabled() {
14666                        const itemId = this._getItemId();
14667                        if (!this.$el || !itemId) return true;
14668                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
14669                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
14670                        return !!allowedOptions.find(opt => opt.id == itemId);
14671                    },
14672                    get isSelected() {
14673                        const itemId = this._getItemId();
14674                        if (!this.$el || !itemId) return false;
14675                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
14676                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
14677                    },
14678                    get isSwatchRequired() {
14679                        if (!this.$el) return false;
14680                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
14681                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
14682                    },
14683                    focusedLabel: false,
14684                    activeTooltipItem: false,
14685                    tooltipPositionElement: false,
14686                    setActiveTooltipItem() {
14687                        const itemId = this._getItemId();
14688                        if (!this.$el || !itemId) return;
14689                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
14690                        this.activeTooltipItem = {
14691                            attribute: attrId,
14692                            item: itemId,
14693                            index: 0
14694                        };
14695                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
14696                    },
14697                    unsetActiveTooltipItem() {
14698                        this.activeTooltipItem = false;
14699                    }
14700                },
14701                confProdPreSelect()
14702            );
14703
14704            if (result.optionConfig && result.optionConfig.attributes) {
14705                const attributes = result.optionConfig.attributes;
14706                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
14707                    let source = attributes;
14708                    if (Array.isArray(attributes)) {
14709                        source = {};
14710                        attributes.forEach(attr => {
14711                            if (attr && attr.id) source[attr.id] = attr;
14712                        });
14713                    }
14714                    const values = Object.values(source);
14715                    const wrapper = Object.assign(values, source);
14716                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
14717                        value: true,
14718                        enumerable: false
14719                    });
14720                    result.optionConfig.attributes = wrapper;
14721                }
14722            }
14723
14724            return result;
14725        }
14726
14727        window.addEventListener('alpine:init', () => {
14728            Alpine.data('initConfigurableSwatchOptions_47049', initConfigurableSwatchOptions_47049);
14729        }, {
14730            once: true
14731        });
14732    </script>
14732
14733    
14734    <div x-data="initConfigurableSwatchOptions_47049" x-defer="intersect">
14735        <div class="pagebuilder-home-hidden">
14736                                            
14737                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
14738                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
14739                        <template x-if="showSwatches">
14740                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-47049-163" role="radiogroup" aria-label="Einband">
14741                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
14742                                    <div :data-option-id="item.id" style="display: contents">
14743                                        <div x-id="getSwatchOptionHtmlIdGroup">
14744    <template x-if="optionIsEnabled">
14745        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
14745self="unsetActiveTooltipItem">
14746            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-47049-163">
14747            <div>
14748                <template x-if="isTextSwatch">
14749                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
14750                </template>
14751                <template x-if="!optionIsActive(163, item.id)">
14752                    <div>
14753                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
14754                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
14755                        </svg>
14756                    </div>
14757                </template>
14758            </div>
14759        </label>
14760    </template>
14761</div>                                    </div>
14762                                </template>
14763                            </div>
14764                        </template>
14765                    </div>
14766                </div>
14767                    </div>
14768    </div>
14769            
14770                                                <div class="meta py-4 pagebuilder-home-hidden">
14771                <div x-data="initMarketingShortText_47049()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
14772                    <!-- Marketing short text -->
14773                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
14774                    </div>
14775
14776                    <!-- Short description -->
14777                                                                <div class="short-description">
14778                            Mit dem von Nadja Germann und Frieder Vogelmann kuratierten Schwerpunkt &raquo;Wissen &uuml;ber Grenzen&laquo; versammelt das Archiv f&uuml;r Begriffsgeschichte theoretisch-methodologische Reflexionen und materiale ...                            <a href="https://meiner.de/fmv_de/archiv-fa-r-begriffsgeschichte-band-672-22146" class="underline">mehr</a>
14779                        </div>
14780                                    </div>
14781
14782                <!-- Series  -->
14783                                    <div class="mb-1">
14784                        <span class="sr-only">Reihe:</span>
14785                        <a href="https://meiner.de/fmv_de/programm/zeitschriften/archiv-fur-begriffsgeschichte">
14786                            <span>Archiv f&uuml;r Begriffsgeschichte</span>
14787                        </a>
14788                                                    67,2                                            </div>
14789                
14790                
14791                                                    <div class="mb-1">
14792                        <span x-data="initEditionText_47049()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
14793                            <!-- Marketing short text -->
14794                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 191 Seiten.                        </span>
14795                    </div>
14796                
14797                            </div>
14798            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
14799                
14800                <div class="justify-end" x-data="initPriceBox()" @update-prices-47049.window="updatePrice($event.detail);">
14801                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="47049" data-price-box="product-id-47049"><span class="normal-price">
14802    <span x-data x-id="['product\u002Dprice\u002D47049']" class="price-container price-final_price tax weee">
14803            <span class="price-label">Ab</span>
14804                <span class="approx-price">ca. </span>
14805        <span :id="$id('product\u002Dprice\u002D47049')" data-price-amount="49.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">49,99&nbsp;&euro;</span></span>
14806        </span>
14807</span>
14808
14809
14810</div>                </div>
14811
14812                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
14813                                            <div class="open-access-container open-access-container-47049                    flex mt-4 ml-auto sm:mt-0 hidden">
14814                            <div class="text-gray-700">
14815                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
14816                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
14817                                        Kostenlos online lesen                                    </a>
14818                                </button>
14819                            </div>
14820                        </div>
14821                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Archiv f&uuml;r Begriffsgeschichte. Band 67,2" aria-label="In den Warenkorb Archiv f&uuml;r Begriffsgeschichte. Band 67,2" data-addto="cart">
14822                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
14823  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
14824</svg>
14825                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
14826                                        In den Warenkorb                                    </span>
14827                                </button>
14828                                                                                                                    
14829<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(47049)" aria-label="Zur Wunschliste hinzuf&uuml;gen Archiv f&uuml;r Begriffsgeschichte. Band 67,2" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
14830    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
14831  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
14832</svg>
14833</button>
14834                                    </div>
14835            </div>
14836        </div>
14837        
14837<script>
14838            function initMarketingShortText_47049() {
14839                var marketingShortTextConfig = {};
14840                if (typeof window.initConfigurableSwatchOptions_47049 === "function") {
14841                    var fullConfig = window.initConfigurableSwatchOptions_47049().optionConfig
14842                    var marketingShortTextConfig = fullConfig.marketing_short_text;
14843                }
14844                return {
14845                    marketingShortText: '',
14846                    config: marketingShortTextConfig,
14847                    productId: '47049',
14848                    getMarketingShortText(detail) {
14849                        this.marketingShortText = detail.productIndex ?
14850                            this.config[detail.productIndex] :
14851                            null;
14852                    },
14853                    eventListeners: {
14854                        ['@listing-configurable-selection-changed.window'](event) {
14855                            if (this.productId == event.detail.productId) {
14856                                this.getMarketingShortText(event.detail);
14857                            }
14858
14859                        }
14860                    }
14861                }
14862            }
14863
14864            function initEditionText_47049() {
14865                var editionTextConfig = {};
14866                if (typeof window.initConfigurableSwatchOptions_47049 === "function") {
14867                    var fullConfig = window.initConfigurableSwatchOptions_47049().optionConfig
14868                    var editionTextConfig = fullConfig.edition;
14869                }
14870                return {
14871                    editionText: '',
14872                    config: editionTextConfig,
14873                    productId: '47049',
14874                    getEditionText(detail) {
14875                        this.editionText = detail.productIndex ?
14876                            this.config[detail.productIndex] :
14877                            null;
14878                    },
14879                    eventListeners: {
14880                        ['@listing-configurable-selection-changed.window'](event) {
14881                            if (this.productId == event.detail.productId) {
14882                                this.getEditionText(event.detail);
14883                            }
14884
14885                        }
14886                    }
14887                }
14888            }
14889        </script>
14889
14890                    </form>
14891                            
14892    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/46700/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk17995">
14893        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="46700">
14894                                    <a href="https://meiner.de/fmv_de/ka-nste-der-medien-medien-der-ka-nste-17995" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
14895            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-46700.window="$el.src = $event.detail" alt="K&uuml;nste der Medien / Medien der K&uuml;nste" title="K&uuml;nste der Medien / Medien der K&uuml;nste" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787349579_1.jpg" :style="{
14896                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
14897                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
14898            }">
14899                    </a>
14900        <div class="product-info flex flex-col flex-grow ">
14901                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
14902                                    <div class="mb-2 text-sm text-gray-500 font-medium">
14903                                                                                    <a href="https://meiner.de/fmv_de/person/Emmanuel-Alloa-8902/" class="mb-2">
14904                                    Emmanuel Alloa                                                                    </a>
14905                                                                    <span>|</span>
14906                                                                                            <a href="https://meiner.de/fmv_de/person/Eva-Schurmann-4846/" class="mb-2">
14907                                    Eva Sch&uuml;rmann                                                                            (Hrsg.)
14908                                                                    </a>
14909                                                                                                                                    </div>
14910                                <a class="product-item-link" href="https://meiner.de/fmv_de/ka-nste-der-medien-medien-der-ka-nste-17995">
14911                    K&uuml;nste der Medien / Medien der K&uuml;nste                </a>
14912                            </div>
14913
14914            <div x-data="initEditionText_46700()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
14915                <!-- Marketing short text -->
14916                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
14917                </div>
14918            </div>
14919
14920                            <div class="py-1 grid  mb-4 ">
14921                    
14922                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":46700,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":46700,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46489":"1","46869":"1"},"childProductsAlertStatus":{"46489":"0","46869":"0"},"indexMapping":{"163:15":46489,"163:8":46869},"availabilityMessages":{"46489":"Lieferbar innerhalb von 3-5 Tagen","46869":"Download sofort  verf\u00fcgbar"},"openAccess":{"46700":{"status":0},"46489":{"status":0},"46869":{"status":0}}},"availabilityMessages":{"46489":"Lieferbar innerhalb von 3-5 Tagen","46869":"Download sofort  verf\u00fcgbar"},"openAccess":{"46700":{"status":0},"46489":{"status":0},"46869":{"status":0}}}'>
14923        <template x-if="containerVisible">
14924                            <!-- Popup Trigger -->
14925                <div>
14926                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
14927                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
14928                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
14929  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
14930<title>bell</title></svg>
14931</span>
14932                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
14933
14934                    <!-- Popup Modal -->
14935                    <template x-if="showModal">
14936                        <template x-teleport=".page-wrapper">
14937                            <div x-cloak class="fixed inset-0 flex items-center justify-center
14938                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
14939                                <div class="relative bg-white rounded-lg shadow-xl
14940                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
14941                                    <div class="p-6">
14942                                        <!-- Subscription Form for Popup -->
14943                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
14944                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
14945                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
14946                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
14947
14948                                            <div class="flex flex-col gap-3">
14949                                                <div class="flex-grow grow">
14950                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
14951                                                        shadow-xs focus:outline-none focus:outline-hidden
14952                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
14953                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
14954                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
14955                                                </div>
14956                                                <input type="hidden" name="product_id" :value="currentProductId">
14957                                                <input type="hidden" name="type" value="email">
14958
14959                                                
14960                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
14961
14962                                                <div class="amxnotif_guest_action">
14963                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
14964                                                        rounded-md focus:outline-none
14965                                                        focus:outline-hidden focus:ring-2
14966                                                        focus:ring-offset-2 disabled:opacity-50
14967                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
14968                                                        Benachrichtigen                                                    </button>
14969                                                </div>
14970                                            </div>
14971
14972                                                                                            <div class="flex items-start pt-2">
14973                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
14974                                                        text-blue-600 border-gray-300 rounded-sm">
14975                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
14976                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
14977                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
14978                                                </div>
14979                                                                                    </form>
14980                                    </div>
14981
14982                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
14983                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
14984                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
14985  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
14986<title>x</title></svg>
14987                                    </button>
14988                                </div>
14989                            </div>
14990                        </template>
14991                    </template>
14992                </div>
14993                    </template>
14994    </div>
14995
14996<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_46700" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":46700,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46489":"1","46869":"1"},"childProductsAlertStatus":{"46489":"0","46869":"0"},"indexMapping":"{\u0022163:15\u0022:46489,\u0022163:8\u0022:46869}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":46700,"availabilityMessages":{"46489":"Lieferbar innerhalb von 3-5 Tagen","46869":"Download sofort  verf\u00fcgbar"},"openAccess":{"46700":{"status":0},"46489":{"status":0},"46869":{"status":0}}}'>
14997    
14998    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
14999        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
15000        <span x-html="optionsLabelText"></span>
15001    </p>
15002</div>                </div>
15003            
15004                                
15004<script>
15005        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
15006            try {
15007                const attributes = (config && config.attributes) ? config.attributes : null;
15008                if (!attributes) return [];
15009                let attr = null;
15010                if (Array.isArray(attributes)) {
15011                    for (let i = 0; i < attributes.length; i++) {
15012                        const a = attributes[i];
15013                        if (a && a.id == attrId) {
15014                            attr = a;
15015                            break;
15016                        }
15017                    }
15018                } else {
15019                    attr = attributes[attrId];
15020                }
15021                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
15022            } catch (e) {
15023                return [];
15024            }
15025        };
15026
15027        function initConfigurableSwatchOptions_46700() {
15028            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46489"]},{"id":"8","label":"PDF","products":["46869"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46489":{"baseOldPrice":{"amount":91.588784046729},"oldPrice":{"amount":98},"basePrice":{"amount":91.588784046729},"finalPrice":{"amount":98},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46869":{"baseOldPrice":{"amount":70.084111149533},"oldPrice":{"amount":74.99},"basePrice":{"amount":70.084111149533},"finalPrice":{"amount":74.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":70.084111149533},"oldPrice":{"amount":74.99},"basePrice":{"amount":63.016805722689},"finalPrice":{"amount":74.99},"isApproxPrice":null},"productId":"46700","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46489":{"163":"15"},"46869":{"163":"8"}},"salable":{"163":{"15":["46489"],"8":["46869"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"46489":"004956","46869":"004957"},"output":{"46489":"Kartoniert","46869":"PDF"},"original_name":{"46489":"","46869":""},"openaccess_license_link":{"46489":"","46869":""},"openaccess_license_name":{"46489":"","46869":""},"openaccess_external_link":{"46489":"","46869":""},"gpsr_safety_info":{"46489":"","46869":""},"description":{"46489":"Medienkunst gibt es nicht erst, seitdem technische Medien sich ins Kunstgeschehen einschalten. Vielmehr gab es medienfreie K\u00fcnste noch nie, ob man unter Medien Bild, Klang, Licht, Raum oder Sprache versteht. Ebenso wenig sind Materialien wie Marmor oder Bronze, T\u00f6ne oder Farben einem Kunstwerk jemals \u00e4u\u00dferlich, vielmehr entsteht \u00e4sthetische Bedeutung erst durch die jeweilige medial-materielle Konfiguration und lie\u00dfe sich ohne sie gar nicht artikulieren.<br\/><br\/>Der Band dokumentiert eine Auswahl der Beitr\u00e4ge zum XII. Kongress der Deutschen Gesellschaft f\u00fcr \u00c4sthetik in Fribourg, der medientheoretische Fragen in historischer oder zeitgen\u00f6ssischer, in systematischer oder angewandter Absicht zum Thema gemacht hat. Es geht dabei um den Eigensinn ikonischer, choreographischer, filmischer oder architektonischer Artefakte, um die Analog-digital-Differenz, um die medialen Voraussetzungen in der Massenproduktion und -reproduktion von Kunst sowie um die Funktion von Medien bei der Verbreitung, Kommentierung und Archivierung k\u00fcnstlerischer Arbeit bis hin zum Einsatz von KI im Schaffensprozess. Jede Kunst kann in diesem Sinne als Medienkunst gelten, wenn und weil sie mit Medien reflexiv und kritisch arbeitet und aufzeigt, wie diese arbeiten.<br\/><br\/>Mit Beitr\u00e4gen von Florian Arnold, Johannes Bennke, Kathrin Busch, Christian Gr\u00fcny, Christoph Haffter, Dieter Mersch, Alva No\u00eb, Mirjam Schaub, Ludger Schwarte, Martin Seel, J. Emil Sennewald, Luca Viglialoro, Christiane Voss und Lambert Wiesing.","46869":"Medienkunst gibt es nicht erst, seitdem technische Medien sich ins Kunstgeschehen einschalten. Vielmehr gab es medienfreie K\u00fcnste noch nie, ob man unter Medien Bild, Klang, Licht, Raum oder Sprache versteht. Ebenso wenig sind Materialien wie Marmor oder Bronze, T\u00f6ne oder Farben einem Kunstwerk jemals \u00e4u\u00dferlich, vielmehr entsteht \u00e4sthetische Bedeutung erst durch die jeweilige medial-materielle Konfiguration und lie\u00dfe sich ohne sie gar nicht artikulieren.<br\/><br\/>Der Band dokumentiert eine Auswahl der Beitr\u00e4ge zum XII. Kongress der Deutschen Gesellschaft f\u00fcr \u00c4sthetik in Fribourg, der medientheoretische Fragen in historischer oder zeitgen\u00f6ssischer, in systematischer oder angewandter Absicht zum Thema gemacht hat. Es geht dabei um den Eigensinn ikonischer, choreographischer, filmischer oder architektonischer Artefakte, um die Analog-digital-Differenz, um die medialen Voraussetzungen in der Massenproduktion und -reproduktion von Kunst sowie um die Funktion von Medien bei der Verbreitung, Kommentierung und Archiv
15028ierung k\u00fcnstlerischer Arbeit bis hin zum Einsatz von KI im Schaffensprozess. Jede Kunst kann in diesem Sinne als Medienkunst gelten, wenn und weil sie mit Medien reflexiv und kritisch arbeitet und aufzeigt, wie diese arbeiten.<br\/><br\/>Mit Beitr\u00e4gen von Florian Arnold, Johannes Bennke, Kathrin Busch, Christian Gr\u00fcny, Christoph Haffter, Dieter Mersch, Alva No\u00eb, Mirjam Schaub, Ludger Schwarte, Martin Seel, J. Emil Sennewald, Luca Viglialoro, Christiane Voss und Lambert Wiesing."},"doi":{"46489":"","46869":"10.28937\/978-3-7873-4957-9"},"isbn":{"46489":"978-3-7873-4956-2","46869":"978-3-7873-4957-9"},"marketing_short_text":{"46489":"","46869":""},"recension_text":{"46489":"","46869":""},"language":{"46489":"","46869":""},"cover":{"46489":"Kartoniert","46869":""},"pages":{"46489":"230 Seiten","46869":"230 Seiten"},"edition":{"46489":"","46869":"Unver\u00e4ndertes eBook der 1. Auflage von 2026"},"pod":{"46489":"Nein","46869":"Nein"},"copyright_year":{"46489":"","46869":""},"vlb_tix_link":{"46489":"https:\/\/neu.vlbtix.de\/products\/9783787349562?type=gtin","46869":""},"defaultValues":{"163":"15"}};
15029            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
15030
15031            if (typeof window.amxnotif_wrap_attributes === 'function') {
15032                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
15033                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
15034            }
15035
15036            const configurableOptionsComponent = initConfigurableOptions(
15037                '46700',
15038                config
15039            );
15040            const swatchOptionsComponent = initSwatchOptions(
15041                swatchConfig
15042            );
15043
15044            // DWS - Configurable product preselect start
15045            const confProdPreSelect = () => {
15046                return {
15047                    preselectQuerystringItems() {
15048                        var data = {"id":"46489","output":"15"};
15049                        const urlQueryParams = new URLSearchParams(window.location.search);
15050
15051                                                this.$nextTick(() => {
15052                            setTimeout(() => {
15053                                const rootEl = this.$root || this.$el;
15054                                if (!rootEl) return;
15055
15056                                const applySelection = (attrCode, attrValue) => {
15057                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
15058
15059                                    const attributes = Object.values(this.optionConfig.attributes || {});
15060                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
15061
15062                                    if (targetAttr) {
15063                                        const attrId = String(targetAttr.id);
15064                                        const optionVal = String(attrValue);
15065
15066                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
15067
15068                                        if (inputEl) {
15069                                                                                        inputEl.click();
15070                                            inputEl.dispatchEvent(new Event('change', {
15071                                                bubbles: true
15072                                            }));
15073                                        } else {
15074                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
15075                                            if (selectEl) {
15076                                                selectEl.value = optionVal;
15077                                                selectEl.dispatchEvent(new Event('change', {
15078                                                    bubbles: true
15079                                                }));
15080                                            }
15081                                        }
15082
15083                                                                                this.changeOption(attrId, optionVal, false);
15084                                    }
15085                                };
15086
15087                                                                if (data && typeof data === 'object') {
15088                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
15089                                }
15090
15091                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
15092                                    if (attribute && attribute.code) {
15093                                        let optionValue = urlQueryParams.get(attribute.code);
15094                                        if (optionValue) {
15095                                            let optionId = false;
15096                                            const attributes = Object.values(this.optionConfig.attributes || {});
15097                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
15098
15099                                            let found = false;
15100                                            Object.values(targetAttr.options).map(option => {
15101                                                if (found === false && option.label === optionValue) {
15102                                                    optionId = option.id;
15103                                                    found = true;
15104                                                }
15105                                            });
15106
15107                                            const attrId = String(targetAttr.id);
15108                                            let optionVal = String(optionValue);
15109                                            if (found) {
15110                                                optionVal = String(optionId);
15111                                            }
15112
15113                                            applySelection(attribute.code, optionVal);
15114                                        }
15115                                    }
15116                                });
15117                            }, 100);
15118                        });
15119                    }
15120                }
15121            };
15122            // DWS - Configurable product preselect end
15123
15124            const result = Object.assign(
15125                configurableOptionsComponent,
15126                swatchOptionsComponent, {
15127                    productId: '46700',
15128                    productIndex: 0,
15129                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
15130                    showSwatches: false,
15131                    precalcOptions: {},
15132                    originalInit: configurableOptionsComponent.init,
15133                    init() {
15134                        try {
15135                            this.precalcOptions = {};
15136                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
15137                            this.preselectQuerystringItems();
15138                            if (Array.isArray(attrSource)) {
15139                                attrSource.forEach(attr => {
15140                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
15141                                });
15142                            } else if (attrSource && typeof attrSource === 'object') {
15143                                Object.keys(attrSource).forEach(id => {
15144                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
15145                                });
15146                            }
15147                        } catch (e) {
15148                            console.error('Pre-calc error:', e);
15149                        }
15150
15151                        if (typeof this.originalInit === 'function') {
15152                            this.originalInit();
15153                        }
15154
15155                        try {
15156                            this.initShowSwatchesIntersect();
15157                        } catch (e) {
15158                            console.error('intersect error:', e);
15159                        }
15160                    },
15161
15162                    updateGallery() {
15163                        if (!this.productIndex) return;
15164
15165                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
15166                                method: 'GET',
15167                                headers: {
15168                                    'Content-Type': 'application/json',
15169                                    'X-Requested-With': 'XMLHttpRequest'
15170                                }
15171                            })
15172                            .then(response => response.json())
15173                            .then(data => {
15174                                if (data && data.medium) {
15175                                    window.dispatchEvent(new CustomEvent("update-gallery-46700", {
15176                                        detail: data.medium
15177                                    }));
15178                                }
15179                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
15180                    },
15181
15182
15183                    initShowSwatchesIntersect() {
15184                        const observer = new IntersectionObserver(entries => {
15185                            if (entries[0].isIntersecting) {
15186                                this.showSwatches = true;
15187                                observer.disconnect();
15188                            }
15189                        }, {
15190                            rootMargin: '512px'
15191                        });
15192                        observer.observe(this.$el);
15193                    },
15194                    getOptions(attrId) {
15195                        return this.precalcOptions[attrId] || [];
15196                    },
15197                    getOptionsByAttrId() {
15198                        return this.getOptions(this.$el.dataset.attributeId);
15199                    },
15200                    _getItemId() {
15201                        if (this.item && this.item.id) return this.item.id;
15202                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
15203                    },
15204                    getSwatchOptionHtmlId() {
15205                        const itemId = this._getItemId();
15206                        return itemId ? this.$id(`attribute-option-46700-${itemId}`) : '';
15207                    },
15208                    getSwatchOptionHtmlIdGroup() {
15209                        const itemId = this._getItemId();
15210                        return itemId ? [`attribute-option-46700-${itemId}`] : [];
15211                    },
15212                    getAttributeSwatchData(attributeId) {
15213                        const data = Object.assign({}, this.swatchConfig[attributeId]);
15214                        if (data['additional_data']) {
15215                            try {
15216                                data['details'] = JSON.parse(data['additional_data']);
15217                            } catch (e) {
15218                                data['details'] = {};
15219                            }
15220                        }
15221                        return data;
15222                    },
15223                    getSwatchType(attributeId, optionId) {
15224                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
15225                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
15226                        }
15227                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
15228                            this.swatchConfig[attributeId].details.swatch_input_type :
15229                            "empty";
15230                        if (type === 'visual') {
15231                            const config = this.swatchConfig[attributeId];
15232                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
15233                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
15234                            }
15235                            // Fallback to first option type
15236                            for (const oId in config) {
15237                                if (config[oId] && typeof config[oId].type !== 'undefined') {
15238                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
15239                                }
15240                            }
15241                        }
15242                        return type;
15243                    },
15244                    mapSwatchTypeNumberToTypeCode(type) {
15245                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
15246                    },
15247                    isTextSwatch() {
15248                        const itemId = this._getItemId();
15249                        if (!this.$el || !itemId) return false;
15250                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
15251                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
15252                    },
15253
15254                    getSwatchText() {
15255                        const itemId = this._getItemId();
15256                        if (this.item) return this.item.label || '';
15257                        if (!this.$el || !itemId) return '';
15258                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
15259                        const options = attrId ? this.getOptions(attrId) : [];
15260                        const opt = options.find(o => o.id == itemId);
15261                        return opt ? opt.label : '';
15262                    },
15263                    getSwatchBackgroundStyle() {
15264                        const itemId = this._getItemId();
15265                        if (!this.$el || !itemId) return '';
15266                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
15267                        if (!attrId) return '';
15268                        const type = this.getSwatchType(attrId, itemId);
15269                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
15270                            this.swatchConfig[attrId][itemId] :
15271                            null;
15272                        if (!swatchData) return '';
15273                        if (type === "color") return 'background-color:' + swatchData.value;
15274                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
15275                        return '';
15276                    },
15277                    swatchOptionClasses() {
15278                        const itemId = this._getItemId();
15279                        if (!this.$el || !itemId) return {};
15280                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
15281                        return {
15282                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
15283                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
15284                            'w-6 h-6': !this.isTextSwatch()
15285                        }
15286                    },
15287
15288                    onFocusSwatchItem() {
15289                        const itemId = this._getItemId();
15290                        if (itemId) this.focusedLabel = itemId;
15291                    },
15292                    onChangeOption() {
15293                        const itemId = this._getItemId();
15294                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
15295                        if (attrId && itemId) this.changeOption(attrId, itemId);
15296                    },
15297                    changeOption(attributeId, value) {
15298                        if (value === '') {
15299                            return;
15300                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
15301                        } else {
15302                            this.selectedValues[attributeId] = value;
15303                        }
15304
15305                        this.findSimpleIndex();
15306                        this.findAllowedAttributeOptions();
15307                        this.updatePrices();
15308                        this.updateGallery();
15309
15310                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
15311                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
15312
15313                        const eventDetail = {
15314                            productId: this.productId,
15315                            optionId: attributeId,
15316                            value: value,
15317                            productIndex: this.productIndex || 0,
15318                            selectedValues: this.selectedValues,
15319                            candidates: candidates,
15320                            sourceElement: this.$el
15321                        };
15322
15323                        // Dispatch for Amasty
15324                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
15325                            detail: eventDetail
15326                        }));
15327
15328                        // Dispatch for Hyva listing
15329                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
15330                            detail: eventDetail
15331                        }));
15332                    },
15333
15334
15335                    clearOptionIfActive() {
15336                        const itemId = this._getItemId();
15337                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
15338                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
15339                            this.changeOption(attrId, '');
15340
15341                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
15342                            if (!input && this.$el?.querySelector) {
15343                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
15344                            }
15345                            if (!input && this.$el?.closest) {
15346                                const root = this.$el.closest('[data-product-id]') || this.$el;
15347                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
15348                            }
15349                            if (input) {
15350                                input.checked = false;
15351                            }
15352                        }
15353                    },
15354                    get optionIsEnabled() {
15355                        const itemId = this._getItemId();
15356                        if (!this.$el || !itemId) return true;
15357                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
15358                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
15359                        return !!allowedOptions.find(opt => opt.id == itemId);
15360                    },
15361                    get isSelected() {
15362                        const itemId = this._getItemId();
15363                        if (!this.$el || !itemId) return false;
15364                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
15365                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
15366                    },
15367                    get isSwatchRequired() {
15368                        if (!this.$el) return false;
15369                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
15370                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
15371                    },
15372                    focusedLabel: false,
15373                    activeTooltipItem: false,
15374                    tooltipPositionElement: false,
15375                    setActiveTooltipItem() {
15376                        const itemId = this._getItemId();
15377                        if (!this.$el || !itemId) return;
15378                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
15379                        this.activeTooltipItem = {
15380                            attribute: attrId,
15381                            item: itemId,
15382                            index: 0
15383                        };
15384                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
15385                    },
15386                    unsetActiveTooltipItem() {
15387                        this.activeTooltipItem = false;
15388                    }
15389                },
15390                confProdPreSelect()
15391            );
15392
15393            if (result.optionConfig && result.optionConfig.attributes) {
15394                const attributes = result.optionConfig.attributes;
15395                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
15396                    let source = attributes;
15397                    if (Array.isArray(attributes)) {
15398                        source = {};
15399                        attributes.forEach(attr => {
15400                            if (attr && attr.id) source[attr.id] = attr;
15401                        });
15402                    }
15403                    const values = Object.values(source);
15404                    const wrapper = Object.assign(values, source);
15405                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
15406                        value: true,
15407                        enumerable: false
15408                    });
15409                    result.optionConfig.attributes = wrapper;
15410                }
15411            }
15412
15413            return result;
15414        }
15415
15416        window.addEventListener('alpine:init', () => {
15417            Alpine.data('initConfigurableSwatchOptions_46700', initConfigurableSwatchOptions_46700);
15418        }, {
15419            once: true
15420        });
15421    </script>
15421
15422    
15423    <div x-data="initConfigurableSwatchOptions_46700" x-defer="intersect">
15424        <div class="pagebuilder-home-hidden">
15425                                            
15426                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
15427                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
15428                        <template x-if="showSwatches">
15429                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-46700-163" role="radiogroup" aria-label="Einband">
15430                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
15431                                    <div :data-option-id="item.id" style="display: contents">
15432                                        <div x-id="getSwatchOptionHtmlIdGroup">
15433    <template x-if="optionIsEnabled">
15434        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
15434self="unsetActiveTooltipItem">
15435            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-46700-163">
15436            <div>
15437                <template x-if="isTextSwatch">
15438                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
15439                </template>
15440                <template x-if="!optionIsActive(163, item.id)">
15441                    <div>
15442                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
15443                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
15444                        </svg>
15445                    </div>
15446                </template>
15447            </div>
15448        </label>
15449    </template>
15450</div>                                    </div>
15451                                </template>
15452                            </div>
15453                        </template>
15454                    </div>
15455                </div>
15456                    </div>
15457    </div>
15458            
15459                                                <div class="meta py-4 pagebuilder-home-hidden">
15460                <div x-data="initMarketingShortText_46700()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
15461                    <!-- Marketing short text -->
15462                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
15463                    </div>
15464
15465                    <!-- Short description -->
15466                                                                <div class="short-description">
15467                            Medienkunst gibt es nicht erst, seitdem technische Medien sich ins Kunstgeschehen einschalten. Vielmehr gab es medienfreie K&uuml;nste noch nie, ob man unter Medien Bild, Klang, Licht, Raum oder ...                            <a href="https://meiner.de/fmv_de/ka-nste-der-medien-medien-der-ka-nste-17995" class="underline">mehr</a>
15468                        </div>
15469                                    </div>
15470
15471                <!-- Series  -->
15472                                    <div class="mb-1">
15473                        <span class="sr-only">Reihe:</span>
15474                        <a href="https://meiner.de/fmv_de/programm/reihen/zeitschrift-fur-asthetik-und-allgemeine-kunstwissenschaft-sonderhefte">
15475                            <span>Zeitschrift f&uuml;r &Auml;sthetik und Allgemeine Kunstwissenschaft - Sonderhefte</span>
15476                        </a>
15477                                                    27                                            </div>
15478                
15479                
15480                                                    <div class="mb-1">
15481                        <span x-data="initEditionText_46700()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
15482                            <!-- Marketing short text -->
15483                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 230 Seiten                        </span>
15484                    </div>
15485                
15486                            </div>
15487            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
15488                
15489                <div class="justify-end" x-data="initPriceBox()" @update-prices-46700.window="updatePrice($event.detail);">
15490                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="46700" data-price-box="product-id-46700"><span class="normal-price">
15491    <span x-data x-id="['product\u002Dprice\u002D46700']" class="price-container price-final_price tax weee">
15492            <span class="price-label">Ab</span>
15493                <span class="approx-price">ca. </span>
15494        <span :id="$id('product\u002Dprice\u002D46700')" data-price-amount="74.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">74,99&nbsp;&euro;</span></span>
15495        </span>
15496</span>
15497
15498
15499</div>                </div>
15500
15501                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
15502                                            <div class="open-access-container open-access-container-46700                    flex mt-4 ml-auto sm:mt-0 hidden">
15503                            <div class="text-gray-700">
15504                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
15505                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
15506                                        Kostenlos online lesen                                    </a>
15507                                </button>
15508                            </div>
15509                        </div>
15510                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb K&uuml;nste der Medien / Medien der K&uuml;nste" aria-label="In den Warenkorb K&uuml;nste der Medien / Medien der K&uuml;nste" data-addto="cart">
15511                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
15512  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
15513</svg>
15514                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
15515                                        In den Warenkorb                                    </span>
15516                                </button>
15517                                                                                                                    
15518<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(46700)" aria-label="Zur Wunschliste hinzuf&uuml;gen K&uuml;nste der Medien / Medien der K&uuml;nste" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
15519    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
15520  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
15521</svg>
15522</button>
15523                                    </div>
15524            </div>
15525        </div>
15526        
15526<script>
15527            function initMarketingShortText_46700() {
15528                var marketingShortTextConfig = {};
15529                if (typeof window.initConfigurableSwatchOptions_46700 === "function") {
15530                    var fullConfig = window.initConfigurableSwatchOptions_46700().optionConfig
15531                    var marketingShortTextConfig = fullConfig.marketing_short_text;
15532                }
15533                return {
15534                    marketingShortText: '',
15535                    config: marketingShortTextConfig,
15536                    productId: '46700',
15537                    getMarketingShortText(detail) {
15538                        this.marketingShortText = detail.productIndex ?
15539                            this.config[detail.productIndex] :
15540                            null;
15541                    },
15542                    eventListeners: {
15543                        ['@listing-configurable-selection-changed.window'](event) {
15544                            if (this.productId == event.detail.productId) {
15545                                this.getMarketingShortText(event.detail);
15546                            }
15547
15548                        }
15549                    }
15550                }
15551            }
15552
15553            function initEditionText_46700() {
15554                var editionTextConfig = {};
15555                if (typeof window.initConfigurableSwatchOptions_46700 === "function") {
15556                    var fullConfig = window.initConfigurableSwatchOptions_46700().optionConfig
15557                    var editionTextConfig = fullConfig.edition;
15558                }
15559                return {
15560                    editionText: '',
15561                    config: editionTextConfig,
15562                    productId: '46700',
15563                    getEditionText(detail) {
15564                        this.editionText = detail.productIndex ?
15565                            this.config[detail.productIndex] :
15566                            null;
15567                    },
15568                    eventListeners: {
15569                        ['@listing-configurable-selection-changed.window'](event) {
15570                            if (this.productId == event.detail.productId) {
15571                                this.getEditionText(event.detail);
15572                            }
15573
15574                        }
15575                    }
15576                }
15577            }
15578        </script>
15578
15579                    </form>
15580                            
15581    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/46696/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk16806">
15582        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="46696">
15583                                    <a href="https://meiner.de/fmv_de/das-groa-e-ruhen-und-kontemplieren-16806" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
15584            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-46696.window="$el.src = $event.detail" alt="Das Gro&szlig;e Ruhen und Kontemplieren" title="Das Gro&szlig;e Ruhen und Kontemplieren" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787345922_1.jpg" :style="{
15585                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
15586                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
15587            }">
15588                    </a>
15589        <div class="product-info flex flex-col flex-grow ">
15590                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
15591                                    <div class="mb-2 text-sm text-gray-500 font-medium">
15592                                                                                    <a href="https://meiner.de/fmv_de/person/Zhiyi-21155/" class="mb-2">
15593                                    Zh&igrave;y&#464;                                                                    </a>
15594                                                                                                                                    </div>
15595                                <a class="product-item-link" href="https://meiner.de/fmv_de/das-groa-e-ruhen-und-kontemplieren-16806">
15596                    Das Gro&szlig;e Ruhen und Kontemplieren                </a>
15597                            </div>
15598
15599            <div x-data="initEditionText_46696()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
15600                <!-- Marketing short text -->
15601                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
15602                </div>
15603            </div>
15604
15605                            <div class="py-1 grid  mb-4 ">
15606                    
15607                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":46696,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":46696,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"45602":"1","47037":"1"},"childProductsAlertStatus":{"45602":"0","47037":"0"},"indexMapping":{"163:11":45602,"163:8":47037},"availabilityMessages":{"45602":"Lieferbar innerhalb von 3-5 Tagen","47037":"Download sofort  verf\u00fcgbar"},"openAccess":{"46696":{"status":0},"45602":{"status":0},"47037":{"status":0}}},"availabilityMessages":{"45602":"Lieferbar innerhalb von 3-5 Tagen","47037":"Download sofort  verf\u00fcgbar"},"openAccess":{"46696":{"status":0},"45602":{"status":0},"47037":{"status":0}}}'>
15608        <template x-if="containerVisible">
15609                            <!-- Popup Trigger -->
15610                <div>
15611                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
15612                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
15613                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
15614  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
15615<title>bell</title></svg>
15616</span>
15617                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
15618
15619                    <!-- Popup Modal -->
15620                    <template x-if="showModal">
15621                        <template x-teleport=".page-wrapper">
15622                            <div x-cloak class="fixed inset-0 flex items-center justify-center
15623                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
15624                                <div class="relative bg-white rounded-lg shadow-xl
15625                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
15626                                    <div class="p-6">
15627                                        <!-- Subscription Form for Popup -->
15628                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
15629                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
15630                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
15631                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
15632
15633                                            <div class="flex flex-col gap-3">
15634                                                <div class="flex-grow grow">
15635                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
15636                                                        shadow-xs focus:outline-none focus:outline-hidden
15637                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
15638                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
15639                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
15640                                                </div>
15641                                                <input type="hidden" name="product_id" :value="currentProductId">
15642                                                <input type="hidden" name="type" value="email">
15643
15644                                                
15645                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
15646
15647                                                <div class="amxnotif_guest_action">
15648                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
15649                                                        rounded-md focus:outline-none
15650                                                        focus:outline-hidden focus:ring-2
15651                                                        focus:ring-offset-2 disabled:opacity-50
15652                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
15653                                                        Benachrichtigen                                                    </button>
15654                                                </div>
15655                                            </div>
15656
15657                                                                                            <div class="flex items-start pt-2">
15658                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
15659                                                        text-blue-600 border-gray-300 rounded-sm">
15660                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
15661                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
15662                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
15663                                                </div>
15664                                                                                    </form>
15665                                    </div>
15666
15667                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
15668                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
15669                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
15670  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
15671<title>x</title></svg>
15672                                    </button>
15673                                </div>
15674                            </div>
15675                        </template>
15676                    </template>
15677                </div>
15678                    </template>
15679    </div>
15680
15681<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_46696" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":46696,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"45602":"1","47037":"1"},"childProductsAlertStatus":{"45602":"0","47037":"0"},"indexMapping":"{\u0022163:11\u0022:45602,\u0022163:8\u0022:47037}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":46696,"availabilityMessages":{"45602":"Lieferbar innerhalb von 3-5 Tagen","47037":"Download sofort  verf\u00fcgbar"},"openAccess":{"46696":{"status":0},"45602":{"status":0},"47037":{"status":0}}}'>
15682    
15683    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
15684        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
15685        <span x-html="optionsLabelText"></span>
15686    </p>
15687</div>                </div>
15688            
15689                                
15689<script>
15690        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
15691            try {
15692                const attributes = (config && config.attributes) ? config.attributes : null;
15693                if (!attributes) return [];
15694                let attr = null;
15695                if (Array.isArray(attributes)) {
15696                    for (let i = 0; i < attributes.length; i++) {
15697                        const a = attributes[i];
15698                        if (a && a.id == attrId) {
15699                            attr = a;
15700                            break;
15701                        }
15702                    }
15703                } else {
15704                    attr = attributes[attrId];
15705                }
15706                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
15707            } catch (e) {
15708                return [];
15709            }
15710        };
15711
15712        function initConfigurableSwatchOptions_46696() {
15713            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"11","label":"Gebunden","products":["45602"]},{"id":"8","label":"PDF","products":["47037"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"45602":{"baseOldPrice":{"amount":232.71027937383},"oldPrice":{"amount":249},"basePrice":{"amount":232.71027937383},"finalPrice":{"amount":249},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47037":{"baseOldPrice":{"amount":177.56074666355},"oldPrice":{"amount":189.99},"basePrice":{"amount":177.56074666355},"finalPrice":{"amount":189.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":177.56074666355},"oldPrice":{"amount":189.99},"basePrice":{"amount":159.65546118487},"finalPrice":{"amount":189.99},"isApproxPrice":null},"productId":"46696","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"45602":{"163":"11"},"47037":{"163":"8"}},"salable":{"163":{"11":["45602"],"8":["47037"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"45602":"004591","47037":"004592"},"output":{"45602":"Gebunden","47037":"PDF"},"original_name":{"45602":"M\u00f3h\u0113 zh\u01d0gu\u0101n","47037":"M\u00f3h\u0113 zh\u01d0gu\u0101n"},"openaccess_license_link":{"45602":"","47037":""},"openaccess_license_name":{"45602":"","47037":""},"openaccess_external_link":{"45602":"","47037":""},"gpsr_safety_info":{"45602":"","47037":""},"description":{"45602":"In der ostasiatischen Tradition des Mah\u0101y\u0101na gilt die Tiantai-Lehre als eine der ersten und historisch einflussreichsten Schulen des chinesischen Buddhismus. Eines der fr\u00fchen Hauptwerke, das noch heute als Lehrgrundlage f\u00fcr Praktizierende in ganz Ostasien dient, wurde von dem gelehrten M\u00f6nch Zh\u00ecy\u01d0 (538\u2013597) verfasst und tr\u00e4gt den Titel \u00bbDas gro\u00dfe Ruhen und Kontemplieren\u00ab. <br\/><br\/>Sein umfangreicher Textkorpus ber\u00fccksichtigt die damals in China bekannte indisch-buddhistische Lehrliteratur, die ab dem zweiten Jahrhundert n. Chr. in die klassische chinesische Schriftsprache \u00fcbersetzt wurde. Es ist der erste Text der chinesischen Tradition, der eine komplexe Hermeneutik vorlegt, die der doktrin\u00e4ren Vielfalt in der \u00fcbersetzten Lehrliteratur eine innere Einheit zuspricht und das Erfassen derselben mit der Introspektion, das hei\u00dft mit der geistigen Selbstbeobachtung, verkn\u00fcpft. In dieser Verbindung definiert der Text nicht nur das Wesen der buddhistischen Praxis, sondern entwickelt auch eine an der Exegese ausgerichteten Theorie von ihr. <br\/><br\/>\u00bbDas allumschlie\u00dfende Dekonstruieren\u00ab ist das philosophisch relevanteste Kapitel, da es sich mit der wahren Erkenntnis aller T\u00e4uschungen und der existenziellen Bedeutung dieser Erkenntnis sowie der der T\u00e4uschung besch\u00e4ftigt. Mit der philosophischen Praxis des dekonstruierenden Kontemplierens der Geistesaktivit\u00e4t beschreibt Zh\u00ecy\u01d0s Werk die ambivalente Signifikanz des unausweichlichen Scheins f\u00fcr die Gestaltung unseres Daseins, die sich in der Einheit von vita contemplativa und vita activa erf\u00fcllt.","47037":"In der ostasiatischen Tradition des Mah\u0101y\u0101na gilt die Tiantai-Lehre als eine der ersten und historisch einflussreichsten Schulen des chinesischen Buddhismus. Eines der fr\u00fchen Hauptwerke, das noch heute als Lehrgrundlage f\u00fcr Praktizierende in ganz Ostasien dient, wurde von dem gelehrten M\u00f6nch Zh\u00ecy\u01d0 (538\u2013597) verfasst und tr\u00e4gt den Titel \u00bbDas gro\u00dfe Ruhen und 
15713Kontemplieren\u00ab. <br\/><br\/>Sein umfangreicher Textkorpus ber\u00fccksichtigt die damals in China bekannte indisch-buddhistische Lehrliteratur, die ab dem zweiten Jahrhundert n. Chr. in die klassische chinesische Schriftsprache \u00fcbersetzt wurde. Es ist der erste Text der chinesischen Tradition, der eine komplexe Hermeneutik vorlegt, die der doktrin\u00e4ren Vielfalt in der \u00fcbersetzten Lehrliteratur eine innere Einheit zuspricht und das Erfassen derselben mit der Introspektion, das hei\u00dft mit der geistigen Selbstbeobachtung, verkn\u00fcpft. In dieser Verbindung definiert der Text nicht nur das Wesen der buddhistischen Praxis, sondern entwickelt auch eine an der Exegese ausgerichteten Theorie von ihr. <br\/><br\/>\u00bbDas allumschlie\u00dfende Dekonstruieren\u00ab ist das philosophisch relevanteste Kapitel, da es sich mit der wahren Erkenntnis aller T\u00e4uschungen und der existenziellen Bedeutung dieser Erkenntnis sowie der der T\u00e4uschung besch\u00e4ftigt. Mit der philosophischen Praxis des dekonstruierenden Kontemplierens der Geistesaktivit\u00e4t beschreibt Zh\u00ecy\u01d0s Werk die ambivalente Signifikanz des unausweichlichen Scheins f\u00fcr die Gestaltung unseres Daseins, die sich in der Einheit von vita contemplativa und vita activa erf\u00fcllt."},"doi":{"45602":"","47037":"10.28937\/978-3-7873-4592-2"},"isbn":{"45602":"978-3-7873-4591-5","47037":"978-3-7873-4592-2"},"marketing_short_text":{"45602":"","47037":""},"recension_text":{"45602":"","47037":""},"language":{"45602":"","47037":""},"cover":{"45602":"Gebunden","47037":""},"pages":{"45602":"928 Seiten.","47037":"928 Seiten."},"edition":{"45602":"","47037":"Unver\u00e4ndertes eBook der 1. Auflage von 2026"},"pod":{"45602":"Nein","47037":"Nein"},"copyright_year":{"45602":"","47037":""},"vlb_tix_link":{"45602":"https:\/\/neu.vlbtix.de\/products\/9783787345915?type=gtin","47037":""},"defaultValues":{"163":"11"}};
15714            const swatchConfig = {"163":{"11":{"type":"0","value":"Gebunden","label":"Gebunden"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
15715
15716            if (typeof window.amxnotif_wrap_attributes === 'function') {
15717                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
15718                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
15719            }
15720
15721            const configurableOptionsComponent = initConfigurableOptions(
15722                '46696',
15723                config
15724            );
15725            const swatchOptionsComponent = initSwatchOptions(
15726                swatchConfig
15727            );
15728
15729            // DWS - Configurable product preselect start
15730            const confProdPreSelect = () => {
15731                return {
15732                    preselectQuerystringItems() {
15733                        var data = {"id":"45602","output":"11"};
15734                        const urlQueryParams = new URLSearchParams(window.location.search);
15735
15736                                                this.$nextTick(() => {
15737                            setTimeout(() => {
15738                                const rootEl = this.$root || this.$el;
15739                                if (!rootEl) return;
15740
15741                                const applySelection = (attrCode, attrValue) => {
15742                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
15743
15744                                    const attributes = Object.values(this.optionConfig.attributes || {});
15745                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
15746
15747                                    if (targetAttr) {
15748                                        const attrId = String(targetAttr.id);
15749                                        const optionVal = String(attrValue);
15750
15751                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
15752
15753                                        if (inputEl) {
15754                                                                                        inputEl.click();
15755                                            inputEl.dispatchEvent(new Event('change', {
15756                                                bubbles: true
15757                                            }));
15758                                        } else {
15759                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
15760                                            if (selectEl) {
15761                                                selectEl.value = optionVal;
15762                                                selectEl.dispatchEvent(new Event('change', {
15763                                                    bubbles: true
15764                                                }));
15765                                            }
15766                                        }
15767
15768                                                                                this.changeOption(attrId, optionVal, false);
15769                                    }
15770                                };
15771
15772                                                                if (data && typeof data === 'object') {
15773                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
15774                                }
15775
15776                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
15777                                    if (attribute && attribute.code) {
15778                                        let optionValue = urlQueryParams.get(attribute.code);
15779                                        if (optionValue) {
15780                                            let optionId = false;
15781                                            const attributes = Object.values(this.optionConfig.attributes || {});
15782                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
15783
15784                                            let found = false;
15785                                            Object.values(targetAttr.options).map(option => {
15786                                                if (found === false && option.label === optionValue) {
15787                                                    optionId = option.id;
15788                                                    found = true;
15789                                                }
15790                                            });
15791
15792                                            const attrId = String(targetAttr.id);
15793                                            let optionVal = String(optionValue);
15794                                            if (found) {
15795                                                optionVal = String(optionId);
15796                                            }
15797
15798                                            applySelection(attribute.code, optionVal);
15799                                        }
15800                                    }
15801                                });
15802                            }, 100);
15803                        });
15804                    }
15805                }
15806            };
15807            // DWS - Configurable product preselect end
15808
15809            const result = Object.assign(
15810                configurableOptionsComponent,
15811                swatchOptionsComponent, {
15812                    productId: '46696',
15813                    productIndex: 0,
15814                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
15815                    showSwatches: false,
15816                    precalcOptions: {},
15817                    originalInit: configurableOptionsComponent.init,
15818                    init() {
15819                        try {
15820                            this.precalcOptions = {};
15821                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
15822                            this.preselectQuerystringItems();
15823                            if (Array.isArray(attrSource)) {
15824                                attrSource.forEach(attr => {
15825                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
15826                                });
15827                            } else if (attrSource && typeof attrSource === 'object') {
15828                                Object.keys(attrSource).forEach(id => {
15829                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
15830                                });
15831                            }
15832                        } catch (e) {
15833                            console.error('Pre-calc error:', e);
15834                        }
15835
15836                        if (typeof this.originalInit === 'function') {
15837                            this.originalInit();
15838                        }
15839
15840                        try {
15841                            this.initShowSwatchesIntersect();
15842                        } catch (e) {
15843                            console.error('intersect error:', e);
15844                        }
15845                    },
15846
15847                    updateGallery() {
15848                        if (!this.productIndex) return;
15849
15850                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
15851                                method: 'GET',
15852                                headers: {
15853                                    'Content-Type': 'application/json',
15854                                    'X-Requested-With': 'XMLHttpRequest'
15855                                }
15856                            })
15857                            .then(response => response.json())
15858                            .then(data => {
15859                                if (data && data.medium) {
15860                                    window.dispatchEvent(new CustomEvent("update-gallery-46696", {
15861                                        detail: data.medium
15862                                    }));
15863                                }
15864                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
15865                    },
15866
15867
15868                    initShowSwatchesIntersect() {
15869                        const observer = new IntersectionObserver(entries => {
15870                            if (entries[0].isIntersecting) {
15871                                this.showSwatches = true;
15872                                observer.disconnect();
15873                            }
15874                        }, {
15875                            rootMargin: '512px'
15876                        });
15877                        observer.observe(this.$el);
15878                    },
15879                    getOptions(attrId) {
15880                        return this.precalcOptions[attrId] || [];
15881                    },
15882                    getOptionsByAttrId() {
15883                        return this.getOptions(this.$el.dataset.attributeId);
15884                    },
15885                    _getItemId() {
15886                        if (this.item && this.item.id) return this.item.id;
15887                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
15888                    },
15889                    getSwatchOptionHtmlId() {
15890                        const itemId = this._getItemId();
15891                        return itemId ? this.$id(`attribute-option-46696-${itemId}`) : '';
15892                    },
15893                    getSwatchOptionHtmlIdGroup() {
15894                        const itemId = this._getItemId();
15895                        return itemId ? [`attribute-option-46696-${itemId}`] : [];
15896                    },
15897                    getAttributeSwatchData(attributeId) {
15898                        const data = Object.assign({}, this.swatchConfig[attributeId]);
15899                        if (data['additional_data']) {
15900                            try {
15901                                data['details'] = JSON.parse(data['additional_data']);
15902                            } catch (e) {
15903                                data['details'] = {};
15904                            }
15905                        }
15906                        return data;
15907                    },
15908                    getSwatchType(attributeId, optionId) {
15909                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
15910                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
15911                        }
15912                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
15913                            this.swatchConfig[attributeId].details.swatch_input_type :
15914                            "empty";
15915                        if (type === 'visual') {
15916                            const config = this.swatchConfig[attributeId];
15917                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
15918                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
15919                            }
15920                            // Fallback to first option type
15921                            for (const oId in config) {
15922                                if (config[oId] && typeof config[oId].type !== 'undefined') {
15923                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
15924                                }
15925                            }
15926                        }
15927                        return type;
15928                    },
15929                    mapSwatchTypeNumberToTypeCode(type) {
15930                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
15931                    },
15932                    isTextSwatch() {
15933                        const itemId = this._getItemId();
15934                        if (!this.$el || !itemId) return false;
15935                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
15936                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
15937                    },
15938
15939                    getSwatchText() {
15940                        const itemId = this._getItemId();
15941                        if (this.item) return this.item.label || '';
15942                        if (!this.$el || !itemId) return '';
15943                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
15944                        const options = attrId ? this.getOptions(attrId) : [];
15945                        const opt = options.find(o => o.id == itemId);
15946                        return opt ? opt.label : '';
15947                    },
15948                    getSwatchBackgroundStyle() {
15949                        const itemId = this._getItemId();
15950                        if (!this.$el || !itemId) return '';
15951                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
15952                        if (!attrId) return '';
15953                        const type = this.getSwatchType(attrId, itemId);
15954                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
15955                            this.swatchConfig[attrId][itemId] :
15956                            null;
15957                        if (!swatchData) return '';
15958                        if (type === "color") return 'background-color:' + swatchData.value;
15959                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
15960                        return '';
15961                    },
15962                    swatchOptionClasses() {
15963                        const itemId = this._getItemId();
15964                        if (!this.$el || !itemId) return {};
15965                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
15966                        return {
15967                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
15968                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
15969                            'w-6 h-6': !this.isTextSwatch()
15970                        }
15971                    },
15972
15973                    onFocusSwatchItem() {
15974                        const itemId = this._getItemId();
15975                        if (itemId) this.focusedLabel = itemId;
15976                    },
15977                    onChangeOption() {
15978                        const itemId = this._getItemId();
15979                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
15980                        if (attrId && itemId) this.changeOption(attrId, itemId);
15981                    },
15982                    changeOption(attributeId, value) {
15983                        if (value === '') {
15984                            return;
15985                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
15986                        } else {
15987                            this.selectedValues[attributeId] = value;
15988                        }
15989
15990                        this.findSimpleIndex();
15991                        this.findAllowedAttributeOptions();
15992                        this.updatePrices();
15993                        this.updateGallery();
15994
15995                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
15996                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
15997
15998                        const eventDetail = {
15999                            productId: this.productId,
16000                            optionId: attributeId,
16001                            value: value,
16002                            productIndex: this.productIndex || 0,
16003                            selectedValues: this.selectedValues,
16004                            candidates: candidates,
16005                            sourceElement: this.$el
16006                        };
16007
16008                        // Dispatch for Amasty
16009                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
16010                            detail: eventDetail
16011                        }));
16012
16013                        // Dispatch for Hyva listing
16014                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
16015                            detail: eventDetail
16016                        }));
16017                    },
16018
16019
16020                    clearOptionIfActive() {
16021                        const itemId = this._getItemId();
16022                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
16023                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
16024                            this.changeOption(attrId, '');
16025
16026                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
16027                            if (!input && this.$el?.querySelector) {
16028                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
16029                            }
16030                            if (!input && this.$el?.closest) {
16031                                const root = this.$el.closest('[data-product-id]') || this.$el;
16032                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
16033                            }
16034                            if (input) {
16035                                input.checked = false;
16036                            }
16037                        }
16038                    },
16039                    get optionIsEnabled() {
16040                        const itemId = this._getItemId();
16041                        if (!this.$el || !itemId) return true;
16042                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
16043                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
16044                        return !!allowedOptions.find(opt => opt.id == itemId);
16045                    },
16046                    get isSelected() {
16047                        const itemId = this._getItemId();
16048                        if (!this.$el || !itemId) return false;
16049                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
16050                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
16051                    },
16052                    get isSwatchRequired() {
16053                        if (!this.$el) return false;
16054                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
16055                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
16056                    },
16057                    focusedLabel: false,
16058                    activeTooltipItem: false,
16059                    tooltipPositionElement: false,
16060                    setActiveTooltipItem() {
16061                        const itemId = this._getItemId();
16062                        if (!this.$el || !itemId) return;
16063                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
16064                        this.activeTooltipItem = {
16065                            attribute: attrId,
16066                            item: itemId,
16067                            index: 0
16068                        };
16069                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
16070                    },
16071                    unsetActiveTooltipItem() {
16072                        this.activeTooltipItem = false;
16073                    }
16074                },
16075                confProdPreSelect()
16076            );
16077
16078            if (result.optionConfig && result.optionConfig.attributes) {
16079                const attributes = result.optionConfig.attributes;
16080                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
16081                    let source = attributes;
16082                    if (Array.isArray(attributes)) {
16083                        source = {};
16084                        attributes.forEach(attr => {
16085                            if (attr && attr.id) source[attr.id] = attr;
16086                        });
16087                    }
16088                    const values = Object.values(source);
16089                    const wrapper = Object.assign(values, source);
16090                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
16091                        value: true,
16092                        enumerable: false
16093                    });
16094                    result.optionConfig.attributes = wrapper;
16095                }
16096            }
16097
16098            return result;
16099        }
16100
16101        window.addEventListener('alpine:init', () => {
16102            Alpine.data('initConfigurableSwatchOptions_46696', initConfigurableSwatchOptions_46696);
16103        }, {
16104            once: true
16105        });
16106    </script>
16106
16107    
16108    <div x-data="initConfigurableSwatchOptions_46696" x-defer="intersect">
16109        <div class="pagebuilder-home-hidden">
16110                                            
16111                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
16112                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
16113                        <template x-if="showSwatches">
16114                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-46696-163" role="radiogroup" aria-label="Einband">
16115                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
16116                                    <div :data-option-id="item.id" style="display: contents">
16117                                        <div x-id="getSwatchOptionHtmlIdGroup">
16118    <template x-if="optionIsEnabled">
16119        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
16119self="unsetActiveTooltipItem">
16120            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-46696-163">
16121            <div>
16122                <template x-if="isTextSwatch">
16123                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
16124                </template>
16125                <template x-if="!optionIsActive(163, item.id)">
16126                    <div>
16127                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
16128                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
16129                        </svg>
16130                    </div>
16131                </template>
16132            </div>
16133        </label>
16134    </template>
16135</div>                                    </div>
16136                                </template>
16137                            </div>
16138                        </template>
16139                    </div>
16140                </div>
16141                    </div>
16142    </div>
16143            
16144                                                <div class="meta py-4 pagebuilder-home-hidden">
16145                <div x-data="initMarketingShortText_46696()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
16146                    <!-- Marketing short text -->
16147                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
16148                    </div>
16149
16150                    <!-- Short description -->
16151                                                                <div class="short-description">
16152                            In der ostasiatischen Tradition des Mah&#257;y&#257;na gilt die Tiantai-Lehre als eine der ersten und historisch einflussreichsten Schulen des chinesischen Buddhismus. Eines der fr&uuml;hen Hauptwerke, das noch ...                            <a href="https://meiner.de/fmv_de/das-groa-e-ruhen-und-kontemplieren-16806" class="underline">mehr</a>
16153                        </div>
16154                                    </div>
16155
16156                <!-- Series  -->
16157                                    <div class="mb-1">
16158                        <span class="sr-only">Reihe:</span>
16159                        <a href="https://meiner.de/fmv_de/programm/reihen/sino-philosophica">
16160                            <span>Sino-philosophica</span>
16161                        </a>
16162                                                    4                                            </div>
16163                
16164                
16165                                                    <div class="mb-1">
16166                        <span x-data="initEditionText_46696()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
16167                            <!-- Marketing short text -->
16168                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 928 Seiten.                        </span>
16169                    </div>
16170                
16171                            </div>
16172            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
16173                
16174                <div class="justify-end" x-data="initPriceBox()" @update-prices-46696.window="updatePrice($event.detail);">
16175                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="46696" data-price-box="product-id-46696"><span class="normal-price">
16176    <span x-data x-id="['product\u002Dprice\u002D46696']" class="price-container price-final_price tax weee">
16177            <span class="price-label">Ab</span>
16178                <span class="approx-price">ca. </span>
16179        <span :id="$id('product\u002Dprice\u002D46696')" data-price-amount="189.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">189,99&nbsp;&euro;</span></span>
16180        </span>
16181</span>
16182
16183
16184</div>                </div>
16185
16186                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
16187                                            <div class="open-access-container open-access-container-46696                    flex mt-4 ml-auto sm:mt-0 hidden">
16188                            <div class="text-gray-700">
16189                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
16190                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
16191                                        Kostenlos online lesen                                    </a>
16192                                </button>
16193                            </div>
16194                        </div>
16195                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Das Gro&szlig;
16195e Ruhen und Kontemplieren" aria-label="In den Warenkorb Das Gro&szlig;e Ruhen und Kontemplieren" data-addto="cart">
16196                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
16197  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
16198</svg>
16199                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
16200                                        In den Warenkorb                                    </span>
16201                                </button>
16202                                                                                                                    
16203<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(46696)" aria-label="Zur Wunschliste hinzuf&uuml;gen Das Gro&szlig;e Ruhen und Kontemplieren" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
16204    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
16205  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
16206</svg>
16207</button>
16208                                    </div>
16209            </div>
16210        </div>
16211        
16211<script>
16212            function initMarketingShortText_46696() {
16213                var marketingShortTextConfig = {};
16214                if (typeof window.initConfigurableSwatchOptions_46696 === "function") {
16215                    var fullConfig = window.initConfigurableSwatchOptions_46696().optionConfig
16216                    var marketingShortTextConfig = fullConfig.marketing_short_text;
16217                }
16218                return {
16219                    marketingShortText: '',
16220                    config: marketingShortTextConfig,
16221                    productId: '46696',
16222                    getMarketingShortText(detail) {
16223                        this.marketingShortText = detail.productIndex ?
16224                            this.config[detail.productIndex] :
16225                            null;
16226                    },
16227                    eventListeners: {
16228                        ['@listing-configurable-selection-changed.window'](event) {
16229                            if (this.productId == event.detail.productId) {
16230                                this.getMarketingShortText(event.detail);
16231                            }
16232
16233                        }
16234                    }
16235                }
16236            }
16237
16238            function initEditionText_46696() {
16239                var editionTextConfig = {};
16240                if (typeof window.initConfigurableSwatchOptions_46696 === "function") {
16241                    var fullConfig = window.initConfigurableSwatchOptions_46696().optionConfig
16242                    var editionTextConfig = fullConfig.edition;
16243                }
16244                return {
16245                    editionText: '',
16246                    config: editionTextConfig,
16247                    productId: '46696',
16248                    getEditionText(detail) {
16249                        this.editionText = detail.productIndex ?
16250                            this.config[detail.productIndex] :
16251                            null;
16252                    },
16253                    eventListeners: {
16254                        ['@listing-configurable-selection-changed.window'](event) {
16255                            if (this.productId == event.detail.productId) {
16256                                this.getEditionText(event.detail);
16257                            }
16258
16259                        }
16260                    }
16261                }
16262            }
16263        </script>
16263
16264                    </form>
16265                            
16266    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/43703/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk17423">
16267        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="43703">
16268                                    <a href="https://meiner.de/fmv_de/schockierende-ungleichheit-17423" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
16269            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-43703.window="$el.src = $event.detail" alt="Schockierende Ungleichheit" title="Schockierende Ungleichheit" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351893_1.jpg" :style="{
16270                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
16271                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
16272            }">
16273                    </a>
16274        <div class="product-info flex flex-col flex-grow ">
16275                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
16276                                    <div class="mb-2 text-sm text-gray-500 font-medium">
16277                                                                                    <a href="https://meiner.de/fmv_de/person/Wolfgang-Detel-3526/" class="mb-2">
16278                                    Wolfgang Detel                                                                    </a>
16279                                                                                                                                    </div>
16280                                <a class="product-item-link" href="https://meiner.de/fmv_de/schockierende-ungleichheit-17423">
16281                    Schockierende Ungleichheit                </a>
16282                            </div>
16283
16284            <div x-data="initEditionText_43703()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
16285                <!-- Marketing short text -->
16286                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
16287                </div>
16288            </div>
16289
16290                            <div class="py-1 grid  mb-4 ">
16291                    
16292                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":43703,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":43703,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46975":"1","46991":"1","46992":"1"},"childProductsAlertStatus":{"46975":"0","46991":"0","46992":"0"},"indexMapping":{"163:15":46975,"163:8":46991,"163:9":46992},"availabilityMessages":{"46975":"Lieferbar innerhalb von 3-5 Tagen","46991":"Download sofort  verf\u00fcgbar","46992":"Download sofort  verf\u00fcgbar"},"openAccess":{"43703":{"status":0},"46975":{"status":0},"46991":{"status":0},"46992":{"status":0}}},"availabilityMessages":{"46975":"Lieferbar innerhalb von 3-5 Tagen","46991":"Download sofort  verf\u00fcgbar","46992":"Download sofort  verf\u00fcgbar"},"openAccess":{"43703":{"status":0},"46975":{"status":0},"46991":{"status":0},"46992":{"status":0}}}'>
16293        <template x-if="containerVisible">
16294                            <!-- Popup Trigger -->
16295                <div>
16296                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
16297                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
16298                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
16299  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
16300<title>bell</title></svg>
16301</span>
16302                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
16303
16304                    <!-- Popup Modal -->
16305                    <template x-if="showModal">
16306                        <template x-teleport=".page-wrapper">
16307                            <div x-cloak class="fixed inset-0 flex items-center justify-center
16308                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
16309                                <div class="relative bg-white rounded-lg shadow-xl
16310                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
16311                                    <div class="p-6">
16312                                        <!-- Subscription Form for Popup -->
16313                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
16314                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
16315                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
16316                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
16317
16318                                            <div class="flex flex-col gap-3">
16319                                                <div class="flex-grow grow">
16320                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
16321                                                        shadow-xs focus:outline-none focus:outline-hidden
16322                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
16323                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
16324                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
16325                                                </div>
16326                                                <input type="hidden" name="product_id" :value="currentProductId">
16327                                                <input type="hidden" name="type" value="email">
16328
16329                                                
16330                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
16331
16332                                                <div class="amxnotif_guest_action">
16333                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
16334                                                        rounded-md focus:outline-none
16335                                                        focus:outline-hidden focus:ring-2
16336                                                        focus:ring-offset-2 disabled:opacity-50
16337                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
16338                                                        Benachrichtigen                                                    </button>
16339                                                </div>
16340                                            </div>
16341
16342                                                                                            <div class="flex items-start pt-2">
16343                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
16344                                                        text-blue-600 border-gray-300 rounded-sm">
16345                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
16346                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
16347                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
16348                                                </div>
16349                                                                                    </form>
16350                                    </div>
16351
16352                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
16353                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
16354                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
16355  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
16356<title>x</title></svg>
16357                                    </button>
16358                                </div>
16359                            </div>
16360                        </template>
16361                    </template>
16362                </div>
16363                    </template>
16364    </div>
16365
16366<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_43703" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":43703,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46975":"
163661","46991":"1","46992":"1"},"childProductsAlertStatus":{"46975":"0","46991":"0","46992":"0"},"indexMapping":"{\u0022163:15\u0022:46975,\u0022163:8\u0022:46991,\u0022163:9\u0022:46992}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":43703,"availabilityMessages":{"46975":"Lieferbar innerhalb von 3-5 Tagen","46991":"Download sofort  verf\u00fcgbar","46992":"Download sofort  verf\u00fcgbar"},"openAccess":{"43703":{"status":0},"46975":{"status":0},"46991":{"status":0},"46992":{"status":0}}}'>
16367    
16368    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
16369        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
16370        <span x-html="optionsLabelText"></span>
16371    </p>
16372</div>                </div>
16373            
16374                                
16374<script>
16375        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
16376            try {
16377                const attributes = (config && config.attributes) ? config.attributes : null;
16378                if (!attributes) return [];
16379                let attr = null;
16380                if (Array.isArray(attributes)) {
16381                    for (let i = 0; i < attributes.length; i++) {
16382                        const a = attributes[i];
16383                        if (a && a.id == attrId) {
16384                            attr = a;
16385                            break;
16386                        }
16387                    }
16388                } else {
16389                    attr = attributes[attrId];
16390                }
16391                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
16392            } catch (e) {
16393                return [];
16394            }
16395        };
16396
16397        function initConfigurableSwatchOptions_43703() {
16398            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46975"]},{"id":"8","label":"PDF","products":["46991"]},{"id":"9","label":"EPUB","products":["46992"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46975":{"baseOldPrice":{"amount":27.943924233645},"oldPrice":{"amount":29.9},"basePrice":{"amount":27.943924233645},"finalPrice":{"amount":29.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46991":{"baseOldPrice":{"amount":20.551400869159},"oldPrice":{"amount":21.99},"basePrice":{"amount":20.551400869159},"finalPrice":{"amount":21.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46992":{"baseOldPrice":{"amount":20.551400869159},"oldPrice":{"amount":21.99},"basePrice":{"amount":20.551400869159},"finalPrice":{"amount":21.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":20.551400869159},"oldPrice":{"amount":21.99},"basePrice":{"amount":18.478990596639},"finalPrice":{"amount":21.99},"isApproxPrice":null},"productId":"43703","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46975":{"163":"15"},"46991":{"163":"8"},"46992":{"163":"9"}},"salable":{"163":{"15":["46975"],"8":["46991"],"9":["46992"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"46975":"005187","46991":"005188","46992":"005189"},"output":{"46975":"Kartoniert","46991":"PDF","46992":"EPUB"},"original_name":{"46975":"","46991":"","46992":""},"openaccess_license_link":{"46975":"","46991":"","46992":""},"openaccess_license_name":{"46975":"","46991":"","46992":""},"openaccess_external_link":{"46975":"","46991":"","46992":""},"gpsr_safety_info":{"46975":"","46991":"","46992":""},"description":{"46975":"In vielen demokratischen Staaten brennt die H\u00fctte, auch in Deutschland. Rechtspopulismus, Faschismus, alarmierende soziale Ungleichheit, prek\u00e4re Arbeitsverh\u00e4ltnisse, wachsende Staatsschulden, Abbau sozialer und kultureller Errungenschaften bedr\u00e4ngen fast \u00fcberall die Demokratie.<br\/><br\/>In seinem engagierten politischen Essay nimmt der Philosoph Wolfgang Detel eine der zentralen Ursachen f\u00fcr diese Entwicklung in den Fokus, n\u00e4mlich die extreme und weiter zunehmende \u00f6konomische Ungleichheit. Und er schl\u00e4gt einen Weg vor, der neben den \u00fcblichen L\u00f6sungen der Staatsschuldenkrise \u2013 weitere Schuldenaufnahme und Abbau von Sozialleistungen \u2013 zu erheblichen Mehreinnahmen f\u00fchren w\u00fcrde: die finanziell st\u00e4rkere Beteiligung der Ultra-Reichen. Damit st\u00fcnden deutlich mehr Mittel etwa f\u00fcr Klimapolitik, Landesverteidigung, Integration von Migranten, Bildung und Milderung der Armut zur Verf\u00fcgung.<br\/><br\/>In sechs Kapiteln analysiert Detel Geschichte und Gegenwart der \u00f6konomischen Ungleichheit und wie die neoliberale Transformation, unterst\u00fctzt durch eine philosophisch-\u00f6konomische Ideologie, diese Ungleichheit in den letzten Jahrzehnten angetrieben hat. In einem weiteren Teil wird eine F\u00fclle 
16398konkreter steuerlicher Ma\u00dfnahmen vorgestellt, die geeignet w\u00e4ren, die \u00f6konomische Ungleichheit in Deutschland erheblich abzumildern. Abschlie\u00dfend werden mit Bezug u. a. auf Axel Honneth, Michael Sandel und Thomas Piketty Entw\u00fcrfe zur nachhaltigen Transformation der neoliberalen Marktwirtschaft skizziert.","46991":"In vielen demokratischen Staaten brennt die H\u00fctte, auch in Deutschland. Rechtspopulismus, Faschismus, alarmierende soziale Ungleichheit, prek\u00e4re Arbeitsverh\u00e4ltnisse, wachsende Staatsschulden, Abbau sozialer und kultureller Errungenschaften bedr\u00e4ngen fast \u00fcberall die Demokratie.<br\/><br\/>In seinem engagierten politischen Essay nimmt der Philosoph Wolfgang Detel eine der zentralen Ursachen f\u00fcr diese Entwicklung in den Fokus, n\u00e4mlich die extreme und weiter zunehmende \u00f6konomische Ungleichheit. Und er schl\u00e4gt einen Weg vor, der neben den \u00fcblichen L\u00f6sungen der Staatsschuldenkrise \u2013 weitere Schuldenaufnahme und Abbau von Sozialleistungen \u2013 zu erheblichen Mehreinnahmen f\u00fchren w\u00fcrde: die finanziell st\u00e4rkere Beteiligung der Ultra-Reichen. Damit st\u00fcnden deutlich mehr Mittel etwa f\u00fcr Klimapolitik, Landesverteidigung, Integration von Migranten, Bildung und Milderung der Armut zur Verf\u00fcgung.<br\/><br\/>In sechs Kapiteln analysiert Detel Geschichte und Gegenwart der \u00f6konomischen Ungleichheit und wie die neoliberale Transformation, unterst\u00fctzt durch eine philosophisch-\u00f6konomische Ideologie, diese Ungleichheit in den letzten Jahrzehnten angetrieben hat. In einem weiteren Teil wird eine F\u00fclle konkreter steuerlicher Ma\u00dfnahmen vorgestellt, die geeignet w\u00e4ren, die \u00f6konomische Ungleichheit in Deutschland erheblich abzumildern. Abschlie\u00dfend werden mit Bezug u. a. auf Axel Honneth, Michael Sandel und Thomas Piketty Entw\u00fcrfe zur nachhaltigen Transformation der neoliberalen Marktwirtschaft skizziert.","46992":"In vielen demokratischen Staaten brennt die H\u00fctte, auch in Deutschland. Rechtspopulismus, Faschismus, alarmierende soziale Ungleichheit, prek\u00e4re Arbeitsverh\u00e4ltnisse, wachsende Staatsschulden, Abbau sozialer und kultureller Errungenschaften bedr\u00e4ngen fast \u00fcberall die Demokratie.<br\/><br\/>In seinem engagierten politischen Essay nimmt der Philosoph Wolfgang Detel eine der zentralen Ursachen f\u00fcr diese Entwicklung in den Fokus, n\u00e4mlich die extreme und weiter zunehmende \u00f6konomische Ungleichheit. Und er schl\u00e4gt einen Weg vor, der neben den \u00fcblichen L\u00f6sungen der Staatsschuldenkrise \u2013 weitere Schuldenaufnahme und Abbau von Sozialleistungen \u2013 zu erheblichen Mehreinnahmen f\u00fchren w\u00fcrde: die finanziell st\u00e4rkere Beteiligung der Ultra-Reichen. Damit st\u00fcnden deutlich mehr Mittel etwa f\u00fcr Klimapolitik, Landesverteidigung, Integration von Migranten, Bildung und Milderung der Armut zur Verf\u00fcgung.<br\/><br\/>In sechs Kapiteln analysiert Detel Geschichte und Gegenwart der \u00f6konomischen Ungleichheit und wie die neoliberale Transformation, unterst\u00fctzt durch eine philosophisch-\u00f6konomische Ideologie, diese Ungleichheit in den letzten Jahrzehnten angetrieben hat. In einem weiteren Teil wird eine F\u00fclle konkreter steuerlicher Ma\u00dfnahmen vorgestellt, die geeignet w\u00e4ren, die \u00f6konomische Ungleichheit in Deutschland erheblich abzumildern. Abschlie\u00dfend werden mit Bezug u. a. auf Axel Honneth, Michael Sandel und Thomas Piketty Entw\u00fcrfe zur nachhaltigen Transformation der neoliberalen Marktwirtschaft skizziert."},"doi":{"46975":"","46991":"10.28937\/978-3-7873-5188-6","46992":""},"isbn":{"46975":"978-3-7873-5187-9","46991":"978-3-7873-5188-6","46992":"978-3-7873-5189-3"},"marketing_short_text":{"46975":"","46991":"","46992":""},"recension_text":{"46975":"<div class=\"reviews\">\r\n<div class=\"review\">Wer sich mit der Faktenresistenz der aktuellen Sozialstaatsdebatte nicht abfinden will, ist mit [diesem] Buch bestens bedient.<\/div>\r\n<div class=\"source\">Joachim Maiworm in BIG Business Crime, Juli 2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">
16398[Detels] an Aristoteles gesch\u00e4rfter Blick verbindet philosophische Reflexion mit konkreten politischen Vorschl\u00e4gen, die sich auf wissenschaftliche Studien st\u00fctzen. Besonders sein Zehn-Punkte-Programm hebt das Buch \u00fcber reine Gesellschaftskritik hinaus. [...] Ein anregender und erhellender Beitrag.<\/div>\r\n<div class=\"source\">Franz Segbers in Publik-Forum 08\/2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Warum drohen so viele Demokratien zu kollabieren? Der Philosoph Wolfgang Detel macht die wachsende Ungleichheit als zentrale Ursache aus. Eine Analyse der neoliberalen Wurzeln der Misere \u2013 und ein Pl\u00e4doyer, durch eine st\u00e4rkere Besteuerung der Ultrareichen Demokratie, Sozialstaat und Zukunftsinvestitionen zu sichern.<\/div>\r\n<div class=\"source\">Platz 6 der Sachbuch-Bestenliste Februar 2026 von <a href=\"https:\/\/bilder.deutschlandfunk.de\/4d\/b8\/db\/7a\/4db8db7a-e5ed-438f-8873-d4bfa1815b5f\/sachbuchbestenliste-die-besten-sachbuecher-im-januar-2026-100.pdf\">Dlf Kultur<\/a>, <a href=\"https:\/\/www.zdf.de\/video\/reportagen\/aspekte-106\/bestenliste-104\">ZDF <\/a>und <a href=\"https:\/\/www.zeit.de\/kultur\/literatur\/2026-01\/sachbuch-bestenliste-literatur-buchempfehlungen-februar-2026\">ZEIT<\/a>\u200b\r\n<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Dieses Buch ist ein gro\u00dfer Wurf. Es bietet einen exzellenten \u00dcberblick \u00fcber die gegenw\u00e4rtige Debatte zu Ursachen und Folgen der Ungleichheit und verbindet philosophische Reflexion mit \u00f6konomischer und politischer Analyse. Das gelingt in einer Sprache, die allgemeinverst\u00e4ndlich bleibt, ohne banal zu werden. Ein Buch f\u00fcr jedermann also.<\/div>\r\n<div class=\"source\">Michael Hesse in der Frankfurter Rundschau am 17.03.2026<\/div>\r\n<\/div>","46991":"<div class=\"reviews\">\r\n<div class=\"review\">Wer sich mit der Faktenresistenz der aktuellen Sozialstaatsdebatte nicht abfinden will, ist mit [diesem] Buch bestens bedient.<\/div>\r\n<div class=\"source\">Joachim Maiworm in BIG Business Crime, Juli 2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">[Detels] an Aristoteles gesch\u00e4rfter Blick verbindet philosophische Reflexion mit konkreten politischen Vorschl\u00e4gen, die sich auf wissenschaftliche Studien st\u00fctzen. Besonders sein Zehn-Punkte-Programm hebt das Buch \u00fcber reine Gesellschaftskritik hinaus. [...] Ein anregender und erhellender Beitrag.<\/div>\r\n<div class=\"source\">Franz Segbers in Publik-Forum 08\/2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Warum drohen so viele Demokratien zu kollabieren? Der Philosoph Wolfgang Detel macht die wachsende Ungleichheit als zentrale Ursache aus. Eine Analyse der neoliberalen Wurzeln der Misere \u2013 und ein Pl\u00e4doyer, durch eine st\u00e4rkere Besteuerung der Ultrareichen Demokratie, Sozialstaat und Zukunftsinvestitionen zu sichern.<\/div>\r\n<div class=\"source\">Platz 6 der Sachbuch-Bestenliste Februar 2026 von <a href=\"https:\/\/bilder.deutschlandfunk.de\/4d\/b8\/db\/7a\/4db8db7a-e5ed-438f-8873-d4bfa1815b5f\/sachbuchbestenliste-die-besten-sachbuecher-im-januar-2026-100.pdf\">Dlf Kultur<\/a>, <a href=\"https:\/\/www.zdf.de\/video\/reportagen\/aspekte-106\/bestenliste-104\">ZDF <\/a>und <a href=\"https:\/\/www.zeit.de\/kultur\/literatur\/2026-01\/sachbuch-bestenliste-literatur-buchempfehlungen-februar-2026\">ZEIT<\/a>\u200b\r\n<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Dieses Buch ist ein gro\u00dfer Wurf. Es bietet einen exzellenten \u00dcberblick \u00fcber die gegenw\u00e4rtige Debatte zu Ursachen und Folgen der Ungleichheit und verbindet philosophische Reflexion mit \u00f6konomischer und politischer Analyse. Das gelingt in einer Sprache, die allgemeinverst\u00e4ndlich bleibt, ohne banal zu werden. Ein Buch f\u00fcr jedermann also.<\/div>\r\n<div class=\"source\">Michael Hesse in der Frankfurter Rundschau am 17.03.2026<\/div>\r\n<\/div>","46992":"<div class=\"reviews\">\r\n<div class=\"review\">Wer sich mit der Faktenresistenz der aktuellen Sozialstaatsdebatte nicht abfinden will, ist mit [diesem] Buch bestens bedient.<\/div>\r\n<div class=\"source\">Joachim Maiworm in BIG Business Crime, Juli 2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">
16398[Detels] an Aristoteles gesch\u00e4rfter Blick verbindet philosophische Reflexion mit konkreten politischen Vorschl\u00e4gen, die sich auf wissenschaftliche Studien st\u00fctzen. Besonders sein Zehn-Punkte-Programm hebt das Buch \u00fcber reine Gesellschaftskritik hinaus. [...] Ein anregender und erhellender Beitrag.<\/div>\r\n<div class=\"source\">Franz Segbers in Publik-Forum 08\/2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Warum drohen so viele Demokratien zu kollabieren? Der Philosoph Wolfgang Detel macht die wachsende Ungleichheit als zentrale Ursache aus. Eine Analyse der neoliberalen Wurzeln der Misere \u2013 und ein Pl\u00e4doyer, durch eine st\u00e4rkere Besteuerung der Ultrareichen Demokratie, Sozialstaat und Zukunftsinvestitionen zu sichern.<\/div>\r\n<div class=\"source\">Platz 6 der Sachbuch-Bestenliste Februar 2026 von <a href=\"https:\/\/bilder.deutschlandfunk.de\/4d\/b8\/db\/7a\/4db8db7a-e5ed-438f-8873-d4bfa1815b5f\/sachbuchbestenliste-die-besten-sachbuecher-im-januar-2026-100.pdf\">Dlf Kultur<\/a>, <a href=\"https:\/\/www.zdf.de\/video\/reportagen\/aspekte-106\/bestenliste-104\">ZDF <\/a>und <a href=\"https:\/\/www.zeit.de\/kultur\/literatur\/2026-01\/sachbuch-bestenliste-literatur-buchempfehlungen-februar-2026\">ZEIT<\/a>\u200b\r\n<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Dieses Buch ist ein gro\u00dfer Wurf. Es bietet einen exzellenten \u00dcberblick \u00fcber die gegenw\u00e4rtige Debatte zu Ursachen und Folgen der Ungleichheit und verbindet philosophische Reflexion mit \u00f6konomischer und politischer Analyse. Das gelingt in einer Sprache, die allgemeinverst\u00e4ndlich bleibt, ohne banal zu werden. Ein Buch f\u00fcr jedermann also.<\/div>\r\n<div class=\"source\">Michael Hesse in der Frankfurter Rundschau am 17.03.2026<\/div>\r\n<\/div>"},"language":{"46975":"","46991":"","46992":""},"cover":{"46975":"Kartoniert","46991":"","46992":""},"pages":{"46975":"412 Seiten","46991":"420 Seiten","46992":"420 Seiten"},"edition":{"46975":"2., um ein Nachwort erg\u00e4nzte Auflage","46991":"2., um ein Nachwort erg\u00e4nzte Auflage","46992":"2., um ein Nachwort erg\u00e4nzte Auflage"},"pod":{"46975":"Nein","46991":"Nein","46992":"Nein"},"copyright_year":{"46975":"","46991":"","46992":""},"vlb_tix_link":{"46975":"https:\/\/neu.vlbtix.de\/products\/9783787351879?type=gtin","46991":"","46992":""},"defaultValues":{"163":"15"}};
16399            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
16400
16401            if (typeof window.amxnotif_wrap_attributes === 'function') {
16402                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
16403                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
16404            }
16405
16406            const configurableOptionsComponent = initConfigurableOptions(
16407                '43703',
16408                config
16409            );
16410            const swatchOptionsComponent = initSwatchOptions(
16411                swatchConfig
16412            );
16413
16414            // DWS - Configurable product preselect start
16415            const confProdPreSelect = () => {
16416                return {
16417                    preselectQuerystringItems() {
16418                        var data = {"id":"46975","output":"15"};
16419                        const urlQueryParams = new URLSearchParams(window.location.search);
16420
16421                                                this.$nextTick(() => {
16422                            setTimeout(() => {
16423                                const rootEl = this.$root || this.$el;
16424                                if (!rootEl) return;
16425
16426                                const applySelection = (attrCode, attrValue) => {
16427                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
16428
16429                                    const attributes = Object.values(this.optionConfig.attributes || {});
16430                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
16431
16432                                    if (targetAttr) {
16433                                        const attrId = String(targetAttr.id);
16434                                        const optionVal = String(attrValue);
16435
16436                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
16437
16438                                        if (inputEl) {
16439                                                                                        inputEl.click();
16440                                            inputEl.dispatchEvent(new Event('change', {
16441                                                bubbles: true
16442                                            }));
16443                                        } else {
16444                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
16445                                            if (selectEl) {
16446                                                selectEl.value = optionVal;
16447                                                selectEl.dispatchEvent(new Event('change', {
16448                                                    bubbles: true
16449                                                }));
16450                                            }
16451                                        }
16452
16453                                                                                this.changeOption(attrId, optionVal, false);
16454                                    }
16455                                };
16456
16457                                                                if (data && typeof data === 'object') {
16458                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
16459                                }
16460
16461                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
16462                                    if (attribute && attribute.code) {
16463                                        let optionValue = urlQueryParams.get(attribute.code);
16464                                        if (optionValue) {
16465                                            let optionId = false;
16466                                            const attributes = Object.values(this.optionConfig.attributes || {});
16467                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
16468
16469                                            let found = false;
16470                                            Object.values(targetAttr.options).map(option => {
16471                                                if (found === false && option.label === optionValue) {
16472                                                    optionId = option.id;
16473                                                    found = true;
16474                                                }
16475                                            });
16476
16477                                            const attrId = String(targetAttr.id);
16478                                            let optionVal = String(optionValue);
16479                                            if (found) {
16480                                                optionVal = String(optionId);
16481                                            }
16482
16483                                            applySelection(attribute.code, optionVal);
16484                                        }
16485                                    }
16486                                });
16487                            }, 100);
16488                        });
16489                    }
16490                }
16491            };
16492            // DWS - Configurable product preselect end
16493
16494            const result = Object.assign(
16495                configurableOptionsComponent,
16496                swatchOptionsComponent, {
16497                    productId: '43703',
16498                    productIndex: 0,
16499                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
16500                    showSwatches: false,
16501                    precalcOptions: {},
16502                    originalInit: configurableOptionsComponent.init,
16503                    init() {
16504                        try {
16505                            this.precalcOptions = {};
16506                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
16507                            this.preselectQuerystringItems();
16508                            if (Array.isArray(attrSource)) {
16509                                attrSource.forEach(attr => {
16510                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
16511                                });
16512                            } else if (attrSource && typeof attrSource === 'object') {
16513                                Object.keys(attrSource).forEach(id => {
16514                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
16515                                });
16516                            }
16517                        } catch (e) {
16518                            console.error('Pre-calc error:', e);
16519                        }
16520
16521                        if (typeof this.originalInit === 'function') {
16522                            this.originalInit();
16523                        }
16524
16525                        try {
16526                            this.initShowSwatchesIntersect();
16527                        } catch (e) {
16528                            console.error('intersect error:', e);
16529                        }
16530                    },
16531
16532                    updateGallery() {
16533                        if (!this.productIndex) return;
16534
16535                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
16536                                method: 'GET',
16537                                headers: {
16538                                    'Content-Type': 'application/json',
16539                                    'X-Requested-With': 'XMLHttpRequest'
16540                                }
16541                            })
16542                            .then(response => response.json())
16543                            .then(data => {
16544                                if (data && data.medium) {
16545                                    window.dispatchEvent(new CustomEvent("update-gallery-43703", {
16546                                        detail: data.medium
16547                                    }));
16548                                }
16549                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
16550                    },
16551
16552
16553                    initShowSwatchesIntersect() {
16554                        const observer = new IntersectionObserver(entries => {
16555                            if (entries[0].isIntersecting) {
16556                                this.showSwatches = true;
16557                                observer.disconnect();
16558                            }
16559                        }, {
16560                            rootMargin: '512px'
16561                        });
16562                        observer.observe(this.$el);
16563                    },
16564                    getOptions(attrId) {
16565                        return this.precalcOptions[attrId] || [];
16566                    },
16567                    getOptionsByAttrId() {
16568                        return this.getOptions(this.$el.dataset.attributeId);
16569                    },
16570                    _getItemId() {
16571                        if (this.item && this.item.id) return this.item.id;
16572                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
16573                    },
16574                    getSwatchOptionHtmlId() {
16575                        const itemId = this._getItemId();
16576                        return itemId ? this.$id(`attribute-option-43703-${itemId}`) : '';
16577                    },
16578                    getSwatchOptionHtmlIdGroup() {
16579                        const itemId = this._getItemId();
16580                        return itemId ? [`attribute-option-43703-${itemId}`] : [];
16581                    },
16582                    getAttributeSwatchData(attributeId) {
16583                        const data = Object.assign({}, this.swatchConfig[attributeId]);
16584                        if (data['additional_data']) {
16585                            try {
16586                                data['details'] = JSON.parse(data['additional_data']);
16587                            } catch (e) {
16588                                data['details'] = {};
16589                            }
16590                        }
16591                        return data;
16592                    },
16593                    getSwatchType(attributeId, optionId) {
16594                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
16595                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
16596                        }
16597                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
16598                            this.swatchConfig[attributeId].details.swatch_input_type :
16599                            "empty";
16600                        if (type === 'visual') {
16601                            const config = this.swatchConfig[attributeId];
16602                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
16603                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
16604                            }
16605                            // Fallback to first option type
16606                            for (const oId in config) {
16607                                if (config[oId] && typeof config[oId].type !== 'undefined') {
16608                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
16609                                }
16610                            }
16611                        }
16612                        return type;
16613                    },
16614                    mapSwatchTypeNumberToTypeCode(type) {
16615                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
16616                    },
16617                    isTextSwatch() {
16618                        const itemId = this._getItemId();
16619                        if (!this.$el || !itemId) return false;
16620                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
16621                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
16622                    },
16623
16624                    getSwatchText() {
16625                        const itemId = this._getItemId();
16626                        if (this.item) return this.item.label || '';
16627                        if (!this.$el || !itemId) return '';
16628                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
16629                        const options = attrId ? this.getOptions(attrId) : [];
16630                        const opt = options.find(o => o.id == itemId);
16631                        return opt ? opt.label : '';
16632                    },
16633                    getSwatchBackgroundStyle() {
16634                        const itemId = this._getItemId();
16635                        if (!this.$el || !itemId) return '';
16636                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
16637                        if (!attrId) return '';
16638                        const type = this.getSwatchType(attrId, itemId);
16639                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
16640                            this.swatchConfig[attrId][itemId] :
16641                            null;
16642                        if (!swatchData) return '';
16643                        if (type === "color") return 'background-color:' + swatchData.value;
16644                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
16645                        return '';
16646                    },
16647                    swatchOptionClasses() {
16648                        const itemId = this._getItemId();
16649                        if (!this.$el || !itemId) return {};
16650                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
16651                        return {
16652                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
16653                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
16654                            'w-6 h-6': !this.isTextSwatch()
16655                        }
16656                    },
16657
16658                    onFocusSwatchItem() {
16659                        const itemId = this._getItemId();
16660                        if (itemId) this.focusedLabel = itemId;
16661                    },
16662                    onChangeOption() {
16663                        const itemId = this._getItemId();
16664                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
16665                        if (attrId && itemId) this.changeOption(attrId, itemId);
16666                    },
16667                    changeOption(attributeId, value) {
16668                        if (value === '') {
16669                            return;
16670                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
16671                        } else {
16672                            this.selectedValues[attributeId] = value;
16673                        }
16674
16675                        this.findSimpleIndex();
16676                        this.findAllowedAttributeOptions();
16677                        this.updatePrices();
16678                        this.updateGallery();
16679
16680                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
16681                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
16682
16683                        const eventDetail = {
16684                            productId: this.productId,
16685                            optionId: attributeId,
16686                            value: value,
16687                            productIndex: this.productIndex || 0,
16688                            selectedValues: this.selectedValues,
16689                            candidates: candidates,
16690                            sourceElement: this.$el
16691                        };
16692
16693                        // Dispatch for Amasty
16694                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
16695                            detail: eventDetail
16696                        }));
16697
16698                        // Dispatch for Hyva listing
16699                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
16700                            detail: eventDetail
16701                        }));
16702                    },
16703
16704
16705                    clearOptionIfActive() {
16706                        const itemId = this._getItemId();
16707                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
16708                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
16709                            this.changeOption(attrId, '');
16710
16711                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
16712                            if (!input && this.$el?.querySelector) {
16713                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
16714                            }
16715                            if (!input && this.$el?.closest) {
16716                                const root = this.$el.closest('[data-product-id]') || this.$el;
16717                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
16718                            }
16719                            if (input) {
16720                                input.checked = false;
16721                            }
16722                        }
16723                    },
16724                    get optionIsEnabled() {
16725                        const itemId = this._getItemId();
16726                        if (!this.$el || !itemId) return true;
16727                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
16728                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
16729                        return !!allowedOptions.find(opt => opt.id == itemId);
16730                    },
16731                    get isSelected() {
16732                        const itemId = this._getItemId();
16733                        if (!this.$el || !itemId) return false;
16734                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
16735                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
16736                    },
16737                    get isSwatchRequired() {
16738                        if (!this.$el) return false;
16739                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
16740                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
16741                    },
16742                    focusedLabel: false,
16743                    activeTooltipItem: false,
16744                    tooltipPositionElement: false,
16745                    setActiveTooltipItem() {
16746                        const itemId = this._getItemId();
16747                        if (!this.$el || !itemId) return;
16748                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
16749                        this.activeTooltipItem = {
16750                            attribute: attrId,
16751                            item: itemId,
16752                            index: 0
16753                        };
16754                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
16755                    },
16756                    unsetActiveTooltipItem() {
16757                        this.activeTooltipItem = false;
16758                    }
16759                },
16760                confProdPreSelect()
16761            );
16762
16763            if (result.optionConfig && result.optionConfig.attributes) {
16764                const attributes = result.optionConfig.attributes;
16765                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
16766                    let source = attributes;
16767                    if (Array.isArray(attributes)) {
16768                        source = {};
16769                        attributes.forEach(attr => {
16770                            if (attr && attr.id) source[attr.id] = attr;
16771                        });
16772                    }
16773                    const values = Object.values(source);
16774                    const wrapper = Object.assign(values, source);
16775                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
16776                        value: true,
16777                        enumerable: false
16778                    });
16779                    result.optionConfig.attributes = wrapper;
16780                }
16781            }
16782
16783            return result;
16784        }
16785
16786        window.addEventListener('alpine:init', () => {
16787            Alpine.data('initConfigurableSwatchOptions_43703', initConfigurableSwatchOptions_43703);
16788        }, {
16789            once: true
16790        });
16791    </script>
16791
16792    
16793    <div x-data="initConfigurableSwatchOptions_43703" x-defer="intersect">
16794        <div class="pagebuilder-home-hidden">
16795                                            
16796                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
16797                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
16798                        <template x-if="showSwatches">
16799                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-43703-163" role="radiogroup" aria-label="Einband">
16800                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
16801                                    <div :data-option-id="item.id" style="display: contents">
16802                                        <div x-id="getSwatchOptionHtmlIdGroup">
16803    <template x-if="optionIsEnabled">
16804        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
16804self="unsetActiveTooltipItem">
16805            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-43703-163">
16806            <div>
16807                <template x-if="isTextSwatch">
16808                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
16809                </template>
16810                <template x-if="!optionIsActive(163, item.id)">
16811                    <div>
16812                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
16813                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
16814                        </svg>
16815                    </div>
16816                </template>
16817            </div>
16818        </label>
16819    </template>
16820</div>                                    </div>
16821                                </template>
16822                            </div>
16823                        </template>
16824                    </div>
16825                </div>
16826                    </div>
16827    </div>
16828            
16829                                                <div class="meta py-4 pagebuilder-home-hidden">
16830                <div x-data="initMarketingShortText_43703()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
16831                    <!-- Marketing short text -->
16832                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
16833                    </div>
16834
16835                    <!-- Short description -->
16836                                                                <div class="short-description">
16837                            In vielen demokratischen Staaten brennt die H&uuml;tte, auch in Deutschland. Rechtspopulismus, Faschismus, alarmierende soziale Ungleichheit, prek&auml;re Arbeitsverh&auml;ltnisse, wachsende Staatsschulden, ...                            <a href="https://meiner.de/fmv_de/schockierende-ungleichheit-17423" class="underline">mehr</a>
16838                        </div>
16839                                    </div>
16840
16841                <!-- Series  -->
16842                                    <div class="mb-1">
16843                        <span class="sr-only">Reihe:</span>
16844                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
16845                            <span>Blaue Reihe</span>
16846                        </a>
16847                                            </div>
16848                
16849                
16850                                                    <div class="mb-1">
16851                        <span x-data="initEditionText_43703()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
16852                            <!-- Marketing short text -->
16853                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 412 Seiten                        </span>
16854                    </div>
16855                
16856                            </div>
16857            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
16858                
16859                <div class="justify-end" x-data="initPriceBox()" @update-prices-43703.window="updatePrice($event.detail);">
16860                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="43703" data-price-box="product-id-43703"><span class="normal-price">
16861    <span x-data x-id="['product\u002Dprice\u002D43703']" class="price-container price-final_price tax weee">
16862            <span class="price-label">Ab</span>
16863                <span class="approx-price">ca. </span>
16864        <span :id="$id('product\u002Dprice\u002D43703')" data-price-amount="21.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">21,99&nbsp;&euro;</span></span>
16865        </span>
16866</span>
16867
16868
16869</div>                </div>
16870
16871                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
16872                                            <div class="open-access-container open-access-container-43703                    flex mt-4 ml-auto sm:mt-0 hidden">
16873                            <div class="text-gray-700">
16874                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
16875                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
16876                                        Kostenlos online lesen                                    </a>
16877                                </button>
16878                            </div>
16879                        </div>
16880                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Schockierende Ungleichheit" aria-label="In den Warenkorb Schockierende Ungleichheit" data-addto="cart">
16881                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
16882  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
168820 014 0z"></path>
16883</svg>
16884                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
16885                                        In den Warenkorb                                    </span>
16886                                </button>
16887                                                                                                                    
16888<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(43703)" aria-label="Zur Wunschliste hinzuf&uuml;gen Schockierende Ungleichheit" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
16889    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
16890  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
16891</svg>
16892</button>
16893                                    </div>
16894            </div>
16895        </div>
16896        
16896<script>
16897            function initMarketingShortText_43703() {
16898                var marketingShortTextConfig = {};
16899                if (typeof window.initConfigurableSwatchOptions_43703 === "function") {
16900                    var fullConfig = window.initConfigurableSwatchOptions_43703().optionConfig
16901                    var marketingShortTextConfig = fullConfig.marketing_short_text;
16902                }
16903                return {
16904                    marketingShortText: '',
16905                    config: marketingShortTextConfig,
16906                    productId: '43703',
16907                    getMarketingShortText(detail) {
16908                        this.marketingShortText = detail.productIndex ?
16909                            this.config[detail.productIndex] :
16910                            null;
16911                    },
16912                    eventListeners: {
16913                        ['@listing-configurable-selection-changed.window'](event) {
16914                            if (this.productId == event.detail.productId) {
16915                                this.getMarketingShortText(event.detail);
16916                            }
16917
16918                        }
16919                    }
16920                }
16921            }
16922
16923            function initEditionText_43703() {
16924                var editionTextConfig = {};
16925                if (typeof window.initConfigurableSwatchOptions_43703 === "function") {
16926                    var fullConfig = window.initConfigurableSwatchOptions_43703().optionConfig
16927                    var editionTextConfig = fullConfig.edition;
16928                }
16929                return {
16930                    editionText: '',
16931                    config: editionTextConfig,
16932                    productId: '43703',
16933                    getEditionText(detail) {
16934                        this.editionText = detail.productIndex ?
16935                            this.config[detail.productIndex] :
16936                            null;
16937                    },
16938                    eventListeners: {
16939                        ['@listing-configurable-selection-changed.window'](event) {
16940                            if (this.productId == event.detail.productId) {
16941                                this.getEditionText(event.detail);
16942                            }
16943
16944                        }
16945                    }
16946                }
16947            }
16948        </script>
16948
16949                    </form>
16950                            
16951    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/46712/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21550">
16952        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="46712">
16953                                    <a href="https://meiner.de/fmv_de/von-den-heroischen-leidenschaften-21550" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
16954            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-46712.window="$el.src = $event.detail" alt="Von den heroischen Leidenschaften" title="Von den heroischen Leidenschaften" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351411_1.jpg" :style="{
16955                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
16956                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
16957            }">
16958                    </a>
16959        <div class="product-info flex flex-col flex-grow ">
16960                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
16961                                    <div class="mb-2 text-sm text-gray-500 font-medium">
16962                                                                                    <a href="https://meiner.de/fmv_de/person/Giordano-Bruno-3772/" class="mb-2">
16963                                    Giordano Bruno                                                                    </a>
16964                                                                                                                                    </div>
16965                                <a class="product-item-link" href="https://meiner.de/fmv_de/von-den-heroischen-leidenschaften-21550">
16966                    Von den heroischen Leidenschaften                </a>
16967                            </div>
16968
16969            <div x-data="initEditionText_46712()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
16970                <!-- Marketing short text -->
16971                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
16972                </div>
16973            </div>
16974
16975                            <div class="py-1 grid  mb-4 ">
16976                    
16977                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":46712,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":46712,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46694":"1"},"childProductsAlertStatus":{"46694":"0"},"indexMapping":{"163:11":46694},"availabilityMessages":{"46694":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"46712":{"status":0},"46694":{"status":0}}},"availabilityMessages":{"46694":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"46712":{"status":0},"46694":{"status":0}}}'>
16978        <template x-if="containerVisible">
16979                            <!-- Popup Trigger -->
16980                <div>
16981                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
16982                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
16983                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
16984  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
16985<title>bell</title></svg>
16986</span>
16987                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
16988
16989                    <!-- Popup Modal -->
16990                    <template x-if="showModal">
16991                        <template x-teleport=".page-wrapper">
16992                            <div x-cloak class="fixed inset-0 flex items-center justify-center
16993                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
16994                                <div class="relative bg-white rounded-lg shadow-xl
16995                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
16996                                    <div class="p-6">
16997                                        <!-- Subscription Form for Popup -->
16998                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
16999                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
17000                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
17001                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
17002
17003                                            <div class="flex flex-col gap-3">
17004                                                <div class="flex-grow grow">
17005                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
17006                                                        shadow-xs focus:outline-none focus:outline-hidden
17007                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
17008                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
17009                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
17010                                                </div>
17011                                                <input type="hidden" name="product_id" :value="currentProductId">
17012                                                <input type="hidden" name="type" value="email">
17013
17014                                                
17015                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
17016
17017                                                <div class="amxnotif_guest_action">
17018                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
17019                                                        rounded-md focus:outline-none
17020                                                        focus:outline-hidden focus:ring-2
17021                                                        focus:ring-offset-2 disabled:opacity-50
17022                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
17023                                                        Benachrichtigen                                                    </button>
17024                                                </div>
17025                                            </div>
17026
17027                                                                                            <div class="flex items-start pt-2">
17028                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
17029                                                        text-blue-600 border-gray-300 rounded-sm">
17030                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
17031                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
17032                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
17033                                                </div>
17034                                                                                    </form>
17035                                    </div>
17036
17037                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
17038                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
17039                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
17040  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
17041<title>x</title></svg>
17042                                    </button>
17043                                </div>
17044                            </div>
17045                        </template>
17046                    </template>
17047                </div>
17048                    </template>
17049    </div>
17050
17051<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_46712" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":46712,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46694":"1"},"childProductsAlertStatus":{"46694":"0"},"indexMapping":"{\u0022163:11\u0022:46694}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":46712,"availabilityMessages":{"46694":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"46712":{"status":0}
17051,"46694":{"status":0}}}'>
17052    
17053    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
17054        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
17055        <span x-html="optionsLabelText"></span>
17056    </p>
17057</div>                </div>
17058            
17059                                
17059<script>
17060        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
17061            try {
17062                const attributes = (config && config.attributes) ? config.attributes : null;
17063                if (!attributes) return [];
17064                let attr = null;
17065                if (Array.isArray(attributes)) {
17066                    for (let i = 0; i < attributes.length; i++) {
17067                        const a = attributes[i];
17068                        if (a && a.id == attrId) {
17069                            attr = a;
17070                            break;
17071                        }
17072                    }
17073                } else {
17074                    attr = attributes[attrId];
17075                }
17076                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
17077            } catch (e) {
17078                return [];
17079            }
17080        };
17081
17082        function initConfigurableSwatchOptions_46712() {
17083            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"11","label":"Gebunden","products":["46694"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46694":{"baseOldPrice":{"amount":91.588784046729},"oldPrice":{"amount":98},"basePrice":{"amount":91.588784046729},"finalPrice":{"amount":98},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":91.588784046729},"oldPrice":{"amount":98},"basePrice":{"amount":82.352940176471},"finalPrice":{"amount":98},"isApproxPrice":null},"productId":"46712","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46694":{"163":"11"}},"salable":{"163":{"11":["46694"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"46694":"005141"},"output":{"46694":"Gebunden"},"original_name":{"46694":"De gl\u2019heroici furori"},"openaccess_license_link":{"46694":""},"openaccess_license_name":{"46694":""},"openaccess_external_link":{"46694":""},"gpsr_safety_info":{"46694":""},"description":{"46694":"Die Heroischen Leidenschaften, \u00bbDe gl\u2019heroici furori\u00ab, sind der letzte der in italienischer Sprache geschriebenen Dialoge Brunos, die s\u00e4mtlich zwischen 1583 und 1585 in England verfasst wurden. Sie k\u00f6nnen nicht nur als H\u00f6he- und Kulminationspunkt des brunianischen \u0152uvres insgesamt gelten, sondern zugleich als ein Werk, in dem sich wie in einem Brennspiegel Philosopheme des ausgehenden Mittelalters und der Fr\u00fchen Neuzeit b\u00fcndeln und in neue Konstellationen treten.<br\/><br\/>Der Text dieses Bandes folgt seitenidentisch Bd. 7 der Ausgabe \u00bbGiordano Bruno Werke\u00ab, herausgegeben von Thomas Leinkauf."},"doi":{"46694":""},"isbn":{"46694":"978-3-7873-5141-1"},"marketing_short_text":{"46694":""},"recension_text":{"46694":""},"language":{"46694":""},"cover":{"46694":"Gebunden"},"pages":{"46694":"CXL, 711 Seiten."},"edition":{"46694":""},"pod":{"46694":"Nein"},"copyright_year":{"46694":""},"vlb_tix_link":{"46694":"https:\/\/neu.vlbtix.de\/products\/9783787351411?type=gtin"},"defaultValues":{"163":"11"}};
17084            const swatchConfig = {"163":{"11":{"type":"0","value":"Gebunden","label":"Gebunden"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
17085
17086            if (typeof window.amxnotif_wrap_attributes === 'function') {
17087                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
17088                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
17089            }
17090
17091            const configurableOptionsComponent = initConfigurableOptions(
17092                '46712',
17093                config
17094            );
17095            const swatchOptionsComponent = initSwatchOptions(
17096                swatchConfig
17097            );
17098
17099            // DWS - Configurable product preselect start
17100            const confProdPreSelect = () => {
17101                return {
17102                    preselectQuerystringItems() {
17103                        var data = {"id":"46694","output":"11"};
17104                        const urlQueryParams = new URLSearchParams(window.location.search);
17105
17106                                                this.$nextTick(() => {
17107                            setTimeout(() => {
17108                                const rootEl = this.$root || this.$el;
17109                                if (!rootEl) return;
17110
17111                                const applySelection = (attrCode, attrValue) => {
17112                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
17113
17114                                    const attributes = Object.values(this.optionConfig.attributes || {});
17115                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
17116
17117                                    if (targetAttr) {
17118                                        const attrId = String(targetAttr.id);
17119                                        const optionVal = String(attrValue);
17120
17121                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
17122
17123                                        if (inputEl) {
17124                                                                                        inputEl.click();
17125                                            inputEl.dispatchEvent(new Event('change', {
17126                                                bubbles: true
17127                                            }));
17128                                        } else {
17129                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
17130                                            if (selectEl) {
17131                                                selectEl.value = optionVal;
17132                                                selectEl.dispatchEvent(new Event('change', {
17133                                                    bubbles: true
17134                                                }));
17135                                            }
17136                                        }
17137
17138                                                                                this.changeOption(attrId, optionVal, false);
17139                                    }
17140                                };
17141
17142                                                                if (data && typeof data === 'object') {
17143                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
17144                                }
17145
17146                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
17147                                    if (attribute && attribute.code) {
17148                                        let optionValue = urlQueryParams.get(attribute.code);
17149                                        if (optionValue) {
17150                                            let optionId = false;
17151                                            const attributes = Object.values(this.optionConfig.attributes || {});
17152                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
17153
17154                                            let found = false;
17155                                            Object.values(targetAttr.options).map(option => {
17156                                                if (found === false && option.label === optionValue) {
17157                                                    optionId = option.id;
17158                                                    found = true;
17159                                                }
17160                                            });
17161
17162                                            const attrId = String(targetAttr.id);
17163                                            let optionVal = String(optionValue);
17164                                            if (found) {
17165                                                optionVal = String(optionId);
17166                                            }
17167
17168                                            applySelection(attribute.code, optionVal);
17169                                        }
17170                                    }
17171                                });
17172                            }, 100);
17173                        });
17174                    }
17175                }
17176            };
17177            // DWS - Configurable product preselect end
17178
17179            const result = Object.assign(
17180                configurableOptionsComponent,
17181                swatchOptionsComponent, {
17182                    productId: '46712',
17183                    productIndex: 0,
17184                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
17185                    showSwatches: false,
17186                    precalcOptions: {},
17187                    originalInit: configurableOptionsComponent.init,
17188                    init() {
17189                        try {
17190                            this.precalcOptions = {};
17191                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
17192                            this.preselectQuerystringItems();
17193                            if (Array.isArray(attrSource)) {
17194                                attrSource.forEach(attr => {
17195                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
17196                                });
17197                            } else if (attrSource && typeof attrSource === 'object') {
17198                                Object.keys(attrSource).forEach(id => {
17199                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
17200                                });
17201                            }
17202                        } catch (e) {
17203                            console.error('Pre-calc error:', e);
17204                        }
17205
17206                        if (typeof this.originalInit === 'function') {
17207                            this.originalInit();
17208                        }
17209
17210                        try {
17211                            this.initShowSwatchesIntersect();
17212                        } catch (e) {
17213                            console.error('intersect error:', e);
17214                        }
17215                    },
17216
17217                    updateGallery() {
17218                        if (!this.productIndex) return;
17219
17220                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
17221                                method: 'GET',
17222                                headers: {
17223                                    'Content-Type': 'application/json',
17224                                    'X-Requested-With': 'XMLHttpRequest'
17225                                }
17226                            })
17227                            .then(response => response.json())
17228                            .then(data => {
17229                                if (data && data.medium) {
17230                                    window.dispatchEvent(new CustomEvent("update-gallery-46712", {
17231                                        detail: data.medium
17232                                    }));
17233                                }
17234                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
17235                    },
17236
17237
17238                    initShowSwatchesIntersect() {
17239                        const observer = new IntersectionObserver(entries => {
17240                            if (entries[0].isIntersecting) {
17241                                this.showSwatches = true;
17242                                observer.disconnect();
17243                            }
17244                        }, {
17245                            rootMargin: '512px'
17246                        });
17247                        observer.observe(this.$el);
17248                    },
17249                    getOptions(attrId) {
17250                        return this.precalcOptions[attrId] || [];
17251                    },
17252                    getOptionsByAttrId() {
17253                        return this.getOptions(this.$el.dataset.attributeId);
17254                    },
17255                    _getItemId() {
17256                        if (this.item && this.item.id) return this.item.id;
17257                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
17258                    },
17259                    getSwatchOptionHtmlId() {
17260                        const itemId = this._getItemId();
17261                        return itemId ? this.$id(`attribute-option-46712-${itemId}`) : '';
17262                    },
17263                    getSwatchOptionHtmlIdGroup() {
17264                        const itemId = this._getItemId();
17265                        return itemId ? [`attribute-option-46712-${itemId}`] : [];
17266                    },
17267                    getAttributeSwatchData(attributeId) {
17268                        const data = Object.assign({}, this.swatchConfig[attributeId]);
17269                        if (data['additional_data']) {
17270                            try {
17271                                data['details'] = JSON.parse(data['additional_data']);
17272                            } catch (e) {
17273                                data['details'] = {};
17274                            }
17275                        }
17276                        return data;
17277                    },
17278                    getSwatchType(attributeId, optionId) {
17279                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
17280                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
17281                        }
17282                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
17283                            this.swatchConfig[attributeId].details.swatch_input_type :
17284                            "empty";
17285                        if (type === 'visual') {
17286                            const config = this.swatchConfig[attributeId];
17287                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
17288                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
17289                            }
17290                            // Fallback to first option type
17291                            for (const oId in config) {
17292                                if (config[oId] && typeof config[oId].type !== 'undefined') {
17293                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
17294                                }
17295                            }
17296                        }
17297                        return type;
17298                    },
17299                    mapSwatchTypeNumberToTypeCode(type) {
17300                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
17301                    },
17302                    isTextSwatch() {
17303                        const itemId = this._getItemId();
17304                        if (!this.$el || !itemId) return false;
17305                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
17306                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
17307                    },
17308
17309                    getSwatchText() {
17310                        const itemId = this._getItemId();
17311                        if (this.item) return this.item.label || '';
17312                        if (!this.$el || !itemId) return '';
17313                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
17314                        const options = attrId ? this.getOptions(attrId) : [];
17315                        const opt = options.find(o => o.id == itemId);
17316                        return opt ? opt.label : '';
17317                    },
17318                    getSwatchBackgroundStyle() {
17319                        const itemId = this._getItemId();
17320                        if (!this.$el || !itemId) return '';
17321                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
17322                        if (!attrId) return '';
17323                        const type = this.getSwatchType(attrId, itemId);
17324                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
17325                            this.swatchConfig[attrId][itemId] :
17326                            null;
17327                        if (!swatchData) return '';
17328                        if (type === "color") return 'background-color:' + swatchData.value;
17329                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
17330                        return '';
17331                    },
17332                    swatchOptionClasses() {
17333                        const itemId = this._getItemId();
17334                        if (!this.$el || !itemId) return {};
17335                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
17336                        return {
17337                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
17338                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
17339                            'w-6 h-6': !this.isTextSwatch()
17340                        }
17341                    },
17342
17343                    onFocusSwatchItem() {
17344                        const itemId = this._getItemId();
17345                        if (itemId) this.focusedLabel = itemId;
17346                    },
17347                    onChangeOption() {
17348                        const itemId = this._getItemId();
17349                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
17350                        if (attrId && itemId) this.changeOption(attrId, itemId);
17351                    },
17352                    changeOption(attributeId, value) {
17353                        if (value === '') {
17354                            return;
17355                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
17356                        } else {
17357                            this.selectedValues[attributeId] = value;
17358                        }
17359
17360                        this.findSimpleIndex();
17361                        this.findAllowedAttributeOptions();
17362                        this.updatePrices();
17363                        this.updateGallery();
17364
17365                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
17366                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
17367
17368                        const eventDetail = {
17369                            productId: this.productId,
17370                            optionId: attributeId,
17371                            value: value,
17372                            productIndex: this.productIndex || 0,
17373                            selectedValues: this.selectedValues,
17374                            candidates: candidates,
17375                            sourceElement: this.$el
17376                        };
17377
17378                        // Dispatch for Amasty
17379                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
17380                            detail: eventDetail
17381                        }));
17382
17383                        // Dispatch for Hyva listing
17384                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
17385                            detail: eventDetail
17386                        }));
17387                    },
17388
17389
17390                    clearOptionIfActive() {
17391                        const itemId = this._getItemId();
17392                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
17393                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
17394                            this.changeOption(attrId, '');
17395
17396                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
17397                            if (!input && this.$el?.querySelector) {
17398                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
17399                            }
17400                            if (!input && this.$el?.closest) {
17401                                const root = this.$el.closest('[data-product-id]') || this.$el;
17402                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
17403                            }
17404                            if (input) {
17405                                input.checked = false;
17406                            }
17407                        }
17408                    },
17409                    get optionIsEnabled() {
17410                        const itemId = this._getItemId();
17411                        if (!this.$el || !itemId) return true;
17412                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
17413                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
17414                        return !!allowedOptions.find(opt => opt.id == itemId);
17415                    },
17416                    get isSelected() {
17417                        const itemId = this._getItemId();
17418                        if (!this.$el || !itemId) return false;
17419                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
17420                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
17421                    },
17422                    get isSwatchRequired() {
17423                        if (!this.$el) return false;
17424                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
17425                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
17426                    },
17427                    focusedLabel: false,
17428                    activeTooltipItem: false,
17429                    tooltipPositionElement: false,
17430                    setActiveTooltipItem() {
17431                        const itemId = this._getItemId();
17432                        if (!this.$el || !itemId) return;
17433                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
17434                        this.activeTooltipItem = {
17435                            attribute: attrId,
17436                            item: itemId,
17437                            index: 0
17438                        };
17439                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
17440                    },
17441                    unsetActiveTooltipItem() {
17442                        this.activeTooltipItem = false;
17443                    }
17444                },
17445                confProdPreSelect()
17446            );
17447
17448            if (result.optionConfig && result.optionConfig.attributes) {
17449                const attributes = result.optionConfig.attributes;
17450                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
17451                    let source = attributes;
17452                    if (Array.isArray(attributes)) {
17453                        source = {};
17454                        attributes.forEach(attr => {
17455                            if (attr && attr.id) source[attr.id] = attr;
17456                        });
17457                    }
17458                    const values = Object.values(source);
17459                    const wrapper = Object.assign(values, source);
17460                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
17461                        value: true,
17462                        enumerable: false
17463                    });
17464                    result.optionConfig.attributes = wrapper;
17465                }
17466            }
17467
17468            return result;
17469        }
17470
17471        window.addEventListener('alpine:init', () => {
17472            Alpine.data('initConfigurableSwatchOptions_46712', initConfigurableSwatchOptions_46712);
17473        }, {
17474            once: true
17475        });
17476    </script>
17476
17477    
17478    <div x-data="initConfigurableSwatchOptions_46712" x-defer="intersect">
17479        <div class="pagebuilder-home-hidden">
17480                                            
17481                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
17482                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
17483                        <template x-if="showSwatches">
17484                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-46712-163" role="radiogroup" aria-label="Einband">
17485                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
17486                                    <div :data-option-id="item.id" style="display: contents">
17487                                        <div x-id="getSwatchOptionHtmlIdGroup">
17488    <template x-if="optionIsEnabled">
17489        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
17489self="unsetActiveTooltipItem">
17490            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-46712-163">
17491            <div>
17492                <template x-if="isTextSwatch">
17493                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
17494                </template>
17495                <template x-if="!optionIsActive(163, item.id)">
17496                    <div>
17497                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
17498                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
17499                        </svg>
17500                    </div>
17501                </template>
17502            </div>
17503        </label>
17504    </template>
17505</div>                                    </div>
17506                                </template>
17507                            </div>
17508                        </template>
17509                    </div>
17510                </div>
17511                    </div>
17512    </div>
17513            
17514                                                <div class="meta py-4 pagebuilder-home-hidden">
17515                <div x-data="initMarketingShortText_46712()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
17516                    <!-- Marketing short text -->
17517                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
17518                    </div>
17519
17520                    <!-- Short description -->
17521                                                                <div class="short-description">
17522                            Die Heroischen Leidenschaften, &raquo;De gl&rsquo;heroici furori&laquo;, sind der letzte der in italienischer Sprache geschriebenen Dialoge Brunos, die s&auml;mtlich zwischen 1583 und 1585 in England verfasst wurden. ...                            <a href="https://meiner.de/fmv_de/von-den-heroischen-leidenschaften-21550" class="underline">mehr</a>
17523                        </div>
17524                                    </div>
17525
17526                <!-- Series  -->
17527                                    <div class="mb-1">
17528                        <span class="sr-only">Reihe:</span>
17529                        <a href="https://meiner.de/fmv_de/programm/reihen/philosophische-bibliothek">
17530                            <span>Philosophische Bibliothek</span>
17531                        </a>
17532                                                    796                                            </div>
17533                
17534                
17535                                                    <div class="mb-1">
17536                        <span x-data="initEditionText_46712()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
17537                            <!-- Marketing short text -->
17538                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, CXL, 711 Seiten.                        </span>
17539                    </div>
17540                
17541                            </div>
17542            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
17543                
17544                <div class="justify-end" x-data="initPriceBox()" @update-prices-46712.window="updatePrice($event.detail);">
17545                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="46712" data-price-box="product-id-46712"><span class="normal-price">
17546    <span x-data x-id="['product\u002Dprice\u002D46712']" class="price-container price-final_price tax weee">
17547            <span class="price-label">Ab</span>
17548                <span class="approx-price">ca. </span>
17549        <span :id="$id('product\u002Dprice\u002D46712')" data-price-amount="98" data-price-type="finalPrice" class="price-wrapper "><span class="price">98,00&nbsp;&euro;</span></span>
17550        </span>
17551</span>
17552
17553
17554</div>                </div>
17555
17556                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
17557                                            <div class="open-access-container open-access-container-46712                    flex mt-4 ml-auto sm:mt-0 hidden">
17558                            <div class="text-gray-700">
17559                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
17560                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
17561                                        Kostenlos online lesen                                    </a>
17562                                </button>
17563                            </div>
17564                        </div>
17565                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Von den heroischen Leidenschaften" aria-label="In den Warenkorb Von den heroischen Leidenschaften" data-addto="cart">
17566                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
17567  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
17568</svg>
17569                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
17570                                        In den Warenkorb                                    </span>
17571                                </button>
17572                                                                                                                    
17573<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(46712)" aria-label="Zur Wunschliste hinzuf&uuml;gen Von den heroischen Leidenschaften" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
17574    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
17575  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
17576</svg>
17577</button>
17578                                    </div>
17579            </div>
17580        </div>
17581        
17581<script>
17582            function initMarketingShortText_46712() {
17583                var marketingShortTextConfig = {};
17584                if (typeof window.initConfigurableSwatchOptions_46712 === "function") {
17585                    var fullConfig = window.initConfigurableSwatchOptions_46712().optionConfig
17586                    var marketingShortTextConfig = fullConfig.marketing_short_text;
17587                }
17588                return {
17589                    marketingShortText: '',
17590                    config: marketingShortTextConfig,
17591                    productId: '46712',
17592                    getMarketingShortText(detail) {
17593                        this.marketingShortText = detail.productIndex ?
17594                            this.config[detail.productIndex] :
17595                            null;
17596                    },
17597                    eventListeners: {
17598                        ['@listing-configurable-selection-changed.window'](event) {
17599                            if (this.productId == event.detail.productId) {
17600                                this.getMarketingShortText(event.detail);
17601                            }
17602
17603                        }
17604                    }
17605                }
17606            }
17607
17608            function initEditionText_46712() {
17609                var editionTextConfig = {};
17610                if (typeof window.initConfigurableSwatchOptions_46712 === "function") {
17611                    var fullConfig = window.initConfigurableSwatchOptions_46712().optionConfig
17612                    var editionTextConfig = fullConfig.edition;
17613                }
17614                return {
17615                    editionText: '',
17616                    config: editionTextConfig,
17617                    productId: '46712',
17618                    getEditionText(detail) {
17619                        this.editionText = detail.productIndex ?
17620                            this.config[detail.productIndex] :
17621                            null;
17622                    },
17623                    eventListeners: {
17624                        ['@listing-configurable-selection-changed.window'](event) {
17625                            if (this.productId == event.detail.productId) {
17626                                this.getEditionText(event.detail);
17627                            }
17628
17629                        }
17630                    }
17631                }
17632            }
17633        </script>
17633
17634                    </form>
17635                    </div>
17636        
17637<div class="carousel-nav flex items-center justify-center flex-1 p-4">
17638    <button aria-label="Zur&uuml;ck" title="Zur&uuml;ck" class="glider-prev w-8 h-8 mr-1 text-black rounded-full outline-none focus:outline-none hidden">
17639        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true">
17640  <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"></path>
17641</svg>
17642    </button>
17643    <div role="tablist" class="glider-dots select-none flex flex-wrap mx-1 justify-center p-0 focus:outline-none"></div>
17644    <button aria-label="Weiter" title="Weiter" class="glider-next w-8 h-8 ml-1 text-black rounded-full outline-none focus:outline-none hidden">
17645        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true">
17646  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"></path>
17647</svg>
17648    </button>
17649</div>
17650    </div>
17651</div></div></div><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="" data-element="inner" data-pb-style="QXPL12C"><div data-content-type="block" data-appearance="default" data-element="main"><div class="widget block block-static-block">
17652    <style>.cmsb221-p-5 {
17653padding: 1.25rem
17654}</style>
17655<style>#html-body [data-pb-style=DUCTUT8],#html-body [data-pb-style=TRWA7Q5],#html-body [data-pb-style=UVUU7SS]{background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll}#html-body [data-pb-style=TRWA7Q5]{justify-content:flex-start;display:flex;flex-direction:column}#html-body [data-pb-style=DUCTUT8],#html-body [data-pb-style=UVUU7SS]{align-self:stretch}#html-body [data-pb-style=FFPQP3K],#html-body [data-pb-style=GGJKXFA]{display:flex;width:100%}#html-body [data-pb-style=JKFFOWB],#html-body [data-pb-style=YFYQ46M]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;width:33.3333%;align-self:stretch}#html-body [data-pb-style=JKFFOWB]{width:16.6667%;padding:20px}#html-body [data-pb-style=AX47VIA]{width:33.3333%}#html-body [data-pb-style=ATSD6B9],#html-body [data-pb-style=AX47VIA],#html-body [data-pb-style=JETSG7K],#html-body [data-pb-style=M916TWJ],#html-body [data-pb-style=P64T4DU],#html-body [data-pb-style=SJLURGH]{justify-content:flex-start;display:flex;flex-direction:column;background-position:left top;background-size:cover;background-repeat:no-repeat;background-attachment:scroll;align-self:stretch}#html-body [data-pb-style=SJLURGH]{width:16.6667%;padding:20px}#html-body [data-pb-style=ATSD6B9],#html-body [data-pb-style=JETSG7K],#html-body [data-pb-style=M916TWJ],#html-body [data-pb-style=P64T4DU]{width:33.3333%}#html-body [data-pb-style=ATSD6B9],#html-body [data-pb-style=M916TWJ],#html-body [data-pb-style=P64T4DU]{width:16.6667%}#html-body [data-pb-style=ATSD6B9],#html-body [data-pb-style=M916TWJ]{width:33.3333%}#html-body [data-pb-style=M916TWJ]{width:16.6667%;padding:20px}#html-body [data-pb-style=FPWQ5RG]{text-align:center;border-style:none}#html-body [data-pb-style=JW7P663],#html-body [data-pb-style=X7T6QNN]{max-width:100%;height:auto}#html-body [data-pb-style=TR6AC6Q]{text-align:center;border-style:none}#html-body [data-pb-style=S7HFVFK],#html-body [data-pb-style=VEEPWHT]{max-width:100%;height:auto}#html-body [data-pb-style=JOOBUVO]{text-align:center;border-style:none}#html-body [data-pb-style=DUBXDKE],#html-body [data-pb-style=IOE1KTS]{max-width:100%;height:auto}#html-body [data-pb-style=E6JP6SO]{text-align:center;border-style:none}#html-body [data-pb-style=DSC0SG6],#html-body [data-pb-style=F8IDGAX]{max-width:100%;height:auto}@media only screen and (max-width: 768px) { #html-body [data-pb-style=E6JP6SO],#html-body [data-pb-style=FPWQ5RG],#html-body [data-pb-style=JOOBUVO],#html-body [data-pb-style=TR6AC6Q]{border-style:none} }</style><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="false" data-element="inner" data-pb-style="TRWA7Q5"><h2 data-content-type="heading" data-appearance="default" data-element="main">Unsere B&uuml;cher in der Presse</h2><div class="pagebuilder-column-group card cmsb221-p-5" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-background-lazy-load="false" data-element="main" data-pb-style="UVUU7SS"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="GGJKXFA"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="YFYQ46M"><div data-content-type="text" data-appearance="default" data-element="main"><h5 id="SR33SIE">Heiko Christians: &Uuml;ber die Gefahr</h5>
17656<blockquote>&raquo;Christians hat ein kleines B&uuml;chlein mit geballtem Inhalt vorgelegt, das einem fast vergessenen Begleiter des Menschen endlich einen begrifflichen Rahmen geben will.&laquo;</blockquote>
17657<p style="text-align: right;"><em>Frankfurter Rundschau</em></p></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="JKFFOWB"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="FPWQ5RG"><a href="/a-ber-die-gefahr-21363" target="" data-link-type="default" title="" data-element="link"><img class="pagebuilder-mobile-hidden" src="https://meiner.de/media/wysiwyg/FMV/Cover/9783787350988_1.png" alt="" title="" loading="lazy" data-use-native-image-dimensions="false" width="150" height="" data-element="desktop_image" data-pb-style="X7T6QNN"><img class="pagebuilder-mobile-only" src="https://meiner.de/media/wysiwyg/FMV/Cover/9783787350988_1.png" alt="" title="" loading="lazy" data-use-native-image-dimensions="false" width="150" height="" data-element="mobile_image" data-pb-style="JW7P663"></a></figure></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="AX47VIA"><div data-content-type="text" data-appearance="default" data-element="main"><h5>Hans Vaihinger: Die Philosophie des Als Ob</h5>
17658<blockquote>
17659<p>&raquo;Es ist ein gro&szlig;er Verdienst des Meiner-Verlags, diese Ausgabe der breiten &Ouml;ffentlichkeit mit der klugen Einf&uuml;hrung von Hartung zug&auml;nglich zu machen. Auch wenn Theorien scheitern, kann die Lust am Philosophieren wachsen. Und was br&auml;uchten wir heute mehr als Leute, die sich gerne den Kopf zerbrechen?&laquo;</p>
17660</blockquote>
17661<p style="text-align: right;"><em>Michael Hesse, Frankfurter Rundschau</em></p></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="SJLURGH"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="TR6AC6Q"><a href="/die-philosophie-des-als-ob-19837" target="" data-link-type="default" title="" data-element="link"><img class="pagebuilder-mobile-hidden" src="https://meiner.de/media/wysiwyg/FMV/Cover/9783787350155_1.png" alt="" title="" loading="lazy" data-use-native-image-dimensions="false" width="150" height="" data-element="desktop_image" data-pb-style="S7HFVFK"><img class="pagebuilder-mobile-only" src="https://meiner.de/media/wysiwyg/FMV/Cover/9783787350155_1.png" alt="" title="" loading="lazy" data-use-native-image-dimensions="false" width="150" height="" data-element="mobile_image" data-pb-style="VEEPWHT"></a></figure></div></div></div><div class="pagebuilder-column-group card cmsb221-p-5" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-background-lazy-load="false" data-element="main" data-pb-style="DUCTUT8"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="FFPQP3K"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="JETSG7K"><div data-content-type="text" data-appearance="default" data-element="main"><h5>Mirjam Schaub: Radikalit&auml;t</h5>
17662<blockquote>&raquo;Stilistisch ist das Werk ein Genuss. Schaub meidet den trockenen Jargon des Elfenbeinturms, ohne an analytischer Sch&auml;rfe zu verlieren. Sie schreibt essayistisch, oft pointiert, bisweilen mit feiner Ironie.&laquo;</blockquote>
17663<p id="B020V96" style="text-align: right;"><em>der blaue reiter</em></p></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="P64T4DU"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="JOOBUVO"><a href="/radikalita-t-set-band-1-2-20119" target="" data-link-type="default" title="" data-element="link"><img class="pagebuilder-mobile-hidden" src="https://meiner.de/media/wysiwyg/FMV/Cover/9783787349388_1.png" alt="" title="" loading="lazy" data-use-native-image-dimensions="false" width="150" height="" data-element="desktop_image" data-pb-style="IOE1KTS"><img class="pagebuilder-mobile-only" src="https://meiner.de/media/wysiwyg/FMV/Cover/9783787349388_1.png" alt="" title="" loading="lazy" data-use-native-image-dimensions="false" width="150" height="" data-element="mobile_image" data-pb-style="DUBXDKE"></a></figure></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="ATSD6B9"><div data-content-type="text" data-appearance="default" data-element="main"><h5>Matthias Perkams: Philosophie in der Antike</h5>
17664<blockquote>&raquo;Ein Nachschlagewerk par excellence, das Interessierte aber immer auch dazu motiviert, noch ein wenig mehr zu lesen, ein wenig&nbsp;weiterzubl&auml;ttern und zu vertiefen, was gerade den Ansto&szlig; gab, um das Buch in die Hand zu nehmen.&laquo;</blockquote>
17665<p style="text-align: right;"><em>Mannheimer Morgen</em></p></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="M916TWJ"><figure data-content-type="image" data-appearance="full-width" data-element="main" data-pb-style="E6JP6SO"><a href="/philosophie-in-der-antike" target="" data-link-type="default" title="" data-element="link"><img class="pagebuilder-mobile-hidden" src="https://meiner.de/media/wysiwyg/FMV/Cover/9783787342297_1.png" alt="" title="" loading="lazy" data-use-native-image-dimensions="false" width="150" height="" data-element="desktop_image" data-pb-style="F8IDGAX"><img class="pagebuilder-mobile-only" src="https://meiner.de/media/wysiwyg/FMV/Cover/9783787342297_1.png" alt="" title="" loading="lazy" data-use-native-image-dimensions="false" width="150" height="" data-element="mobile_image" data-pb-style="DSC0SG6"></a></figure></div></div></div></div></div></div>
17666</div></div></div><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="" data-element="inner" data-pb-style="BE6DLBB"><h3 data-content-type="heading" data-appearance="default" data-element="main">Demokratie unter Beschuss</h3><div class="pagebuilder-column-group card cmsp2-p-5" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-background-lazy-load="false" data-element="main" data-pb-style="DQURHCH"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="SUCVL14"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="HJDB5GU"><div data-content-type="text" data-appearance="default" data-element="main"><p>Demokratie lebt von Freiheit und Gleichheit, von &nbsp;offenem Diskurs und Teilhabe. Wo soziale Ungleichheit w&auml;chst, Debatten verrohen oder Freiheitsrechte infrage gestellt werden, wird Demokratie verletzlich.&nbsp;<br>Die hier versammelten Titel aus der Blauen Reihe fragen nach diesen Voraussetzungen &ndash; und danach, was demokratische Gesellschaften heute gef&auml;hrdet und was sie st&auml;
17666rken kann.</p></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="GSST2UT"><div data-content-type="products" data-appearance="carousel" data-autoplay="false" data-autoplay-speed="4000" data-infinite-loop="false" data-show-arrows="false" data-show-dots="true" data-carousel-mode="default" data-center-padding="90px" data-element="main">        <div class="glider-contain product-items widget-product-carousel">
17667        <div data-role="glider-content" class="mx-auto grid gap-4 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 relative overflow-y-hidden overflow-x-scroll">
17668                            
17669    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/4213/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk13612">
17670        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="4213">
17671                                    <a href="https://meiner.de/fmv_de/unterdra-ckung-durch-begla-ckung-13612" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
17672            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-4213.window="$el.src = $event.detail" alt="Unterdr&uuml;ckung durch Begl&uuml;ckung" title="Unterdr&uuml;ckung durch Begl&uuml;ckung" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787343751_3.jpg" :style="{
17673                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
17674                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
17675            }">
17676                    </a>
17677        <div class="product-info flex flex-col flex-grow ">
17678                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
17679                                    <div class="mb-2 text-sm text-gray-500 font-medium">
17680                                                                                    <a href="https://meiner.de/fmv_de/person/Ulrich-Steinvorth-13613/" class="mb-2">
17681                                    Ulrich Steinvorth                                                                    </a>
17682                                                                                                                                    </div>
17683                                <a class="product-item-link" href="https://meiner.de/fmv_de/unterdra-ckung-durch-begla-ckung-13612">
17684                    Unterdr&uuml;ckung durch Begl&uuml;ckung                </a>
17685                            </div>
17686
17687            <div x-data="initEditionText_4213()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
17688                <!-- Marketing short text -->
17689                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
17690                </div>
17691            </div>
17692
17693                            <div class="py-1 grid  mb-4 ">
17694                    
17695                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":4213,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":4213,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"8166":"1","8208":"1","8212":"1"},"childProductsAlertStatus":{"8166":"0","8208":"0","8212":"0"},"indexMapping":{"163:15":8166,"163:8":8208,"163:9":8212},"availabilityMessages":{"8166":"Lieferbar innerhalb von 3-5 Tagen","8208":"Download sofort  verf\u00fcgbar","8212":"Download sofort  verf\u00fcgbar"},"openAccess":{"4213":{"status":0},"8166":{"status":0},"8208":{"status":0},"8212":{"status":0}}},"availabilityMessages":{"8166":"Lieferbar innerhalb von 3-5 Tagen","8208":"Download sofort  verf\u00fcgbar","8212":"Download sofort  verf\u00fcgbar"},"openAccess":{"4213":{"status":0},"8166":{"status":0},"8208":{"status":0},"8212":{"status":0}}}'>
17696        <template x-if="containerVisible">
17697                            <!-- Popup Trigger -->
17698                <div>
17699                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
17700                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
17701                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
17702  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
17703<title>bell</title></svg>
17704</span>
17705                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
17706
17707                    <!-- Popup Modal -->
17708                    <template x-if="showModal">
17709                        <template x-teleport=".page-wrapper">
17710                            <div x-cloak class="fixed inset-0 flex items-center justify-center
17711                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
17712                                <div class="relative bg-white rounded-lg shadow-xl
17713                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
17714                                    <div class="p-6">
17715                                        <!-- Subscription Form for Popup -->
17716                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
17717                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
17718                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
17719                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
17720
17721                                            <div class="flex flex-col gap-3">
17722                                                <div class="flex-grow grow">
17723                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
17724                                                        shadow-xs focus:outline-none focus:outline-hidden
17725                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
17726                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
17727                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
17728                                                </div>
17729                                                <input type="hidden" name="product_id" :value="currentProductId">
17730                                                <input type="hidden" name="type" value="email">
17731
17732                                                
17733                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
17734
17735                                                <div class="amxnotif_guest_action">
17736                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
17737                                                        rounded-md focus:outline-none
17738                                                        focus:outline-hidden focus:ring-2
17739                                                        focus:ring-offset-2 disabled:opacity-50
17740                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
17741                                                        Benachrichtigen                                                    </button>
17742                                                </div>
17743                                            </div>
17744
17745                                                                                            <div class="flex items-start pt-2">
17746                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
17747                                                        text-blue-600 border-gray-300 rounded-sm">
17748                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
17749                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
17750                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
17751                                                </div>
17752                                                                                    </form>
17753                                    </div>
17754
17755                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
17756                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
17757                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
17758  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
17759<title>x</title></svg>
17760                                    </button>
17761                                </div>
17762                            </div>
17763                        </template>
17764                    </template>
17765                </div>
17766                    </template>
17767    </div>
17768
17769<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_4213" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":4213,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"8166":"1","8208":"1","8212":"1"},"childProductsAlertStatus":{"8166":"0","8208":"0","8212":"0"},"indexMapping":"{\u0022163:15\u0022:8166,\u0022163:8\u0022:8208,\u0022163:9\u0022:8212}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":4213,"availabilityMessages":{"8166":"Lieferbar innerhalb von 3-5 Tagen","8208":"Download sofort  verf\u00fcgbar","8212":"Download sofort  verf\u00fcgbar"},"openAccess":{"4213":{"status":0},"8166":{"status":0},"8208":{"status":0},"8212":{"status":0}}}'>
17770    
17771    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
17772        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
17773        <span x-html="optionsLabelText"></span>
17774    </p>
17775</div>                </div>
17776            
17777                                
17777<script>
17778        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
17779            try {
17780                const attributes = (config && config.attributes) ? config.attributes : null;
17781                if (!attributes) return [];
17782                let attr = null;
17783                if (Array.isArray(attributes)) {
17784                    for (let i = 0; i < attributes.length; i++) {
17785                        const a = attributes[i];
17786                        if (a && a.id == attrId) {
17787                            attr = a;
17788                            break;
17789                        }
17790                    }
17791                } else {
17792                    attr = attributes[attrId];
17793                }
17794                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
17795            } catch (e) {
17796                return [];
17797            }
17798        };
17799
17800        function initConfigurableSwatchOptions_4213() {
17801            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["8166"]},{"id":"8","label":"PDF","products":["8208"]},{"id":"9","label":"EPUB","products":["8212"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"8166":{"baseOldPrice":{"amount":27.943924233645},"oldPrice":{"amount":29.9},"basePrice":{"amount":27.943924233645},"finalPrice":{"amount":29.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"8208":{"baseOldPrice":{"amount":21.485980308411},"oldPrice":{"amount":22.99},"basePrice":{"amount":21.485980308411},"finalPrice":{"amount":22.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"8212":{"baseOldPrice":{"amount":21.485980308411},"oldPrice":{"amount":22.99},"basePrice":{"amount":21.485980308411},"finalPrice":{"amount":22.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":21.485980308411},"oldPrice":{"amount":22.99},"basePrice":{"amount":21.485980308411},"finalPrice":{"amount":22.99},"isApproxPrice":null},"productId":"4213","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"8166":{"163":"15"},"8208":{"163":"8"},"8212":{"163":"9"}},"salable":{"163":{"15":["8166"],"8":["8208"],"9":["8212"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"8166":"004335","8208":"004336","8212":"004375"},"output":{"8166":"Kartoniert","8208":"PDF","8212":"EPUB"},"original_name":{"8166":"","8208":"","8212":""},"openaccess_license_link":{"8166":"","8208":"","8212":""},"openaccess_license_name":{"8166":"","8208":"","8212":""},"openaccess_external_link":{"8166":"","8208":"","8212":""},"gpsr_safety_info":{"8166":"","8208":"","8212":""},"description":{"8166":"Was ist eine Demokratie, und wann ist sie liberal? Ist Politik legitim, wenn sie der Volkssouver\u00e4nit\u00e4t oder wenn sie den Menschenrechten entspricht? Was kann und was sollte man von der Politik erwarten, was ist \u00fcberhaupt Politik? Ulrich Steinvorth sucht in diesem Buch neue Antworten auf diese in der gegenw\u00e4rtigen politischen Lage brandaktuellen Fragen. <br\/><br\/>Ausgehend von Aldous Huxleys Fabel \u00bbBrave New World\u00ab, die eine Gesellschaft beschreibt, in der eine Minderheit mit technischen Mitteln die Mehrheit so manipuliert, dass sie ihre Unterdr\u00fcckung als Begl\u00fcckung empfindet und selbst Menschenrechtsverletzungen hinnimmt, wirft Steinvorth die oft gestellte Grundsatzfrage auf, was \u00fcberhaupt Politik oder das Politische ist. Er unterscheidet das (am Gesellschaftsvertrag und an Nutzenmaximierung orientierte) \u00f6konomische vom (nicht an Nutzenmaximierung orientierten) politischen Modell als den beiden wichtigsten Theorieans\u00e4tzen in der politischen Theorie und kritisiert das \u00f6konomische Modell in seiner vermutlich st\u00e4rksten Form, n\u00e4mlich in der, die John Rawls ihm gegeben hat. <br\/><br\/>Rawls verlangt von der Politik den Schutz der Selbstachtung aller, den nur eigengesetzliche Subgesellschaften geben k\u00f6nnen, wie Locke den Schutz der eigengesetzlichen Familie und Wirtschaft. Den Schutz eigengesetzlicher Gesellschaftssph\u00e4ren finden wir als Ziel der Politik auch bei Hegel und, in ausbauf\u00e4higer und auf gegebene politische Aufgaben anwendbarer Form, bei Max Weber. Dessen Wertsph\u00e4ren macht Steinvorths Buch, mit Anleihen bei so verschiedenen Autoren wie Aristoteles und Csikszentmihalyi, zur Grundlage seiner politischen Theorie.","8208":"Was ist eine Demokratie, und wann ist sie liberal? Ist Politik legitim, wenn sie der Volkssouver\u00e4nit\u00e4t oder wenn sie den Menschenrechten entspricht? Was kann und was sollte man von der Politik erwarten, was ist \u00fcberhaupt Politik? Ulrich Steinvorth sucht in diesem Buch neue Antworten auf diese in der gegenw\u00e4rtigen politischen Lage brandaktuellen Fragen. <br\/><br\/>
17801Ausgehend von Aldous Huxleys Fabel \u00bbBrave New World\u00ab, die eine Gesellschaft beschreibt, in der eine Minderheit mit technischen Mitteln die Mehrheit so manipuliert, dass sie ihre Unterdr\u00fcckung als Begl\u00fcckung empfindet und selbst Menschenrechtsverletzungen hinnimmt, wirft Steinvorth die oft gestellte Grundsatzfrage auf, was \u00fcberhaupt Politik oder das Politische ist. Er unterscheidet das (am Gesellschaftsvertrag und an Nutzenmaximierung orientierte) \u00f6konomische vom (nicht an Nutzenmaximierung orientierten) politischen Modell als den beiden wichtigsten Theorieans\u00e4tzen in der politischen Theorie und kritisiert das \u00f6konomische Modell in seiner vermutlich st\u00e4rksten Form, n\u00e4mlich in der, die John Rawls ihm gegeben hat. <br\/><br\/>Rawls verlangt von der Politik den Schutz der Selbstachtung aller, den nur eigengesetzliche Subgesellschaften geben k\u00f6nnen, wie Locke den Schutz der eigengesetzlichen Familie und Wirtschaft. Den Schutz eigengesetzlicher Gesellschaftssph\u00e4ren finden wir als Ziel der Politik auch bei Hegel und, in ausbauf\u00e4higer und auf gegebene politische Aufgaben anwendbarer Form, bei Max Weber. Dessen Wertsph\u00e4ren macht Steinvorths Buch, mit Anleihen bei so verschiedenen Autoren wie Aristoteles und Csikszentmihalyi, zur Grundlage seiner politischen Theorie.","8212":"Was ist eine Demokratie, und wann ist sie liberal? Ist Politik legitim, wenn sie der Volkssouver\u00e4nit\u00e4t oder wenn sie den Menschenrechten entspricht? Was kann und was sollte man von der Politik erwarten, was ist \u00fcberhaupt Politik? Ulrich Steinvorth sucht in diesem Buch neue Antworten auf diese in der gegenw\u00e4rtigen politischen Lage brandaktuellen Fragen. <br\/><br\/>Ausgehend von Aldous Huxleys Fabel \u00bbBrave New World\u00ab, die eine Gesellschaft beschreibt, in der eine Minderheit mit technischen Mitteln die Mehrheit so manipuliert, dass sie ihre Unterdr\u00fcckung als Begl\u00fcckung empfindet und selbst Menschenrechtsverletzungen hinnimmt, wirft Steinvorth die oft gestellte Grundsatzfrage auf, was \u00fcberhaupt Politik oder das Politische ist. Er unterscheidet das (am Gesellschaftsvertrag und an Nutzenmaximierung orientierte) \u00f6konomische vom (nicht an Nutzenmaximierung orientierten) politischen Modell als den beiden wichtigsten Theorieans\u00e4tzen in der politischen Theorie und kritisiert das \u00f6konomische Modell in seiner vermutlich st\u00e4rksten Form, n\u00e4mlich in der, die John Rawls ihm gegeben hat. <br\/><br\/>Rawls verlangt von der Politik den Schutz der Selbstachtung aller, den nur eigengesetzliche Subgesellschaften geben k\u00f6nnen, wie Locke den Schutz der eigengesetzlichen Familie und Wirtschaft. Den Schutz eigengesetzlicher Gesellschaftssph\u00e4ren finden wir als Ziel der Politik auch bei Hegel und, in ausbauf\u00e4higer und auf gegebene politische Aufgaben anwendbarer Form, bei Max Weber. Dessen Wertsph\u00e4ren macht Steinvorths Buch, mit Anleihen bei so verschiedenen Autoren wie Aristoteles und Csikszentmihalyi, zur Grundlage seiner politischen Theorie."},"doi":{"8166":"","8208":"10.28937\/978-3-7873-4336-2","8212":""},"isbn":{"8166":"978-3-7873-4335-5","8208":"978-3-7873-4336-2","8212":"978-3-7873-4375-1"},"marketing_short_text":{"8166":"","8208":"","8212":""},"recension_text":{"8166":"","8208":"","8212":""},"language":{"8166":"","8208":"","8212":""},"cover":{"8166":"Kartoniert","8208":"","8212":""},"pages":{"8166":"314 Seiten","8208":"314 Seiten","8212":"314 Seiten"},"edition":{"8166":"","8208":"Unver\u00e4ndertes eBook der 1. Auflage von 2023","8212":"Unver\u00e4ndertes EPUB der 1. Auflage von 2023"},"pod":{"8166":"Nein","8208":"Nein","8212":"Nein"},"copyright_year":{"8166":"","8208":"","8212":""},"vlb_tix_link":{"8166":"https:\/\/neu.vlbtix.de\/products\/9783787343355?type=gtin","8208":"","8212":""},"defaultValues":{"163":"15"}};
17802            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
17803
17804            if (typeof window.amxnotif_wrap_attributes === 'function') {
17805                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
17806                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
17807            }
17808
17809            const configurableOptionsComponent = initConfigurableOptions(
17810                '4213',
17811                config
17812            );
17813            const swatchOptionsComponent = initSwatchOptions(
17814                swatchConfig
17815            );
17816
17817            // DWS - Configurable product preselect start
17818            const confProdPreSelect = () => {
17819                return {
17820                    preselectQuerystringItems() {
17821                        var data = {"id":"8166","output":"15"};
17822                        const urlQueryParams = new URLSearchParams(window.location.search);
17823
17824                                                this.$nextTick(() => {
17825                            setTimeout(() => {
17826                                const rootEl = this.$root || this.$el;
17827                                if (!rootEl) return;
17828
17829                                const applySelection = (attrCode, attrValue) => {
17830                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
17831
17832                                    const attributes = Object.values(this.optionConfig.attributes || {});
17833                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
17834
17835                                    if (targetAttr) {
17836                                        const attrId = String(targetAttr.id);
17837                                        const optionVal = String(attrValue);
17838
17839                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
17840
17841                                        if (inputEl) {
17842                                                                                        inputEl.click();
17843                                            inputEl.dispatchEvent(new Event('change', {
17844                                                bubbles: true
17845                                            }));
17846                                        } else {
17847                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
17848                                            if (selectEl) {
17849                                                selectEl.value = optionVal;
17850                                                selectEl.dispatchEvent(new Event('change', {
17851                                                    bubbles: true
17852                                                }));
17853                                            }
17854                                        }
17855
17856                                                                                this.changeOption(attrId, optionVal, false);
17857                                    }
17858                                };
17859
17860                                                                if (data && typeof data === 'object') {
17861                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
17862                                }
17863
17864                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
17865                                    if (attribute && attribute.code) {
17866                                        let optionValue = urlQueryParams.get(attribute.code);
17867                                        if (optionValue) {
17868                                            let optionId = false;
17869                                            const attributes = Object.values(this.optionConfig.attributes || {});
17870                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
17871
17872                                            let found = false;
17873                                            Object.values(targetAttr.options).map(option => {
17874                                                if (found === false && option.label === optionValue) {
17875                                                    optionId = option.id;
17876                                                    found = true;
17877                                                }
17878                                            });
17879
17880                                            const attrId = String(targetAttr.id);
17881                                            let optionVal = String(optionValue);
17882                                            if (found) {
17883                                                optionVal = String(optionId);
17884                                            }
17885
17886                                            applySelection(attribute.code, optionVal);
17887                                        }
17888                                    }
17889                                });
17890                            }, 100);
17891                        });
17892                    }
17893                }
17894            };
17895            // DWS - Configurable product preselect end
17896
17897            const result = Object.assign(
17898                configurableOptionsComponent,
17899                swatchOptionsComponent, {
17900                    productId: '4213',
17901                    productIndex: 0,
17902                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
17903                    showSwatches: false,
17904                    precalcOptions: {},
17905                    originalInit: configurableOptionsComponent.init,
17906                    init() {
17907                        try {
17908                            this.precalcOptions = {};
17909                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
17910                            this.preselectQuerystringItems();
17911                            if (Array.isArray(attrSource)) {
17912                                attrSource.forEach(attr => {
17913                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
17914                                });
17915                            } else if (attrSource && typeof attrSource === 'object') {
17916                                Object.keys(attrSource).forEach(id => {
17917                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
17918                                });
17919                            }
17920                        } catch (e) {
17921                            console.error('Pre-calc error:', e);
17922                        }
17923
17924                        if (typeof this.originalInit === 'function') {
17925                            this.originalInit();
17926                        }
17927
17928                        try {
17929                            this.initShowSwatchesIntersect();
17930                        } catch (e) {
17931                            console.error('intersect error:', e);
17932                        }
17933                    },
17934
17935                    updateGallery() {
17936                        if (!this.productIndex) return;
17937
17938                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
17939                                method: 'GET',
17940                                headers: {
17941                                    'Content-Type': 'application/json',
17942                                    'X-Requested-With': 'XMLHttpRequest'
17943                                }
17944                            })
17945                            .then(response => response.json())
17946                            .then(data => {
17947                                if (data && data.medium) {
17948                                    window.dispatchEvent(new CustomEvent("update-gallery-4213", {
17949                                        detail: data.medium
17950                                    }));
17951                                }
17952                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
17953                    },
17954
17955
17956                    initShowSwatchesIntersect() {
17957                        const observer = new IntersectionObserver(entries => {
17958                            if (entries[0].isIntersecting) {
17959                                this.showSwatches = true;
17960                                observer.disconnect();
17961                            }
17962                        }, {
17963                            rootMargin: '512px'
17964                        });
17965                        observer.observe(this.$el);
17966                    },
17967                    getOptions(attrId) {
17968                        return this.precalcOptions[attrId] || [];
17969                    },
17970                    getOptionsByAttrId() {
17971                        return this.getOptions(this.$el.dataset.attributeId);
17972                    },
17973                    _getItemId() {
17974                        if (this.item && this.item.id) return this.item.id;
17975                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
17976                    },
17977                    getSwatchOptionHtmlId() {
17978                        const itemId = this._getItemId();
17979                        return itemId ? this.$id(`attribute-option-4213-${itemId}`) : '';
17980                    },
17981                    getSwatchOptionHtmlIdGroup() {
17982                        const itemId = this._getItemId();
17983                        return itemId ? [`attribute-option-4213-${itemId}`] : [];
17984                    },
17985                    getAttributeSwatchData(attributeId) {
17986                        const data = Object.assign({}, this.swatchConfig[attributeId]);
17987                        if (data['additional_data']) {
17988                            try {
17989                                data['details'] = JSON.parse(data['additional_data']);
17990                            } catch (e) {
17991                                data['details'] = {};
17992                            }
17993                        }
17994                        return data;
17995                    },
17996                    getSwatchType(attributeId, optionId) {
17997                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
17998                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
17999                        }
18000                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
18001                            this.swatchConfig[attributeId].details.swatch_input_type :
18002                            "empty";
18003                        if (type === 'visual') {
18004                            const config = this.swatchConfig[attributeId];
18005                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
18006                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
18007                            }
18008                            // Fallback to first option type
18009                            for (const oId in config) {
18010                                if (config[oId] && typeof config[oId].type !== 'undefined') {
18011                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
18012                                }
18013                            }
18014                        }
18015                        return type;
18016                    },
18017                    mapSwatchTypeNumberToTypeCode(type) {
18018                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
18019                    },
18020                    isTextSwatch() {
18021                        const itemId = this._getItemId();
18022                        if (!this.$el || !itemId) return false;
18023                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
18024                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
18025                    },
18026
18027                    getSwatchText() {
18028                        const itemId = this._getItemId();
18029                        if (this.item) return this.item.label || '';
18030                        if (!this.$el || !itemId) return '';
18031                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
18032                        const options = attrId ? this.getOptions(attrId) : [];
18033                        const opt = options.find(o => o.id == itemId);
18034                        return opt ? opt.label : '';
18035                    },
18036                    getSwatchBackgroundStyle() {
18037                        const itemId = this._getItemId();
18038                        if (!this.$el || !itemId) return '';
18039                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
18040                        if (!attrId) return '';
18041                        const type = this.getSwatchType(attrId, itemId);
18042                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
18043                            this.swatchConfig[attrId][itemId] :
18044                            null;
18045                        if (!swatchData) return '';
18046                        if (type === "color") return 'background-color:' + swatchData.value;
18047                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
18048                        return '';
18049                    },
18050                    swatchOptionClasses() {
18051                        const itemId = this._getItemId();
18052                        if (!this.$el || !itemId) return {};
18053                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
18054                        return {
18055                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
18056                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
18057                            'w-6 h-6': !this.isTextSwatch()
18058                        }
18059                    },
18060
18061                    onFocusSwatchItem() {
18062                        const itemId = this._getItemId();
18063                        if (itemId) this.focusedLabel = itemId;
18064                    },
18065                    onChangeOption() {
18066                        const itemId = this._getItemId();
18067                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
18068                        if (attrId && itemId) this.changeOption(attrId, itemId);
18069                    },
18070                    changeOption(attributeId, value) {
18071                        if (value === '') {
18072                            return;
18073                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
18074                        } else {
18075                            this.selectedValues[attributeId] = value;
18076                        }
18077
18078                        this.findSimpleIndex();
18079                        this.findAllowedAttributeOptions();
18080                        this.updatePrices();
18081                        this.updateGallery();
18082
18083                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
18084                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
18085
18086                        const eventDetail = {
18087                            productId: this.productId,
18088                            optionId: attributeId,
18089                            value: value,
18090                            productIndex: this.productIndex || 0,
18091                            selectedValues: this.selectedValues,
18092                            candidates: candidates,
18093                            sourceElement: this.$el
18094                        };
18095
18096                        // Dispatch for Amasty
18097                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
18098                            detail: eventDetail
18099                        }));
18100
18101                        // Dispatch for Hyva listing
18102                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
18103                            detail: eventDetail
18104                        }));
18105                    },
18106
18107
18108                    clearOptionIfActive() {
18109                        const itemId = this._getItemId();
18110                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
18111                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
18112                            this.changeOption(attrId, '');
18113
18114                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
18115                            if (!input && this.$el?.querySelector) {
18116                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
18117                            }
18118                            if (!input && this.$el?.closest) {
18119                                const root = this.$el.closest('[data-product-id]') || this.$el;
18120                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
18121                            }
18122                            if (input) {
18123                                input.checked = false;
18124                            }
18125                        }
18126                    },
18127                    get optionIsEnabled() {
18128                        const itemId = this._getItemId();
18129                        if (!this.$el || !itemId) return true;
18130                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
18131                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
18132                        return !!allowedOptions.find(opt => opt.id == itemId);
18133                    },
18134                    get isSelected() {
18135                        const itemId = this._getItemId();
18136                        if (!this.$el || !itemId) return false;
18137                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
18138                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
18139                    },
18140                    get isSwatchRequired() {
18141                        if (!this.$el) return false;
18142                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
18143                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
18144                    },
18145                    focusedLabel: false,
18146                    activeTooltipItem: false,
18147                    tooltipPositionElement: false,
18148                    setActiveTooltipItem() {
18149                        const itemId = this._getItemId();
18150                        if (!this.$el || !itemId) return;
18151                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
18152                        this.activeTooltipItem = {
18153                            attribute: attrId,
18154                            item: itemId,
18155                            index: 0
18156                        };
18157                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
18158                    },
18159                    unsetActiveTooltipItem() {
18160                        this.activeTooltipItem = false;
18161                    }
18162                },
18163                confProdPreSelect()
18164            );
18165
18166            if (result.optionConfig && result.optionConfig.attributes) {
18167                const attributes = result.optionConfig.attributes;
18168                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
18169                    let source = attributes;
18170                    if (Array.isArray(attributes)) {
18171                        source = {};
18172                        attributes.forEach(attr => {
18173                            if (attr && attr.id) source[attr.id] = attr;
18174                        });
18175                    }
18176                    const values = Object.values(source);
18177                    const wrapper = Object.assign(values, source);
18178                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
18179                        value: true,
18180                        enumerable: false
18181                    });
18182                    result.optionConfig.attributes = wrapper;
18183                }
18184            }
18185
18186            return result;
18187        }
18188
18189        window.addEventListener('alpine:init', () => {
18190            Alpine.data('initConfigurableSwatchOptions_4213', initConfigurableSwatchOptions_4213);
18191        }, {
18192            once: true
18193        });
18194    </script>
18194
18195    
18196    <div x-data="initConfigurableSwatchOptions_4213" x-defer="intersect">
18197        <div class="pagebuilder-home-hidden">
18198                                            
18199                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
18200                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
18201                        <template x-if="showSwatches">
18202                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-4213-163" role="radiogroup" aria-label="Einband">
18203                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
18204                                    <div :data-option-id="item.id" style="display: contents">
18205                                        <div x-id="getSwatchOptionHtmlIdGroup">
18206    <template x-if="optionIsEnabled">
18207        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
18207self="unsetActiveTooltipItem">
18208            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-4213-163">
18209            <div>
18210                <template x-if="isTextSwatch">
18211                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
18212                </template>
18213                <template x-if="!optionIsActive(163, item.id)">
18214                    <div>
18215                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
18216                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
18217                        </svg>
18218                    </div>
18219                </template>
18220            </div>
18221        </label>
18222    </template>
18223</div>                                    </div>
18224                                </template>
18225                            </div>
18226                        </template>
18227                    </div>
18228                </div>
18229                    </div>
18230    </div>
18231            
18232                                                <div class="meta py-4 pagebuilder-home-hidden">
18233                <div x-data="initMarketingShortText_4213()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
18234                    <!-- Marketing short text -->
18235                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
18236                    </div>
18237
18238                    <!-- Short description -->
18239                                                                <div class="short-description">
18240                            Was ist eine Demokratie, und wann ist sie liberal? Ist Politik legitim, wenn sie der Volkssouver&auml;nit&auml;t oder wenn sie den Menschenrechten entspricht? Was kann und was sollte man von der Politik ...                            <a href="https://meiner.de/fmv_de/unterdra-ckung-durch-begla-ckung-13612" class="underline">mehr</a>
18241                        </div>
18242                                    </div>
18243
18244                <!-- Series  -->
18245                                    <div class="mb-1">
18246                        <span class="sr-only">Reihe:</span>
18247                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
18248                            <span>Blaue Reihe</span>
18249                        </a>
18250                                            </div>
18251                
18252                
18253                                                    <div class="mb-1">
18254                        <span x-data="initEditionText_4213()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
18255                            <!-- Marketing short text -->
18256                            <span class="edition-text" x-html="editionText"></span>&nbsp;2023, 314 Seiten                        </span>
18257                    </div>
18258                
18259                            </div>
18260            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
18261                
18262                <div class="justify-end" x-data="initPriceBox()" @update-prices-4213.window="updatePrice($event.detail);">
18263                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="4213" data-price-box="product-id-4213"><span class="normal-price">
18264    <span x-data x-id="['product\u002Dprice\u002D4213']" class="price-container price-final_price tax weee">
18265            <span class="price-label">Ab</span>
18266                <span class="approx-price">ca. </span>
18267        <span :id="$id('product\u002Dprice\u002D4213')" data-price-amount="22.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">22,99&nbsp;&euro;</span></span>
18268        </span>
18269</span>
18270
18271
18272</div>                </div>
18273
18274                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
18275                                            <div class="open-access-container open-access-container-4213                    flex mt-4 ml-auto sm:mt-0 hidden">
18276                            <div class="text-gray-700">
18277                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
18278                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
18279                                        Kostenlos online lesen                                    </a>
18280                                </button>
18281                            </div>
18282                        </div>
18283                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Unterdr&uuml;ckung durch Begl&uuml;ckung" aria-label="In den Warenkorb Unterdr&uuml;ckung durch Begl&uuml;ckung" data-addto="cart">
18284                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
18285  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
182850 014 0z"></path>
18286</svg>
18287                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
18288                                        In den Warenkorb                                    </span>
18289                                </button>
18290                                                                                                                    
18291<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(4213)" aria-label="Zur Wunschliste hinzuf&uuml;gen Unterdr&uuml;ckung durch Begl&uuml;ckung" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
18292    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
18293  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
18294</svg>
18295</button>
18296                                    </div>
18297            </div>
18298        </div>
18299        
18299<script>
18300            function initMarketingShortText_4213() {
18301                var marketingShortTextConfig = {};
18302                if (typeof window.initConfigurableSwatchOptions_4213 === "function") {
18303                    var fullConfig = window.initConfigurableSwatchOptions_4213().optionConfig
18304                    var marketingShortTextConfig = fullConfig.marketing_short_text;
18305                }
18306                return {
18307                    marketingShortText: '',
18308                    config: marketingShortTextConfig,
18309                    productId: '4213',
18310                    getMarketingShortText(detail) {
18311                        this.marketingShortText = detail.productIndex ?
18312                            this.config[detail.productIndex] :
18313                            null;
18314                    },
18315                    eventListeners: {
18316                        ['@listing-configurable-selection-changed.window'](event) {
18317                            if (this.productId == event.detail.productId) {
18318                                this.getMarketingShortText(event.detail);
18319                            }
18320
18321                        }
18322                    }
18323                }
18324            }
18325
18326            function initEditionText_4213() {
18327                var editionTextConfig = {};
18328                if (typeof window.initConfigurableSwatchOptions_4213 === "function") {
18329                    var fullConfig = window.initConfigurableSwatchOptions_4213().optionConfig
18330                    var editionTextConfig = fullConfig.edition;
18331                }
18332                return {
18333                    editionText: '',
18334                    config: editionTextConfig,
18335                    productId: '4213',
18336                    getEditionText(detail) {
18337                        this.editionText = detail.productIndex ?
18338                            this.config[detail.productIndex] :
18339                            null;
18340                    },
18341                    eventListeners: {
18342                        ['@listing-configurable-selection-changed.window'](event) {
18343                            if (this.productId == event.detail.productId) {
18344                                this.getEditionText(event.detail);
18345                            }
18346
18347                        }
18348                    }
18349                }
18350            }
18351        </script>
18351
18352                    </form>
18353                            
18354    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/4211/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk13583">
18355        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="4211">
18356                                    <a href="https://meiner.de/fmv_de/zura-ck-zum-fortschritt-13583" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
18357            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-4211.window="$el.src = $event.detail" alt="Zur&uuml;ck zum Fortschritt" title="Zur&uuml;ck zum Fortschritt" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787344567_4.jpg" :style="{
18358                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
18359                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
18360            }">
18361                    </a>
18362        <div class="product-info flex flex-col flex-grow ">
18363                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
18364                                    <div class="mb-2 text-sm text-gray-500 font-medium">
18365                                                                                    <a href="https://meiner.de/fmv_de/person/Heiner-Hastedt-3284/" class="mb-2">
18366                                    Heiner Hastedt                                                                    </a>
18367                                                                                                                                    </div>
18368                                <a class="product-item-link" href="https://meiner.de/fmv_de/zura-ck-zum-fortschritt-13583">
18369                    Zur&uuml;ck zum Fortschritt                </a>
18370                            </div>
18371
18372            <div x-data="initEditionText_4211()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
18373                <!-- Marketing short text -->
18374                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
18375                </div>
18376            </div>
18377
18378                            <div class="py-1 grid  mb-4 ">
18379                    
18380                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":4211,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":4211,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"15359":"1","15372":"1","15373":"1"},"childProductsAlertStatus":{"15359":"0","15372":"0","15373":"0"},"indexMapping":{"163:15":15359,"163:8":15372,"163:9":15373},"availabilityMessages":{"15359":"Lieferbar innerhalb von 3-5 Tagen","15372":"Download sofort  verf\u00fcgbar","15373":"Download sofort  verf\u00fcgbar"},"openAccess":{"4211":{"status":0},"15359":{"status":0},"15372":{"status":0},"15373":{"status":0}}},"availabilityMessages":{"15359":"Lieferbar innerhalb von 3-5 Tagen","15372":"Download sofort  verf\u00fcgbar","15373":"Download sofort  verf\u00fcgbar"},"openAccess":{"4211":{"status":0},"15359":{"status":0},"15372":{"status":0},"15373":{"status":0}}}'>
18381        <template x-if="containerVisible">
18382                            <!-- Popup Trigger -->
18383                <div>
18384                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
18385                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
18386                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
18387  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
18388<title>bell</title></svg>
18389</span>
18390                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
18391
18392                    <!-- Popup Modal -->
18393                    <template x-if="showModal">
18394                        <template x-teleport=".page-wrapper">
18395                            <div x-cloak class="fixed inset-0 flex items-center justify-center
18396                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
18397                                <div class="relative bg-white rounded-lg shadow-xl
18398                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
18399                                    <div class="p-6">
18400                                        <!-- Subscription Form for Popup -->
18401                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
18402                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
18403                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
18404                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
18405
18406                                            <div class="flex flex-col gap-3">
18407                                                <div class="flex-grow grow">
18408                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
18409                                                        shadow-xs focus:outline-none focus:outline-hidden
18410                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
18411                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
18412                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
18413                                                </div>
18414                                                <input type="hidden" name="product_id" :value="currentProductId">
18415                                                <input type="hidden" name="type" value="email">
18416
18417                                                
18418                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
18419
18420                                                <div class="amxnotif_guest_action">
18421                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
18422                                                        rounded-md focus:outline-none
18423                                                        focus:outline-hidden focus:ring-2
18424                                                        focus:ring-offset-2 disabled:opacity-50
18425                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
18426                                                        Benachrichtigen                                                    </button>
18427                                                </div>
18428                                            </div>
18429
18430                                                                                            <div class="flex items-start pt-2">
18431                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
18432                                                        text-blue-600 border-gray-300 rounded-sm">
18433                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
18434                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
18435                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
18436                                                </div>
18437                                                                                    </form>
18438                                    </div>
18439
18440                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
18441                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
18442                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
18443  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
18444<title>x</title></svg>
18445                                    </button>
18446                                </div>
18447                            </div>
18448                        </template>
18449                    </template>
18450                </div>
18451                    </template>
18452    </div>
18453
18454<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_4211" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":4211,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"15359":"1","15372":"1","15373":"1"},"childProductsAlertStatus":{"15359":"0","15372":"0","15373":"0"},"indexMapping":"{\u0022163:15\u0022:15359,\u0022163:8\u0022:15372,\u0022163:9\u0022:15373}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":4211,"availabilityMessages":{"15359":"Lieferbar innerhalb von 3-5 Tagen","15372":"Download sofort  verf\u00fcgbar","15373":"Download sofort  verf\u00fcgbar"},"openAccess":{"4211":{"status":0},"15359":{"status":0},"15372":{"status":0},"15373":{"status":0}}}'>
18455    
18456    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
18457        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
18458        <span x-html="optionsLabelText"></span>
18459    </p>
18460</div>                </div>
18461            
18462                                
18462<script>
18463        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
18464            try {
18465                const attributes = (config && config.attributes) ? config.attributes : null;
18466                if (!attributes) return [];
18467                let attr = null;
18468                if (Array.isArray(attributes)) {
18469                    for (let i = 0; i < attributes.length; i++) {
18470                        const a = attributes[i];
18471                        if (a && a.id == attrId) {
18472                            attr = a;
18473                            break;
18474                        }
18475                    }
18476                } else {
18477                    attr = attributes[attrId];
18478                }
18479                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
18480            } catch (e) {
18481                return [];
18482            }
18483        };
18484
18485        function initConfigurableSwatchOptions_4211() {
18486            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["15359"]},{"id":"8","label":"PDF","products":["15372"]},{"id":"9","label":"EPUB","products":["15373"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"15359":{"baseOldPrice":{"amount":18.598129841121},"oldPrice":{"amount":19.9},"basePrice":{"amount":18.598129841121},"finalPrice":{"amount":19.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"15372":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":14.009344794393},"finalPrice":{"amount":14.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"15373":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":14.009344794393},"finalPrice":{"amount":14.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":14.009344794393},"finalPrice":{"amount":14.99},"isApproxPrice":null},"productId":"4211","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"15359":{"163":"15"},"15372":{"163":"8"},"15373":{"163":"9"}},"salable":{"163":{"15":["15359"],"8":["15372"],"9":["15373"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"15359":"004423","15372":"004424","15373":"004456"},"output":{"15359":"Kartoniert","15372":"PDF","15373":"EPUB"},"original_name":{"15359":"","15372":"","15373":""},"openaccess_license_link":{"15359":"","15372":"","15373":""},"openaccess_license_name":{"15359":"","15372":"","15373":""},"openaccess_external_link":{"15359":"","15372":"","15373":""},"gpsr_safety_info":{"15359":"","15372":"","15373":""},"description":{"15359":"Alternde Gesellschaften wie unsere eigene sind von der Gefahr der Stagnation bedroht. Eine solche k\u00f6nnen wir uns aber nicht leisten; denn wir brauchen Ver\u00e4nderungen, besonders um den Klimawandel einzud\u00e4mmen und die bereits eintretenden Folgen zu begrenzen. Als Alternative zum Denken in Alternativlosigkeiten profiliert Heiner Hastedt in diesem Buch eine Hinwendung zum Fortschritt als Erm\u00f6glichung.<br\/><br\/>Nach der durch das \u00bbPrinzip Verantwortung\u00ab von Hans Jonas bef\u00fcrworteten \u00bbHeuristik der Furcht\u00ab mit ihren Folgen f\u00fcr Verzagtheit und Nichtstun k\u00f6nnte der als \u00bbgeschichtsphilosophischer Universalbegriff\u00ab (Koselleck) zu Recht kritisierte Fortschrittsbegriff vor einer Renaissance stehen, und zwar als ganz pluralistisch gedachter Ma\u00dfstab f\u00fcr normativ erw\u00fcnschtes Fortschreiten. Um ein solches Programm des Fortschritts als Erm\u00f6glichung attraktiv zu machen, steht in Hastedts Essay das Konzept der Deutungsmacht mit seiner Wende zum existentiell M\u00f6glichen im Mittelpunkt. In Abgrenzung zu Gewalt und \u00fcberkommenen Machtbegriffen wird Deutungsmacht als eine einflussnehmende soft power verstanden, die Wandel \u2013 vielleicht besonders nachhaltig \u2013 erm\u00f6glichen kann.
18486<br\/><br\/>Jenseits der \u00fcblichen Links-Rechts-Verortungen in der Politik reflektiert Hastedt \u00fcber Fortschritte auch im Institutionellen und versucht zugleich philosophische Debatten \u00fcber Macht, Wahrheit und Vernunft in Theorie und Praxis neu zu kontextualisieren.","15372":"Alternde Gesellschaften wie unsere eigene sind von der Gefahr der Stagnation bedroht. Eine solche k\u00f6nnen wir uns aber nicht leisten; denn wir brauchen Ver\u00e4nderungen, besonders um den Klimawandel einzud\u00e4mmen und die bereits eintretenden Folgen zu begrenzen. Als Alternative zum Denken in Alternativlosigkeiten profiliert Heiner Hastedt in diesem Buch eine Hinwendung zum Fortschritt als Erm\u00f6glichung.<br\/><br\/>Nach der durch das \u00bbPrinzip Verantwortung\u00ab von Hans Jonas bef\u00fcrworteten \u00bbHeuristik der Furcht\u00ab mit ihren Folgen f\u00fcr Verzagtheit und Nichtstun k\u00f6nnte der als \u00bbgeschichtsphilosophischer Universalbegriff\u00ab (Koselleck) zu Recht kritisierte Fortschrittsbegriff vor einer Renaissance stehen, und zwar als ganz pluralistisch gedachter Ma\u00dfstab f\u00fcr normativ erw\u00fcnschtes Fortschreiten. Um ein solches Programm des Fortschritts als Erm\u00f6glichung attraktiv zu machen, steht in Hastedts Essay das Konzept der Deutungsmacht mit seiner Wende zum existentiell M\u00f6glichen im Mittelpunkt. In Abgrenzung zu Gewalt und \u00fcberkommenen Machtbegriffen wird Deutungsmacht als eine einflussnehmende soft power verstanden, die Wandel \u2013 vielleicht besonders nachhaltig \u2013 erm\u00f6glichen kann.<br\/><br\/>Jenseits der \u00fcblichen Links-Rechts-Verortungen in der Politik reflektiert Hastedt \u00fcber Fortschritte auch im Institutionellen und versucht zugleich philosophische Debatten \u00fcber Macht, Wahrheit und Vernunft in Theorie und Praxis neu zu kontextualisieren.","15373":"Alternde Gesellschaften wie unsere eigene sind von der Gefahr der Stagnation bedroht. Eine solche k\u00f6nnen wir uns aber nicht leisten; denn wir brauchen Ver\u00e4nderungen, besonders um den Klimawandel einzud\u00e4mmen und die bereits eintretenden Folgen zu begrenzen. Als Alternative zum Denken in Alternativlosigkeiten profiliert Heiner Hastedt in diesem Buch eine Hinwendung zum Fortschritt als Erm\u00f6glichung.<br\/><br\/>Nach der durch das \u00bbPrinzip Verantwortung\u00ab von Hans Jonas bef\u00fcrworteten \u00bbHeuristik der Furcht\u00ab mit ihren Folgen f\u00fcr Verzagtheit und Nichtstun k\u00f6nnte der als \u00bbgeschichtsphilosophischer Universalbegriff\u00ab (Koselleck) zu Recht kritisierte Fortschrittsbegriff vor einer Renaissance stehen, und zwar als ganz pluralistisch gedachter Ma\u00dfstab f\u00fcr normativ erw\u00fcnschtes Fortschreiten. Um ein solches Programm des Fortschritts als Erm\u00f6glichung attraktiv zu machen, steht in Hastedts Essay das Konzept der Deutungsmacht mit seiner Wende zum existentiell M\u00f6glichen im Mittelpunkt. In Abgrenzung zu Gewalt und \u00fcberkommenen Machtbegriffen wird Deutungsmacht als eine einflussnehmende soft power verstanden, die Wandel \u2013 vielleicht besonders nachhaltig \u2013 erm\u00f6glichen kann.<br\/><br\/>Jenseits der \u00fcblichen Links-Rechts-Verortungen in der Politik reflektiert Hastedt \u00fcber Fortschritte auch im Institutionellen und versucht zugleich philosophische Debatten \u00fcber Macht, Wahrheit und Vernunft in Theorie und Praxis neu zu kontextualisieren."},"doi":{"15359":"","15372":"10.28937\/978-3-7873-4424-6","15373":""},"isbn":{"15359":"978-3-7873-4423-9","15372":"978-3-7873-4424-6","15373":"978-3-7873-4456-7"},"marketing_short_text":{"15359":"","15372":"","15373":""},"recension_text":{"15359":"","15372":"","15373":""},"language":{"15359":"","15372":"","15373":""},"cover":{"15359":"Kartoniert","15372":"","15373":""},"pages":{"15359":"188 Seiten","15372":"188 Seiten","15373":"188 Seiten"},"edition":{"15359":"","15372":"Unver\u00e4ndertes eBook der 1.Auflage von 2023","15373":"Unver\u00e4ndertes eBook der 1.Auflage von 2023"},"pod":{"15359":"Nein","15372":"Nein","15373":"Nein"},"copyright_year":{"15359":"","15372":"","15373":""},"vlb_tix_link":{"15359":"https:\/\/neu.vlbtix.de\/products\/9783787344239?type=gtin","15372":"","15373":""},"defaultValues":{"163":"15"}};
18487            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
18488
18489            if (typeof window.amxnotif_wrap_attributes === 'function') {
18490                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
18491                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
18492            }
18493
18494            const configurableOptionsComponent = initConfigurableOptions(
18495                '4211',
18496                config
18497            );
18498            const swatchOptionsComponent = initSwatchOptions(
18499                swatchConfig
18500            );
18501
18502            // DWS - Configurable product preselect start
18503            const confProdPreSelect = () => {
18504                return {
18505                    preselectQuerystringItems() {
18506                        var data = {"id":"15359","output":"15"};
18507                        const urlQueryParams = new URLSearchParams(window.location.search);
18508
18509                                                this.$nextTick(() => {
18510                            setTimeout(() => {
18511                                const rootEl = this.$root || this.$el;
18512                                if (!rootEl) return;
18513
18514                                const applySelection = (attrCode, attrValue) => {
18515                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
18516
18517                                    const attributes = Object.values(this.optionConfig.attributes || {});
18518                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
18519
18520                                    if (targetAttr) {
18521                                        const attrId = String(targetAttr.id);
18522                                        const optionVal = String(attrValue);
18523
18524                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
18525
18526                                        if (inputEl) {
18527                                                                                        inputEl.click();
18528                                            inputEl.dispatchEvent(new Event('change', {
18529                                                bubbles: true
18530                                            }));
18531                                        } else {
18532                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
18533                                            if (selectEl) {
18534                                                selectEl.value = optionVal;
18535                                                selectEl.dispatchEvent(new Event('change', {
18536                                                    bubbles: true
18537                                                }));
18538                                            }
18539                                        }
18540
18541                                                                                this.changeOption(attrId, optionVal, false);
18542                                    }
18543                                };
18544
18545                                                                if (data && typeof data === 'object') {
18546                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
18547                                }
18548
18549                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
18550                                    if (attribute && attribute.code) {
18551                                        let optionValue = urlQueryParams.get(attribute.code);
18552                                        if (optionValue) {
18553                                            let optionId = false;
18554                                            const attributes = Object.values(this.optionConfig.attributes || {});
18555                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
18556
18557                                            let found = false;
18558                                            Object.values(targetAttr.options).map(option => {
18559                                                if (found === false && option.label === optionValue) {
18560                                                    optionId = option.id;
18561                                                    found = true;
18562                                                }
18563                                            });
18564
18565                                            const attrId = String(targetAttr.id);
18566                                            let optionVal = String(optionValue);
18567                                            if (found) {
18568                                                optionVal = String(optionId);
18569                                            }
18570
18571                                            applySelection(attribute.code, optionVal);
18572                                        }
18573                                    }
18574                                });
18575                            }, 100);
18576                        });
18577                    }
18578                }
18579            };
18580            // DWS - Configurable product preselect end
18581
18582            const result = Object.assign(
18583                configurableOptionsComponent,
18584                swatchOptionsComponent, {
18585                    productId: '4211',
18586                    productIndex: 0,
18587                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
18588                    showSwatches: false,
18589                    precalcOptions: {},
18590                    originalInit: configurableOptionsComponent.init,
18591                    init() {
18592                        try {
18593                            this.precalcOptions = {};
18594                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
18595                            this.preselectQuerystringItems();
18596                            if (Array.isArray(attrSource)) {
18597                                attrSource.forEach(attr => {
18598                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
18599                                });
18600                            } else if (attrSource && typeof attrSource === 'object') {
18601                                Object.keys(attrSource).forEach(id => {
18602                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
18603                                });
18604                            }
18605                        } catch (e) {
18606                            console.error('Pre-calc error:', e);
18607                        }
18608
18609                        if (typeof this.originalInit === 'function') {
18610                            this.originalInit();
18611                        }
18612
18613                        try {
18614                            this.initShowSwatchesIntersect();
18615                        } catch (e) {
18616                            console.error('intersect error:', e);
18617                        }
18618                    },
18619
18620                    updateGallery() {
18621                        if (!this.productIndex) return;
18622
18623                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
18624                                method: 'GET',
18625                                headers: {
18626                                    'Content-Type': 'application/json',
18627                                    'X-Requested-With': 'XMLHttpRequest'
18628                                }
18629                            })
18630                            .then(response => response.json())
18631                            .then(data => {
18632                                if (data && data.medium) {
18633                                    window.dispatchEvent(new CustomEvent("update-gallery-4211", {
18634                                        detail: data.medium
18635                                    }));
18636                                }
18637                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
18638                    },
18639
18640
18641                    initShowSwatchesIntersect() {
18642                        const observer = new IntersectionObserver(entries => {
18643                            if (entries[0].isIntersecting) {
18644                                this.showSwatches = true;
18645                                observer.disconnect();
18646                            }
18647                        }, {
18648                            rootMargin: '512px'
18649                        });
18650                        observer.observe(this.$el);
18651                    },
18652                    getOptions(attrId) {
18653                        return this.precalcOptions[attrId] || [];
18654                    },
18655                    getOptionsByAttrId() {
18656                        return this.getOptions(this.$el.dataset.attributeId);
18657                    },
18658                    _getItemId() {
18659                        if (this.item && this.item.id) return this.item.id;
18660                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
18661                    },
18662                    getSwatchOptionHtmlId() {
18663                        const itemId = this._getItemId();
18664                        return itemId ? this.$id(`attribute-option-4211-${itemId}`) : '';
18665                    },
18666                    getSwatchOptionHtmlIdGroup() {
18667                        const itemId = this._getItemId();
18668                        return itemId ? [`attribute-option-4211-${itemId}`] : [];
18669                    },
18670                    getAttributeSwatchData(attributeId) {
18671                        const data = Object.assign({}, this.swatchConfig[attributeId]);
18672                        if (data['additional_data']) {
18673                            try {
18674                                data['details'] = JSON.parse(data['additional_data']);
18675                            } catch (e) {
18676                                data['details'] = {};
18677                            }
18678                        }
18679                        return data;
18680                    },
18681                    getSwatchType(attributeId, optionId) {
18682                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
18683                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
18684                        }
18685                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
18686                            this.swatchConfig[attributeId].details.swatch_input_type :
18687                            "empty";
18688                        if (type === 'visual') {
18689                            const config = this.swatchConfig[attributeId];
18690                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
18691                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
18692                            }
18693                            // Fallback to first option type
18694                            for (const oId in config) {
18695                                if (config[oId] && typeof config[oId].type !== 'undefined') {
18696                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
18697                                }
18698                            }
18699                        }
18700                        return type;
18701                    },
18702                    mapSwatchTypeNumberToTypeCode(type) {
18703                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
18704                    },
18705                    isTextSwatch() {
18706                        const itemId = this._getItemId();
18707                        if (!this.$el || !itemId) return false;
18708                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
18709                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
18710                    },
18711
18712                    getSwatchText() {
18713                        const itemId = this._getItemId();
18714                        if (this.item) return this.item.label || '';
18715                        if (!this.$el || !itemId) return '';
18716                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
18717                        const options = attrId ? this.getOptions(attrId) : [];
18718                        const opt = options.find(o => o.id == itemId);
18719                        return opt ? opt.label : '';
18720                    },
18721                    getSwatchBackgroundStyle() {
18722                        const itemId = this._getItemId();
18723                        if (!this.$el || !itemId) return '';
18724                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
18725                        if (!attrId) return '';
18726                        const type = this.getSwatchType(attrId, itemId);
18727                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
18728                            this.swatchConfig[attrId][itemId] :
18729                            null;
18730                        if (!swatchData) return '';
18731                        if (type === "color") return 'background-color:' + swatchData.value;
18732                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
18733                        return '';
18734                    },
18735                    swatchOptionClasses() {
18736                        const itemId = this._getItemId();
18737                        if (!this.$el || !itemId) return {};
18738                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
18739                        return {
18740                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
18741                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
18742                            'w-6 h-6': !this.isTextSwatch()
18743                        }
18744                    },
18745
18746                    onFocusSwatchItem() {
18747                        const itemId = this._getItemId();
18748                        if (itemId) this.focusedLabel = itemId;
18749                    },
18750                    onChangeOption() {
18751                        const itemId = this._getItemId();
18752                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
18753                        if (attrId && itemId) this.changeOption(attrId, itemId);
18754                    },
18755                    changeOption(attributeId, value) {
18756                        if (value === '') {
18757                            return;
18758                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
18759                        } else {
18760                            this.selectedValues[attributeId] = value;
18761                        }
18762
18763                        this.findSimpleIndex();
18764                        this.findAllowedAttributeOptions();
18765                        this.updatePrices();
18766                        this.updateGallery();
18767
18768                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
18769                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
18770
18771                        const eventDetail = {
18772                            productId: this.productId,
18773                            optionId: attributeId,
18774                            value: value,
18775                            productIndex: this.productIndex || 0,
18776                            selectedValues: this.selectedValues,
18777                            candidates: candidates,
18778                            sourceElement: this.$el
18779                        };
18780
18781                        // Dispatch for Amasty
18782                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
18783                            detail: eventDetail
18784                        }));
18785
18786                        // Dispatch for Hyva listing
18787                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
18788                            detail: eventDetail
18789                        }));
18790                    },
18791
18792
18793                    clearOptionIfActive() {
18794                        const itemId = this._getItemId();
18795                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
18796                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
18797                            this.changeOption(attrId, '');
18798
18799                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
18800                            if (!input && this.$el?.querySelector) {
18801                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
18802                            }
18803                            if (!input && this.$el?.closest) {
18804                                const root = this.$el.closest('[data-product-id]') || this.$el;
18805                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
18806                            }
18807                            if (input) {
18808                                input.checked = false;
18809                            }
18810                        }
18811                    },
18812                    get optionIsEnabled() {
18813                        const itemId = this._getItemId();
18814                        if (!this.$el || !itemId) return true;
18815                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
18816                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
18817                        return !!allowedOptions.find(opt => opt.id == itemId);
18818                    },
18819                    get isSelected() {
18820                        const itemId = this._getItemId();
18821                        if (!this.$el || !itemId) return false;
18822                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
18823                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
18824                    },
18825                    get isSwatchRequired() {
18826                        if (!this.$el) return false;
18827                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
18828                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
18829                    },
18830                    focusedLabel: false,
18831                    activeTooltipItem: false,
18832                    tooltipPositionElement: false,
18833                    setActiveTooltipItem() {
18834                        const itemId = this._getItemId();
18835                        if (!this.$el || !itemId) return;
18836                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
18837                        this.activeTooltipItem = {
18838                            attribute: attrId,
18839                            item: itemId,
18840                            index: 0
18841                        };
18842                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
18843                    },
18844                    unsetActiveTooltipItem() {
18845                        this.activeTooltipItem = false;
18846                    }
18847                },
18848                confProdPreSelect()
18849            );
18850
18851            if (result.optionConfig && result.optionConfig.attributes) {
18852                const attributes = result.optionConfig.attributes;
18853                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
18854                    let source = attributes;
18855                    if (Array.isArray(attributes)) {
18856                        source = {};
18857                        attributes.forEach(attr => {
18858                            if (attr && attr.id) source[attr.id] = attr;
18859                        });
18860                    }
18861                    const values = Object.values(source);
18862                    const wrapper = Object.assign(values, source);
18863                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
18864                        value: true,
18865                        enumerable: false
18866                    });
18867                    result.optionConfig.attributes = wrapper;
18868                }
18869            }
18870
18871            return result;
18872        }
18873
18874        window.addEventListener('alpine:init', () => {
18875            Alpine.data('initConfigurableSwatchOptions_4211', initConfigurableSwatchOptions_4211);
18876        }, {
18877            once: true
18878        });
18879    </script>
18879
18880    
18881    <div x-data="initConfigurableSwatchOptions_4211" x-defer="intersect">
18882        <div class="pagebuilder-home-hidden">
18883                                            
18884                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
18885                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
18886                        <template x-if="showSwatches">
18887                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-4211-163" role="radiogroup" aria-label="Einband">
18888                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
18889                                    <div :data-option-id="item.id" style="display: contents">
18890                                        <div x-id="getSwatchOptionHtmlIdGroup">
18891    <template x-if="optionIsEnabled">
18892        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
18892self="unsetActiveTooltipItem">
18893            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-4211-163">
18894            <div>
18895                <template x-if="isTextSwatch">
18896                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
18897                </template>
18898                <template x-if="!optionIsActive(163, item.id)">
18899                    <div>
18900                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
18901                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
18902                        </svg>
18903                    </div>
18904                </template>
18905            </div>
18906        </label>
18907    </template>
18908</div>                                    </div>
18909                                </template>
18910                            </div>
18911                        </template>
18912                    </div>
18913                </div>
18914                    </div>
18915    </div>
18916            
18917                                                <div class="meta py-4 pagebuilder-home-hidden">
18918                <div x-data="initMarketingShortText_4211()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
18919                    <!-- Marketing short text -->
18920                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
18921                    </div>
18922
18923                    <!-- Short description -->
18924                                                                <div class="short-description">
18925                            Alternde Gesellschaften wie unsere eigene sind von der Gefahr der Stagnation bedroht. Eine solche k&ouml;nnen wir uns aber nicht leisten; denn wir brauchen Ver&auml;nderungen, besonders um den Klimawandel ...                            <a href="https://meiner.de/fmv_de/zura-ck-zum-fortschritt-13583" class="underline">mehr</a>
18926                        </div>
18927                                    </div>
18928
18929                <!-- Series  -->
18930                                    <div class="mb-1">
18931                        <span class="sr-only">Reihe:</span>
18932                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
18933                            <span>Blaue Reihe</span>
18934                        </a>
18935                                            </div>
18936                
18937                
18938                                                    <div class="mb-1">
18939                        <span x-data="initEditionText_4211()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
18940                            <!-- Marketing short text -->
18941                            <span class="edition-text" x-html="editionText"></span>&nbsp;2023, 188 Seiten                        </span>
18942                    </div>
18943                
18944                            </div>
18945            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
18946                
18947                <div class="justify-end" x-data="initPriceBox()" @update-prices-4211.window="updatePrice($event.detail);">
18948                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="4211" data-price-box="product-id-4211"><span class="normal-price">
18949    <span x-data x-id="['product\u002Dprice\u002D4211']" class="price-container price-final_price tax weee">
18950            <span class="price-label">Ab</span>
18951                <span class="approx-price">ca. </span>
18952        <span :id="$id('product\u002Dprice\u002D4211')" data-price-amount="14.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">14,99&nbsp;&euro;</span></span>
18953        </span>
18954</span>
18955
18956
18957</div>                </div>
18958
18959                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
18960                                            <div class="open-access-container open-access-container-4211                    flex mt-4 ml-auto sm:mt-0 hidden">
18961                            <div class="text-gray-700">
18962                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
18963                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
18964                                        Kostenlos online lesen                                    </a>
18965                                </button>
18966                            </div>
18967                        </div>
18968                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Zur&uuml;ck zum Fortschritt" aria-label="In den Warenkorb Zur&uuml;ck zum Fortschritt" data-addto="cart">
18969                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
18970  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
189700 014 0z"></path>
18971</svg>
18972                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
18973                                        In den Warenkorb                                    </span>
18974                                </button>
18975                                                                                                                    
18976<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(4211)" aria-label="Zur Wunschliste hinzuf&uuml;gen Zur&uuml;ck zum Fortschritt" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
18977    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
18978  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
18979</svg>
18980</button>
18981                                    </div>
18982            </div>
18983        </div>
18984        
18984<script>
18985            function initMarketingShortText_4211() {
18986                var marketingShortTextConfig = {};
18987                if (typeof window.initConfigurableSwatchOptions_4211 === "function") {
18988                    var fullConfig = window.initConfigurableSwatchOptions_4211().optionConfig
18989                    var marketingShortTextConfig = fullConfig.marketing_short_text;
18990                }
18991                return {
18992                    marketingShortText: '',
18993                    config: marketingShortTextConfig,
18994                    productId: '4211',
18995                    getMarketingShortText(detail) {
18996                        this.marketingShortText = detail.productIndex ?
18997                            this.config[detail.productIndex] :
18998                            null;
18999                    },
19000                    eventListeners: {
19001                        ['@listing-configurable-selection-changed.window'](event) {
19002                            if (this.productId == event.detail.productId) {
19003                                this.getMarketingShortText(event.detail);
19004                            }
19005
19006                        }
19007                    }
19008                }
19009            }
19010
19011            function initEditionText_4211() {
19012                var editionTextConfig = {};
19013                if (typeof window.initConfigurableSwatchOptions_4211 === "function") {
19014                    var fullConfig = window.initConfigurableSwatchOptions_4211().optionConfig
19015                    var editionTextConfig = fullConfig.edition;
19016                }
19017                return {
19018                    editionText: '',
19019                    config: editionTextConfig,
19020                    productId: '4211',
19021                    getEditionText(detail) {
19022                        this.editionText = detail.productIndex ?
19023                            this.config[detail.productIndex] :
19024                            null;
19025                    },
19026                    eventListeners: {
19027                        ['@listing-configurable-selection-changed.window'](event) {
19028                            if (this.productId == event.detail.productId) {
19029                                this.getEditionText(event.detail);
19030                            }
19031
19032                        }
19033                    }
19034                }
19035            }
19036        </script>
19036
19037                    </form>
19038                            
19039    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/15095/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk16741">
19040        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="15095">
19041                                    <a href="https://meiner.de/fmv_de/qualita-ten-der-freiheit-16741" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
19042            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-15095.window="$el.src = $event.detail" alt="Qualit&auml;ten der Freiheit" title="Qualit&auml;ten der Freiheit" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787346066_3.jpg" :style="{
19043                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
19044                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
19045            }">
19046                    </a>
19047        <div class="product-info flex flex-col flex-grow ">
19048                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
19049                                    <div class="mb-2 text-sm text-gray-500 font-medium">
19050                                                                                    <a href="https://meiner.de/fmv_de/person/Ludger-Schwarte-3277/" class="mb-2">
19051                                    Ludger Schwarte                                                                    </a>
19052                                                                                                                                    </div>
19053                                <a class="product-item-link" href="https://meiner.de/fmv_de/qualita-ten-der-freiheit-16741">
19054                    Qualit&auml;ten der Freiheit                </a>
19055                            </div>
19056
19057            <div x-data="initEditionText_15095()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
19058                <!-- Marketing short text -->
19059                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
19060                </div>
19061            </div>
19062
19063                            <div class="py-1 grid  mb-4 ">
19064                    
19065                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":15095,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":15095,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"15011":"1","15014":"1","15015":"1"},"childProductsAlertStatus":{"15011":"0","15014":"0","15015":"0"},"indexMapping":{"163:15":15011,"163:8":15014,"163:9":15015},"availabilityMessages":{"15011":"Lieferbar innerhalb von 3-5 Tagen","15014":"Download sofort  verf\u00fcgbar","15015":"Download sofort  verf\u00fcgbar"},"openAccess":{"15095":{"status":0},"15011":{"status":0},"15014":{"status":0},"15015":{"status":0}}},"availabilityMessages":{"15011":"Lieferbar innerhalb von 3-5 Tagen","15014":"Download sofort  verf\u00fcgbar","15015":"Download sofort  verf\u00fcgbar"},"openAccess":{"15095":{"status":0},"15011":{"status":0},"15014":{"status":0},"15015":{"status":0}}}'>
19066        <template x-if="containerVisible">
19067                            <!-- Popup Trigger -->
19068                <div>
19069                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
19070                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
19071                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
19072  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
19073<title>bell</title></svg>
19074</span>
19075                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
19076
19077                    <!-- Popup Modal -->
19078                    <template x-if="showModal">
19079                        <template x-teleport=".page-wrapper">
19080                            <div x-cloak class="fixed inset-0 flex items-center justify-center
19081                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
19082                                <div class="relative bg-white rounded-lg shadow-xl
19083                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
19084                                    <div class="p-6">
19085                                        <!-- Subscription Form for Popup -->
19086                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
19087                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
19088                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
19089                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
19090
19091                                            <div class="flex flex-col gap-3">
19092                                                <div class="flex-grow grow">
19093                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
19094                                                        shadow-xs focus:outline-none focus:outline-hidden
19095                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
19096                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
19097                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
19098                                                </div>
19099                                                <input type="hidden" name="product_id" :value="currentProductId">
19100                                                <input type="hidden" name="type" value="email">
19101
19102                                                
19103                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
19104
19105                                                <div class="amxnotif_guest_action">
19106                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
19107                                                        rounded-md focus:outline-none
19108                                                        focus:outline-hidden focus:ring-2
19109                                                        focus:ring-offset-2 disabled:opacity-50
19110                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
19111                                                        Benachrichtigen                                                    </button>
19112                                                </div>
19113                                            </div>
19114
19115                                                                                            <div class="flex items-start pt-2">
19116                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
19117                                                        text-blue-600 border-gray-300 rounded-sm">
19118                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
19119                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
19120                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
19121                                                </div>
19122                                                                                    </form>
19123                                    </div>
19124
19125                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
19126                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
19127                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
19128  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
19129<title>x</title></svg>
19130                                    </button>
19131                                </div>
19132                            </div>
19133                        </template>
19134                    </template>
19135                </div>
19136                    </template>
19137    </div>
19138
19139<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_15095" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":15095,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"15011":"1","15014":"1","15015":"1"},"childProductsAlertStatus":{"15011":"0","15014":"0","15015":"0"},"indexMapping":"{\u0022163:15\u0022:15011,\u0022163:8\u0022:15014,\u0022163:9\u0022:15015}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":15095,"availabilityMessages":{"15011":"Lieferbar innerhalb von 3-5 Tagen","15014":"Download sofort  verf\u00fcgbar","15015":"Download sofort  verf\u00fcgbar"},"openAccess":{"15095":{"status":0},"15011":{"status":0},"15014":{"status":0},"15015":{"status":0}}}'>
19140    
19141    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
19142        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
19143        <span x-html="optionsLabelText"></span>
19144    </p>
19145</div>                </div>
19146            
19147                                
19147<script>
19148        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
19149            try {
19150                const attributes = (config && config.attributes) ? config.attributes : null;
19151                if (!attributes) return [];
19152                let attr = null;
19153                if (Array.isArray(attributes)) {
19154                    for (let i = 0; i < attributes.length; i++) {
19155                        const a = attributes[i];
19156                        if (a && a.id == attrId) {
19157                            attr = a;
19158                            break;
19159                        }
19160                    }
19161                } else {
19162                    attr = attributes[attrId];
19163                }
19164                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
19165            } catch (e) {
19166                return [];
19167            }
19168        };
19169
19170        function initConfigurableSwatchOptions_15095() {
19171            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["15011"]},{"id":"8","label":"PDF","products":["15014"]},{"id":"9","label":"EPUB","products":["15015"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"15011":{"baseOldPrice":{"amount":27.943924233645},"oldPrice":{"amount":29.9},"basePrice":{"amount":27.943924233645},"finalPrice":{"amount":29.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"15014":{"baseOldPrice":{"amount":20.551400869159},"oldPrice":{"amount":21.99},"basePrice":{"amount":20.551400869159},"finalPrice":{"amount":21.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"15015":{"baseOldPrice":{"amount":20.551400869159},"oldPrice":{"amount":21.99},"basePrice":{"amount":20.551400869159},"finalPrice":{"amount":21.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":20.551400869159},"oldPrice":{"amount":21.99},"basePrice":{"amount":20.551400869159},"finalPrice":{"amount":21.99},"isApproxPrice":null},"productId":"15095","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"15011":{"163":"15"},"15014":{"163":"8"},"15015":{"163":"9"}},"salable":{"163":{"15":["15011"],"8":["15014"],"9":["15015"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"15011":"004604","15014":"004605","15015":"004606"},"output":{"15011":"Kartoniert","15014":"PDF","15015":"EPUB"},"original_name":{"15011":"","15014":"","15015":""},"openaccess_license_link":{"15011":"","15014":"","15015":""},"openaccess_license_name":{"15011":"","15014":"","15015":""},"openaccess_external_link":{"15011":"","15014":"","15015":""},"gpsr_safety_info":{"15011":"","15014":"","15015":""},"description":{"15011":"Ob Naturkatastrophen in Folge des Klimawandels, die Corona-Pandemie oder der \u00dcberfall Russlands auf die Ukraine \u2013 in den letzten Jahren schien die Demokratie oft unf\u00e4hig, sich angesichts unvorhersehbarer Krisen zu bew\u00e4hren und zukunftsf\u00e4hige Entscheidungen zu treffen. Brauchen demokratische Gesellschaften also ad\u00e4quatere, auf Futurit\u00e4t ausgerichtete Verfahren der Entscheidung? <br\/><br\/>Im Zentrum demokratischer Verfahren steht die offene Frage, wer wie entscheiden soll. Nimmt man in die Beantwortung der Frage nach dem Wie die Komponente der Zukunftsf\u00e4higkeit hinzu, muss die Umsetzung des Prinzips Demokratie zeittheoretisch neu gedacht werden. Entscheidungsverfahren sind so zu konzipieren, dass sie nicht nur f\u00fcr uns heute legitim und rational, sondern auch f\u00fcr andere Zeiten tauglich sind \u2013 der multifaktoriellen Unvorhersehbarkeit der Zukunft und Unabsch\u00e4tzbarkeit der Konsequenzen gegenw\u00e4rtiger Handlungen f\u00fcr kommende Generationen zum Trotz. <br\/><br\/>In diesem Buch entwickelt Ludger Schwarte Prinzipien zukunftstauglichen demokratischen Entscheidens. Denn ebenso wie die zeitlichen Bedingungen der Freiheit sind die Aspekte der Ereignishaftigkeit und Zukunftsf\u00e4higkeit in der politischen Philosophie bislang kaum ber\u00fccksichtigt worden. Wo sie \u00fcber Verantwortung, Nachhaltigkeit und Generationengerechtigkeit nachdenkt, setzt sie die Gegenwart als Ma\u00dfstab f\u00fcr vern\u00fcnftige Schlussfolgerungen, anstatt Diskontinuit\u00e4ten und Futurit\u00e4t in Rechnung zu stellen. Ausgehend von einer Kennzeichnung des Standes der Diskussion in der politischen und Zeitphilosophie entwickelt Schwarte aus der Analyse demokratischer Utopien eine Vorstellung von politischer Freiheit, die den zeitlichen Horizont \u00fcberschreitet und auch die zeitliche Umwelt in die Kritik gegenw\u00e4rtiger Verh\u00e4ltnisse einbezieht. Die Er\u00f6rterung der Grundlagen, Ziele und zeitlichen Strukturen demokratischen Entscheidens m\u00fcndet in den Entwurf eines Verfahrens, welches es erlauben soll, das Urteilsverm\u00f6gen nicht nur am Gegebenen und Erwartbaren, sondern auch an der Antizipation des (noch) Unm\u00f6glichen auszurichten. ","15014":"Ob Naturkatastrophen in Folge des Klimawandels, die Corona-Pandemie oder der \u00dcberfall Russlands auf die Ukraine \u2013 in den letzten Jahren schien die Demokratie oft unf\u00e4hig, sich angesichts unvorhersehbarer Krisen zu bew\u00e4hren und zukunftsf\u00e4hige Entscheidungen zu treffen. Brauchen demokratische Gesellschaften also ad\u00e4quatere, auf Futurit\u00e4t ausgerichtete Verfahren der Entscheidung? <br\/><br\/>Im Zentrum demokratischer Verfahren steht die offene Frage, wer wie entscheiden soll. Nimmt man in die Beantwortung der Frage nach dem Wie die Komponente der Zukunftsf\u00e4higkeit hinzu, muss die Umsetzung des Prinzips Demokratie zeittheoretisch neu gedacht werden. Entscheidungsverfahren sind so zu konzipieren, dass sie nicht nur f\u00fcr uns heute legitim und rational, sondern auch f\u00fcr andere Zeiten tauglich sind \u2013 der multifaktoriellen Unvorhersehbarkeit der Zukunft und Unabsch\u00e4tzbarkeit der Konsequenzen gegenw\u00e4rtiger Handlungen f\u00fcr kommende Generationen zum Trotz. <br\/><br\/>In diesem Buch entwickelt Ludger Schwarte Prinzipien zukunftstauglichen demokratischen Entscheidens. Denn ebenso wie die zeitlichen Bedingungen der Freiheit sind die Aspekte der Ereignishaftigkeit und Zukunftsf\u00e4higkeit in der politischen Philosophie bislang kaum ber\u00fccksichtigt worden. Wo sie \u00fcber Verantwortung, Nachhaltigkeit und Generationengerechtigkeit nachdenkt, setzt sie die Gegenwart als Ma\u00dfstab f\u00fcr vern\u00fcnftige Schlussfolgerungen, anstatt Diskontinuit\u00e4ten und Futurit\u00e4t in Rechnung zu stellen. Ausgehend von einer Kennzeichnung des Standes der Diskussion in der politischen und Zeitphilosophie entwickelt Schwarte aus der Analyse demokratischer Utopien eine Vorstellung von politischer Freiheit, die den zeitlichen Horizont \u00fcberschreitet und auch die zeitliche Umwelt in die Kritik gegenw\u00e4rtiger Verh\u00e4ltnisse einbezieht. Die Er\u00f6rterung der Grundlagen, Ziele und zeitlichen Strukturen demokratischen Entscheidens m\u00fcndet in den Entwurf eines Verfahrens, welches es erlauben soll, das Urteilsverm\u00f6gen nicht nur am Gegebenen und Erwartbaren, sondern auch an der Antizipation des (noch) Unm\u00f6glichen auszurichten. ","15015":"Ob Naturkatastrophen in Folge des Klimawandels, die Corona-Pandemie oder der \u00dcberfall Russlands auf die Ukraine \u2013 in den letzten Jahren schien die Demokratie oft unf\u00e4hig, sich angesichts unvorhersehbarer Krisen zu bew\u00e4hren und zukunftsf\u00e4hige Entscheidungen zu treffen. Brauchen demokratische Gesellschaften also ad\u00e4quatere, auf Futurit\u00e4t ausgerichtete Verfahren der Entscheidung? <br\/><br\/>Im Zentrum demokratischer Verfahren steht die offene Frage, wer wie entscheiden soll. Nimmt man in die Beantwortung der Frage nach dem Wie die Komponente der Zukunftsf\u00e4higkeit hinzu, muss die Umsetzung des Prinzips Demokratie zeittheoretisch neu gedacht werden. Entscheidungsverfahren sind so zu konzipieren, dass sie nicht nur f\u00fcr uns heute legitim und rational, sondern auch f\u00fcr andere Zeiten tauglich sind \u2013 der multifaktoriellen Unvorhersehbarkeit der Zukunft und Unabsch\u00e4tzbarkeit der Konsequenzen gegenw\u00e4rtiger Handlungen f\u00fcr kommende Generationen zum Trotz. <br\/><br\/>In diesem Buch entwickelt Ludger Schwarte Prinzipien zukunftstauglichen demokratischen Entscheidens. Denn ebenso wie die zeitlichen Bedingungen der Freiheit sind die Aspekte der Ereignishaftigkeit und Zukunftsf\u00e4higkeit in der politischen Philosophie bislang kaum ber\u00fccksichtigt worden. Wo sie \u00fcber Verantwortung, Nachhaltigkeit und Generationengerechtigkeit nachdenkt, setzt sie die Gegenwart als Ma\u00dfstab f\u00fcr vern\u00fcnftige Schlussfolgerungen, anstatt Diskontinuit\u00e4ten und Futurit\u00e4t in Rechnung zu stellen. Ausgehend von einer Kennzeichnung des Standes der Diskussion in der politischen und Zeitphilosophie entwickelt Schwarte aus der Analyse demokratischer Utopien eine Vorstellung von politischer Freiheit, die den zeitlichen Horizont \u00fcberschreitet und auch die zeitliche Umwelt in die Kritik gegenw\u00e4rtiger Verh\u00e4ltnisse einbezieht. Die Er\u00f6rterung der Grundlagen, Ziele und zeitlichen Strukturen demokratischen Entscheidens m\u00fcndet in den Entwurf eines Verfahrens, welches es erlauben soll, das Urteilsverm\u00f6gen nicht nur am Gegebenen und Erwartbaren, sondern auch an der Antizipation des (noch) Unm\u00f6glichen auszurichten. "},"doi":{"15011":"","15014":"10.28937\/978-3-7873-4605-9","15015":""},"isbn":{"15011":"978-3-7873-4604-2","15014":"978-3-7873-4605-9","15015":"978-3-7873-4606-6"},"marketing_short_text":{"15011":"","15014":"","15015":""},"recension_text":{"15011":"","15014":"","15015":""},"language":{"15011":"","15014":"","15015":""},"cover":{"15011":"Kartoniert","15014":"","15015":""},"pages":{"15011":"495 Seiten","15014":"495 Seiten","15015":"495 Seiten"},"edition":{"15011":"","15014":"Unver\u00e4ndertes eBook der 1. Auflage von 2024","15015":"Unver\u00e4ndertes EPUB der 1. Auflage von 2024"},"pod":{"15011":"Nein","15014":"Nein","15015":"Nein"},"copyright_year":{"15011":"","15014":"","15015":""},"vlb_tix_link":{"15011":"https:\/\/neu.vlbtix.de\/products\/9783787346042?type=gtin","15014":"","15015":""},"defaultValues":{"163":"15"}};
19172            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
19173
19174            if (typeof window.amxnotif_wrap_attributes === 'function') {
19175                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
19176                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
19177            }
19178
19179            const configurableOptionsComponent = initConfigurableOptions(
19180                '15095',
19181                config
19182            );
19183            const swatchOptionsComponent = initSwatchOptions(
19184                swatchConfig
19185            );
19186
19187            // DWS - Configurable product preselect start
19188            const confProdPreSelect = () => {
19189                return {
19190                    preselectQuerystringItems() {
19191                        var data = {"id":"15011","output":"15"};
19192                        const urlQueryParams = new URLSearchParams(window.location.search);
19193
19194                                                this.$nextTick(() => {
19195                            setTimeout(() => {
19196                                const rootEl = this.$root || this.$el;
19197                                if (!rootEl) return;
19198
19199                                const applySelection = (attrCode, attrValue) => {
19200                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
19201
19202                                    const attributes = Object.values(this.optionConfig.attributes || {});
19203                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
19204
19205                                    if (targetAttr) {
19206                                        const attrId = String(targetAttr.id);
19207                                        const optionVal = String(attrValue);
19208
19209                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
19210
19211                                        if (inputEl) {
19212                                                                                        inputEl.click();
19213                                            inputEl.dispatchEvent(new Event('change', {
19214                                                bubbles: true
19215                                            }));
19216                                        } else {
19217                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
19218                                            if (selectEl) {
19219                                                selectEl.value = optionVal;
19220                                                selectEl.dispatchEvent(new Event('change', {
19221                                                    bubbles: true
19222                                                }));
19223                                            }
19224                                        }
19225
19226                                                                                this.changeOption(attrId, optionVal, false);
19227                                    }
19228                                };
19229
19230                                                                if (data && typeof data === 'object') {
19231                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
19232                                }
19233
19234                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
19235                                    if (attribute && attribute.code) {
19236                                        let optionValue = urlQueryParams.get(attribute.code);
19237                                        if (optionValue) {
19238                                            let optionId = false;
19239                                            const attributes = Object.values(this.optionConfig.attributes || {});
19240                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
19241
19242                                            let found = false;
19243                                            Object.values(targetAttr.options).map(option => {
19244                                                if (found === false && option.label === optionValue) {
19245                                                    optionId = option.id;
19246                                                    found = true;
19247                                                }
19248                                            });
19249
19250                                            const attrId = String(targetAttr.id);
19251                                            let optionVal = String(optionValue);
19252                                            if (found) {
19253                                                optionVal = String(optionId);
19254                                            }
19255
19256                                            applySelection(attribute.code, optionVal);
19257                                        }
19258                                    }
19259                                });
19260                            }, 100);
19261                        });
19262                    }
19263                }
19264            };
19265            // DWS - Configurable product preselect end
19266
19267            const result = Object.assign(
19268                configurableOptionsComponent,
19269                swatchOptionsComponent, {
19270                    productId: '15095',
19271                    productIndex: 0,
19272                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
19273                    showSwatches: false,
19274                    precalcOptions: {},
19275                    originalInit: configurableOptionsComponent.init,
19276                    init() {
19277                        try {
19278                            this.precalcOptions = {};
19279                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
19280                            this.preselectQuerystringItems();
19281                            if (Array.isArray(attrSource)) {
19282                                attrSource.forEach(attr => {
19283                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
19284                                });
19285                            } else if (attrSource && typeof attrSource === 'object') {
19286                                Object.keys(attrSource).forEach(id => {
19287                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
19288                                });
19289                            }
19290                        } catch (e) {
19291                            console.error('Pre-calc error:', e);
19292                        }
19293
19294                        if (typeof this.originalInit === 'function') {
19295                            this.originalInit();
19296                        }
19297
19298                        try {
19299                            this.initShowSwatchesIntersect();
19300                        } catch (e) {
19301                            console.error('intersect error:', e);
19302                        }
19303                    },
19304
19305                    updateGallery() {
19306                        if (!this.productIndex) return;
19307
19308                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
19309                                method: 'GET',
19310                                headers: {
19311                                    'Content-Type': 'application/json',
19312                                    'X-Requested-With': 'XMLHttpRequest'
19313                                }
19314                            })
19315                            .then(response => response.json())
19316                            .then(data => {
19317                                if (data && data.medium) {
19318                                    window.dispatchEvent(new CustomEvent("update-gallery-15095", {
19319                                        detail: data.medium
19320                                    }));
19321                                }
19322                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
19323                    },
19324
19325
19326                    initShowSwatchesIntersect() {
19327                        const observer = new IntersectionObserver(entries => {
19328                            if (entries[0].isIntersecting) {
19329                                this.showSwatches = true;
19330                                observer.disconnect();
19331                            }
19332                        }, {
19333                            rootMargin: '512px'
19334                        });
19335                        observer.observe(this.$el);
19336                    },
19337                    getOptions(attrId) {
19338                        return this.precalcOptions[attrId] || [];
19339                    },
19340                    getOptionsByAttrId() {
19341                        return this.getOptions(this.$el.dataset.attributeId);
19342                    },
19343                    _getItemId() {
19344                        if (this.item && this.item.id) return this.item.id;
19345                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
19346                    },
19347                    getSwatchOptionHtmlId() {
19348                        const itemId = this._getItemId();
19349                        return itemId ? this.$id(`attribute-option-15095-${itemId}`) : '';
19350                    },
19351                    getSwatchOptionHtmlIdGroup() {
19352                        const itemId = this._getItemId();
19353                        return itemId ? [`attribute-option-15095-${itemId}`] : [];
19354                    },
19355                    getAttributeSwatchData(attributeId) {
19356                        const data = Object.assign({}, this.swatchConfig[attributeId]);
19357                        if (data['additional_data']) {
19358                            try {
19359                                data['details'] = JSON.parse(data['additional_data']);
19360                            } catch (e) {
19361                                data['details'] = {};
19362                            }
19363                        }
19364                        return data;
19365                    },
19366                    getSwatchType(attributeId, optionId) {
19367                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
19368                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
19369                        }
19370                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
19371                            this.swatchConfig[attributeId].details.swatch_input_type :
19372                            "empty";
19373                        if (type === 'visual') {
19374                            const config = this.swatchConfig[attributeId];
19375                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
19376                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
19377                            }
19378                            // Fallback to first option type
19379                            for (const oId in config) {
19380                                if (config[oId] && typeof config[oId].type !== 'undefined') {
19381                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
19382                                }
19383                            }
19384                        }
19385                        return type;
19386                    },
19387                    mapSwatchTypeNumberToTypeCode(type) {
19388                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
19389                    },
19390                    isTextSwatch() {
19391                        const itemId = this._getItemId();
19392                        if (!this.$el || !itemId) return false;
19393                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
19394                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
19395                    },
19396
19397                    getSwatchText() {
19398                        const itemId = this._getItemId();
19399                        if (this.item) return this.item.label || '';
19400                        if (!this.$el || !itemId) return '';
19401                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
19402                        const options = attrId ? this.getOptions(attrId) : [];
19403                        const opt = options.find(o => o.id == itemId);
19404                        return opt ? opt.label : '';
19405                    },
19406                    getSwatchBackgroundStyle() {
19407                        const itemId = this._getItemId();
19408                        if (!this.$el || !itemId) return '';
19409                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
19410                        if (!attrId) return '';
19411                        const type = this.getSwatchType(attrId, itemId);
19412                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
19413                            this.swatchConfig[attrId][itemId] :
19414                            null;
19415                        if (!swatchData) return '';
19416                        if (type === "color") return 'background-color:' + swatchData.value;
19417                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
19418                        return '';
19419                    },
19420                    swatchOptionClasses() {
19421                        const itemId = this._getItemId();
19422                        if (!this.$el || !itemId) return {};
19423                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
19424                        return {
19425                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
19426                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
19427                            'w-6 h-6': !this.isTextSwatch()
19428                        }
19429                    },
19430
19431                    onFocusSwatchItem() {
19432                        const itemId = this._getItemId();
19433                        if (itemId) this.focusedLabel = itemId;
19434                    },
19435                    onChangeOption() {
19436                        const itemId = this._getItemId();
19437                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
19438                        if (attrId && itemId) this.changeOption(attrId, itemId);
19439                    },
19440                    changeOption(attributeId, value) {
19441                        if (value === '') {
19442                            return;
19443                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
19444                        } else {
19445                            this.selectedValues[attributeId] = value;
19446                        }
19447
19448                        this.findSimpleIndex();
19449                        this.findAllowedAttributeOptions();
19450                        this.updatePrices();
19451                        this.updateGallery();
19452
19453                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
19454                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
19455
19456                        const eventDetail = {
19457                            productId: this.productId,
19458                            optionId: attributeId,
19459                            value: value,
19460                            productIndex: this.productIndex || 0,
19461                            selectedValues: this.selectedValues,
19462                            candidates: candidates,
19463                            sourceElement: this.$el
19464                        };
19465
19466                        // Dispatch for Amasty
19467                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
19468                            detail: eventDetail
19469                        }));
19470
19471                        // Dispatch for Hyva listing
19472                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
19473                            detail: eventDetail
19474                        }));
19475                    },
19476
19477
19478                    clearOptionIfActive() {
19479                        const itemId = this._getItemId();
19480                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
19481                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
19482                            this.changeOption(attrId, '');
19483
19484                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
19485                            if (!input && this.$el?.querySelector) {
19486                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
19487                            }
19488                            if (!input && this.$el?.closest) {
19489                                const root = this.$el.closest('[data-product-id]') || this.$el;
19490                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
19491                            }
19492                            if (input) {
19493                                input.checked = false;
19494                            }
19495                        }
19496                    },
19497                    get optionIsEnabled() {
19498                        const itemId = this._getItemId();
19499                        if (!this.$el || !itemId) return true;
19500                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
19501                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
19502                        return !!allowedOptions.find(opt => opt.id == itemId);
19503                    },
19504                    get isSelected() {
19505                        const itemId = this._getItemId();
19506                        if (!this.$el || !itemId) return false;
19507                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
19508                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
19509                    },
19510                    get isSwatchRequired() {
19511                        if (!this.$el) return false;
19512                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
19513                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
19514                    },
19515                    focusedLabel: false,
19516                    activeTooltipItem: false,
19517                    tooltipPositionElement: false,
19518                    setActiveTooltipItem() {
19519                        const itemId = this._getItemId();
19520                        if (!this.$el || !itemId) return;
19521                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
19522                        this.activeTooltipItem = {
19523                            attribute: attrId,
19524                            item: itemId,
19525                            index: 0
19526                        };
19527                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
19528                    },
19529                    unsetActiveTooltipItem() {
19530                        this.activeTooltipItem = false;
19531                    }
19532                },
19533                confProdPreSelect()
19534            );
19535
19536            if (result.optionConfig && result.optionConfig.attributes) {
19537                const attributes = result.optionConfig.attributes;
19538                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
19539                    let source = attributes;
19540                    if (Array.isArray(attributes)) {
19541                        source = {};
19542                        attributes.forEach(attr => {
19543                            if (attr && attr.id) source[attr.id] = attr;
19544                        });
19545                    }
19546                    const values = Object.values(source);
19547                    const wrapper = Object.assign(values, source);
19548                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
19549                        value: true,
19550                        enumerable: false
19551                    });
19552                    result.optionConfig.attributes = wrapper;
19553                }
19554            }
19555
19556            return result;
19557        }
19558
19559        window.addEventListener('alpine:init', () => {
19560            Alpine.data('initConfigurableSwatchOptions_15095', initConfigurableSwatchOptions_15095);
19561        }, {
19562            once: true
19563        });
19564    </script>
19564
19565    
19566    <div x-data="initConfigurableSwatchOptions_15095" x-defer="intersect">
19567        <div class="pagebuilder-home-hidden">
19568                                            
19569                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
19570                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
19571                        <template x-if="showSwatches">
19572                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-15095-163" role="radiogroup" aria-label="Einband">
19573                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
19574                                    <div :data-option-id="item.id" style="display: contents">
19575                                        <div x-id="getSwatchOptionHtmlIdGroup">
19576    <template x-if="optionIsEnabled">
19577        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
19577self="unsetActiveTooltipItem">
19578            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-15095-163">
19579            <div>
19580                <template x-if="isTextSwatch">
19581                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
19582                </template>
19583                <template x-if="!optionIsActive(163, item.id)">
19584                    <div>
19585                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
19586                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
19587                        </svg>
19588                    </div>
19589                </template>
19590            </div>
19591        </label>
19592    </template>
19593</div>                                    </div>
19594                                </template>
19595                            </div>
19596                        </template>
19597                    </div>
19598                </div>
19599                    </div>
19600    </div>
19601            
19602                                                <div class="meta py-4 pagebuilder-home-hidden">
19603                <div x-data="initMarketingShortText_15095()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
19604                    <!-- Marketing short text -->
19605                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
19606                    </div>
19607
19608                    <!-- Short description -->
19609                                                                <div class="short-description">
19610                            Ob Naturkatastrophen in Folge des Klimawandels, die Corona-Pandemie oder der &Uuml;berfall Russlands auf die Ukraine &ndash; in den letzten Jahren schien die Demokratie oft unf&auml;hig, sich angesichts ...                            <a href="https://meiner.de/fmv_de/qualita-ten-der-freiheit-16741" class="underline">mehr</a>
19611                        </div>
19612                                    </div>
19613
19614                <!-- Series  -->
19615                                    <div class="mb-1">
19616                        <span class="sr-only">Reihe:</span>
19617                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
19618                            <span>Blaue Reihe</span>
19619                        </a>
19620                                            </div>
19621                
19622                
19623                                                    <div class="mb-1">
19624                        <span x-data="initEditionText_15095()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
19625                            <!-- Marketing short text -->
19626                            <span class="edition-text" x-html="editionText"></span>&nbsp;2024, 495 Seiten                        </span>
19627                    </div>
19628                
19629                            </div>
19630            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
19631                
19632                <div class="justify-end" x-data="initPriceBox()" @update-prices-15095.window="updatePrice($event.detail);">
19633                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="15095" data-price-box="product-id-15095"><span class="normal-price">
19634    <span x-data x-id="['product\u002Dprice\u002D15095']" class="price-container price-final_price tax weee">
19635            <span class="price-label">Ab</span>
19636                <span class="approx-price">ca. </span>
19637        <span :id="$id('product\u002Dprice\u002D15095')" data-price-amount="21.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">21,99&nbsp;&euro;</span></span>
19638        </span>
19639</span>
19640
19641
19642</div>                </div>
19643
19644                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
19645                                            <div class="open-access-container open-access-container-15095                    flex mt-4 ml-auto sm:mt-0 hidden">
19646                            <div class="text-gray-700">
19647                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
19648                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
19649                                        Kostenlos online lesen                                    </a>
19650                                </button>
19651                            </div>
19652                        </div>
19653                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Qualit&auml;ten der Freiheit" aria-label="In den Warenkorb Qualit&auml;ten der Freiheit" data-addto="cart">
19654                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
19655  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
196550 014 0z"></path>
19656</svg>
19657                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
19658                                        In den Warenkorb                                    </span>
19659                                </button>
19660                                                                                                                    
19661<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(15095)" aria-label="Zur Wunschliste hinzuf&uuml;gen Qualit&auml;ten der Freiheit" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
19662    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
19663  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
19664</svg>
19665</button>
19666                                    </div>
19667            </div>
19668        </div>
19669        
19669<script>
19670            function initMarketingShortText_15095() {
19671                var marketingShortTextConfig = {};
19672                if (typeof window.initConfigurableSwatchOptions_15095 === "function") {
19673                    var fullConfig = window.initConfigurableSwatchOptions_15095().optionConfig
19674                    var marketingShortTextConfig = fullConfig.marketing_short_text;
19675                }
19676                return {
19677                    marketingShortText: '',
19678                    config: marketingShortTextConfig,
19679                    productId: '15095',
19680                    getMarketingShortText(detail) {
19681                        this.marketingShortText = detail.productIndex ?
19682                            this.config[detail.productIndex] :
19683                            null;
19684                    },
19685                    eventListeners: {
19686                        ['@listing-configurable-selection-changed.window'](event) {
19687                            if (this.productId == event.detail.productId) {
19688                                this.getMarketingShortText(event.detail);
19689                            }
19690
19691                        }
19692                    }
19693                }
19694            }
19695
19696            function initEditionText_15095() {
19697                var editionTextConfig = {};
19698                if (typeof window.initConfigurableSwatchOptions_15095 === "function") {
19699                    var fullConfig = window.initConfigurableSwatchOptions_15095().optionConfig
19700                    var editionTextConfig = fullConfig.edition;
19701                }
19702                return {
19703                    editionText: '',
19704                    config: editionTextConfig,
19705                    productId: '15095',
19706                    getEditionText(detail) {
19707                        this.editionText = detail.productIndex ?
19708                            this.config[detail.productIndex] :
19709                            null;
19710                    },
19711                    eventListeners: {
19712                        ['@listing-configurable-selection-changed.window'](event) {
19713                            if (this.productId == event.detail.productId) {
19714                                this.getEditionText(event.detail);
19715                            }
19716
19717                        }
19718                    }
19719                }
19720            }
19721        </script>
19721
19722                    </form>
19723                            
19724    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/4015/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk9137">
19725        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="4015">
19726                                    <a href="https://meiner.de/fmv_de/demokratie-der-gefa-hle-9137" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
19727            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-4015.window="$el.src = $event.detail" alt="Demokratie der Gef&uuml;hle" title="Demokratie der Gef&uuml;hle" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787340811_4.jpg" :style="{
19728                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
19729                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
19730            }">
19731                    </a>
19732        <div class="product-info flex flex-col flex-grow ">
19733                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
19734                                    <div class="mb-2 text-sm text-gray-500 font-medium">
19735                                                                                    <a href="https://meiner.de/fmv_de/person/Josef-Fruchtl-3439/" class="mb-2">
19736                                    Josef Fr&uuml;chtl                                                                    </a>
19737                                                                                                                                    </div>
19738                                <a class="product-item-link" href="https://meiner.de/fmv_de/demokratie-der-gefa-hle-9137">
19739                    Demokratie der Gef&uuml;hle                </a>
19740                            </div>
19741
19742            <div x-data="initEditionText_4015()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
19743                <!-- Marketing short text -->
19744                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
19745                </div>
19746            </div>
19747
19748                            <div class="py-1 grid  mb-4 ">
19749                    
19750                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":4015,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":4015,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"7668":"1","7670":"1","7725":"1"},"childProductsAlertStatus":{"7668":"0","7670":"0","7725":"0"},"indexMapping":{"163:15":7668,"163:8":7670,"163:9":7725},"availabilityMessages":{"7668":"Lieferbar innerhalb von 3-5 Tagen","7670":"Download sofort  verf\u00fcgbar","7725":"Download sofort  verf\u00fcgbar"},"openAccess":{"4015":{"status":0},"7668":{"status":0},"7670":{"status":0},"7725":{"status":0}}},"availabilityMessages":{"7668":"Lieferbar innerhalb von 3-5 Tagen","7670":"Download sofort  verf\u00fcgbar","7725":"Download sofort  verf\u00fcgbar"},"openAccess":{"4015":{"status":0},"7668":{"status":0},"7670":{"status":0},"7725":{"status":0}}}'>
19751        <template x-if="containerVisible">
19752                            <!-- Popup Trigger -->
19753                <div>
19754                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
19755                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
19756                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
19757  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
19758<title>bell</title></svg>
19759</span>
19760                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
19761
19762                    <!-- Popup Modal -->
19763                    <template x-if="showModal">
19764                        <template x-teleport=".page-wrapper">
19765                            <div x-cloak class="fixed inset-0 flex items-center justify-center
19766                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
19767                                <div class="relative bg-white rounded-lg shadow-xl
19768                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
19769                                    <div class="p-6">
19770                                        <!-- Subscription Form for Popup -->
19771                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
19772                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
19773                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
19774                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
19775
19776                                            <div class="flex flex-col gap-3">
19777                                                <div class="flex-grow grow">
19778                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
19779                                                        shadow-xs focus:outline-none focus:outline-hidden
19780                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
19781                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
19782                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
19783                                                </div>
19784                                                <input type="hidden" name="product_id" :value="currentProductId">
19785                                                <input type="hidden" name="type" value="email">
19786
19787                                                
19788                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
19789
19790                                                <div class="amxnotif_guest_action">
19791                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
19792                                                        rounded-md focus:outline-none
19793                                                        focus:outline-hidden focus:ring-2
19794                                                        focus:ring-offset-2 disabled:opacity-50
19795                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
19796                                                        Benachrichtigen                                                    </button>
19797                                                </div>
19798                                            </div>
19799
19800                                                                                            <div class="flex items-start pt-2">
19801                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
19802                                                        text-blue-600 border-gray-300 rounded-sm">
19803                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
19804                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
19805                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
19806                                                </div>
19807                                                                                    </form>
19808                                    </div>
19809
19810                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
19811                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
19812                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
19813  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
19814<title>x</title></svg>
19815                                    </button>
19816                                </div>
19817                            </div>
19818                        </template>
19819                    </template>
19820                </div>
19821                    </template>
19822    </div>
19823
19824<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_4015" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":4015,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"7668":"1","7670":"1","7725":"1"},"childProductsAlertStatus":{"7668":"0","7670":"0","7725":"0"},"indexMapping":"{\u0022163:15\u0022:7668,\u0022163:8\u0022:7670,\u0022163:9\u0022:7725}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":4015,"availabilityMessages":{"7668":"Lieferbar innerhalb von 3-5 Tagen","7670":"Download sofort  verf\u00fcgbar","7725":"Download sofort  verf\u00fcgbar"},"openAccess":{"4015":{"status":0},"7668":{"status":0},"7670":{"status":0},"7725":{"status":0}}}'>
19825    
19826    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
19827        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
19828        <span x-html="optionsLabelText"></span>
19829    </p>
19830</div>                </div>
19831            
19832                                
19832<script>
19833        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
19834            try {
19835                const attributes = (config && config.attributes) ? config.attributes : null;
19836                if (!attributes) return [];
19837                let attr = null;
19838                if (Array.isArray(attributes)) {
19839                    for (let i = 0; i < attributes.length; i++) {
19840                        const a = attributes[i];
19841                        if (a && a.id == attrId) {
19842                            attr = a;
19843                            break;
19844                        }
19845                    }
19846                } else {
19847                    attr = attributes[attrId];
19848                }
19849                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
19850            } catch (e) {
19851                return [];
19852            }
19853        };
19854
19855        function initConfigurableSwatchOptions_4015() {
19856            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["7668"]},{"id":"8","label":"PDF","products":["7670"]},{"id":"9","label":"EPUB","products":["7725"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"7668":{"baseOldPrice":{"amount":21.401868158879},"oldPrice":{"amount":22.9},"basePrice":{"amount":21.401868158879},"finalPrice":{"amount":22.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"7670":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":15.878503672897},"finalPrice":{"amount":16.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"7725":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":15.878503672897},"finalPrice":{"amount":16.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":15.878503672897},"finalPrice":{"amount":16.99},"isApproxPrice":null},"productId":"4015","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"7668":{"163":"15"},"7670":{"163":"8"},"7725":{"163":"9"}},"salable":{"163":{"15":["7668"],"8":["7670"],"9":["7725"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"7668":"004048","7670":"004049","7725":"004081"},"output":{"7668":"Kartoniert","7670":"PDF","7725":"EPUB"},"original_name":{"7668":"","7670":"","7725":""},"openaccess_license_link":{"7668":"","7670":"","7725":""},"openaccess_license_name":{"7668":"","7670":"","7725":""},"openaccess_external_link":{"7668":"","7670":"","7725":""},"gpsr_safety_info":{"7668":"","7670":"","7725":""},"description":{"7668":"Vor dem Hintergrund einer zunehmend von politischen Emotionen gepr\u00e4gten gesellschaftlichen Lage stellt das neue Buch von Josef Fr\u00fcchtl die grunds\u00e4tzliche Frage nach dem Zusammenhang von Gef\u00fchlen und Politik und verbindet sie mit einer \u00e4sthetischen Perspektive.<br>\n\nAuf zentralen gesellschaftlichen Ebenen \u2013 technologisch in den digitalen Netzwerken mit ihren \u00bbhate speeches\u00ab und \u00bbshit storms\u00ab, \u00f6konomisch im kapitalistisch rasenden Prozess der Globalisierung, kulturell im Kampf religi\u00f6s unterf\u00fctterter Wertsysteme und staatspolitisch im kriegerischen Zerfall von Nationen \u2013 haben sich in den vergangenen zwei bis drei Jahrzehnten die Schleusen f\u00fcr eine Politik der Emotionen ge\u00f6ffnet. Welche Rolle aber spielen Gef\u00fchle in einer demokratischen Lebensform? Und welche Rolle kommt den von Kunst und popul\u00e4rer Kultur angeleiteten Erfahrungen dabei zu? Die entscheidende Frage kann heute nicht mehr sein, ob, sondern in welchem Ausma\u00df und in welchem Sinn Gef\u00fchle eine Rolle im demokratischen Streit spielen und spielen sollen. Auf diese Frage \u2013 so die These Fr\u00fcchtls \u2013 gibt es vier zentrale Antworten. Im politischen Zusammenhang verlangen Gef\u00fchle n\u00e4mlich nach einer zeitgem\u00e4\u00dfen Form der Darstellung, nach M\u00e4\u00dfigung, nach balancierendem Ausgleich und n
19856ach sinnvoller Umwandlung. Diese vierfache Reaktion l\u00e4sst sich entweder unter Mithilfe von \u00e4sthetischen Erfahrungen oder sogar in ausgezeichneter Weise durch sie erreichen.","7670":"Vor dem Hintergrund einer zunehmend von politischen Emotionen gepr\u00e4gten gesellschaftlichen Lage stellt das neue Buch von Josef Fr\u00fcchtl die grunds\u00e4tzliche Frage nach dem Zusammenhang von Gef\u00fchlen und Politik und verbindet sie mit einer \u00e4sthetischen Perspektive.<br>\n\nAuf zentralen gesellschaftlichen Ebenen \u2013 technologisch in den digitalen Netzwerken mit ihren \u00bbhate speeches\u00ab und \u00bbshit storms\u00ab, \u00f6konomisch im kapitalistisch rasenden Prozess der Globalisierung, kulturell im Kampf religi\u00f6s unterf\u00fctterter Wertsysteme und staatspolitisch im kriegerischen Zerfall von Nationen \u2013 haben sich in den vergangenen zwei bis drei Jahrzehnten die Schleusen f\u00fcr eine Politik der Emotionen ge\u00f6ffnet. Welche Rolle aber spielen Gef\u00fchle in einer demokratischen Lebensform? Und welche Rolle kommt den von Kunst und popul\u00e4rer Kultur angeleiteten Erfahrungen dabei zu? Die entscheidende Frage kann heute nicht mehr sein, ob, sondern in welchem Ausma\u00df und in welchem Sinn Gef\u00fchle eine Rolle im demokratischen Streit spielen und spielen sollen. Auf diese Frage \u2013 so die These Fr\u00fcchtls \u2013 gibt es vier zentrale Antworten. Im politischen Zusammenhang verlangen Gef\u00fchle n\u00e4mlich nach einer zeitgem\u00e4\u00dfen Form der Darstellung, nach M\u00e4\u00dfigung, nach balancierendem Ausgleich und nach sinnvoller Umwandlung. Diese vierfache Reaktion l\u00e4sst sich entweder unter Mithilfe von \u00e4sthetischen Erfahrungen oder sogar in ausgezeichneter Weise durch sie erreichen.","7725":"Vor dem Hintergrund einer zunehmend von politischen Emotionen gepr\u00e4gten gesellschaftlichen Lage stellt das neue Buch von Josef Fr\u00fcchtl die grunds\u00e4tzliche Frage nach dem Zusammenhang von Gef\u00fchlen und Politik und verbindet sie mit einer \u00e4sthetischen Perspektive.<br>\n\nAuf zentralen gesellschaftlichen Ebenen \u2013 technologisch in den digitalen Netzwerken mit ihren \u00bbhate speeches\u00ab und \u00bbshit storms\u00ab, \u00f6konomisch im kapitalistisch rasenden Prozess der Globalisierung, kulturell im Kampf religi\u00f6s unterf\u00fctterter Wertsysteme und staatspolitisch im kriegerischen Zerfall von Nationen \u2013 haben sich in den vergangenen zwei bis drei Jahrzehnten die Schleusen f\u00fcr eine Politik der Emotionen ge\u00f6ffnet. Welche Rolle aber spielen Gef\u00fchle in einer demokratischen Lebensform? Und welche Rolle kommt den von Kunst und popul\u00e4rer Kultur angeleiteten Erfahrungen dabei zu? Die entscheidende Frage kann heute nicht mehr sein, ob, sondern in welchem Ausma\u00df und in welchem Sinn Gef\u00fchle eine Rolle im demokratischen Streit spielen und spielen sollen. Auf diese Frage \u2013 so die These Fr\u00fcchtls \u2013 gibt es vier zentrale Antworten. Im politischen Zusammenhang verlangen Gef\u00fchle n\u00e4mlich nach einer zeitgem\u00e4\u00dfen Form der Darstellung, nach M\u00e4\u00dfigung, nach balancierendem Ausgleich und nach sinnvoller Umwandlung. Diese vierfache Reaktion l\u00e4sst sich entweder unter Mithilfe von \u00e4sthetischen Erfahrungen oder sogar in ausgezeichneter Weise durch sie erreichen."},"doi":{"7668":"","7670":"10.28937\/978-3-7873-4049-1","7725":""},"isbn":{"7668":"978-3-7873-4048-4","7670":"978-3-7873-4049-1","7725":"978-3-7873-4081-1"},"marketing_short_text":{"7668":"","7670":"","7725":""},"recension_text":{"7668":"","7670":"","7725":""},"language":{"7668":"","7670":"","7725":""},"cover":{"7668":"Kartoniert","7670":"","7725":""},"pages":{"7668":"183 Seiten","7670":"183 Seiten","7725":"183 Seiten"},"edition":{"7668":"","7670":"","7725":"Unver\u00e4nderte ebook-Ausgabe der 1. Auflage von 2021"},"pod":{"7668":"Nein","7670":"Nein","7725":"Nein"},"copyright_year":{"7668":"","7670":"","7725":""},"vlb_tix_link":{"7668":"https:\/\/neu.vlbtix.de\/products\/9783787340484?type=gtin","7670":"","7725":""},"defaultValues":{"163":"15"}};
19857            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
19858
19859            if (typeof window.amxnotif_wrap_attributes === 'function') {
19860                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
19861                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
19862            }
19863
19864            const configurableOptionsComponent = initConfigurableOptions(
19865                '4015',
19866                config
19867            );
19868            const swatchOptionsComponent = initSwatchOptions(
19869                swatchConfig
19870            );
19871
19872            // DWS - Configurable product preselect start
19873            const confProdPreSelect = () => {
19874                return {
19875                    preselectQuerystringItems() {
19876                        var data = {"id":"7668","output":"15"};
19877                        const urlQueryParams = new URLSearchParams(window.location.search);
19878
19879                                                this.$nextTick(() => {
19880                            setTimeout(() => {
19881                                const rootEl = this.$root || this.$el;
19882                                if (!rootEl) return;
19883
19884                                const applySelection = (attrCode, attrValue) => {
19885                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
19886
19887                                    const attributes = Object.values(this.optionConfig.attributes || {});
19888                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
19889
19890                                    if (targetAttr) {
19891                                        const attrId = String(targetAttr.id);
19892                                        const optionVal = String(attrValue);
19893
19894                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
19895
19896                                        if (inputEl) {
19897                                                                                        inputEl.click();
19898                                            inputEl.dispatchEvent(new Event('change', {
19899                                                bubbles: true
19900                                            }));
19901                                        } else {
19902                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
19903                                            if (selectEl) {
19904                                                selectEl.value = optionVal;
19905                                                selectEl.dispatchEvent(new Event('change', {
19906                                                    bubbles: true
19907                                                }));
19908                                            }
19909                                        }
19910
19911                                                                                this.changeOption(attrId, optionVal, false);
19912                                    }
19913                                };
19914
19915                                                                if (data && typeof data === 'object') {
19916                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
19917                                }
19918
19919                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
19920                                    if (attribute && attribute.code) {
19921                                        let optionValue = urlQueryParams.get(attribute.code);
19922                                        if (optionValue) {
19923                                            let optionId = false;
19924                                            const attributes = Object.values(this.optionConfig.attributes || {});
19925                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
19926
19927                                            let found = false;
19928                                            Object.values(targetAttr.options).map(option => {
19929                                                if (found === false && option.label === optionValue) {
19930                                                    optionId = option.id;
19931                                                    found = true;
19932                                                }
19933                                            });
19934
19935                                            const attrId = String(targetAttr.id);
19936                                            let optionVal = String(optionValue);
19937                                            if (found) {
19938                                                optionVal = String(optionId);
19939                                            }
19940
19941                                            applySelection(attribute.code, optionVal);
19942                                        }
19943                                    }
19944                                });
19945                            }, 100);
19946                        });
19947                    }
19948                }
19949            };
19950            // DWS - Configurable product preselect end
19951
19952            const result = Object.assign(
19953                configurableOptionsComponent,
19954                swatchOptionsComponent, {
19955                    productId: '4015',
19956                    productIndex: 0,
19957                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
19958                    showSwatches: false,
19959                    precalcOptions: {},
19960                    originalInit: configurableOptionsComponent.init,
19961                    init() {
19962                        try {
19963                            this.precalcOptions = {};
19964                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
19965                            this.preselectQuerystringItems();
19966                            if (Array.isArray(attrSource)) {
19967                                attrSource.forEach(attr => {
19968                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
19969                                });
19970                            } else if (attrSource && typeof attrSource === 'object') {
19971                                Object.keys(attrSource).forEach(id => {
19972                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
19973                                });
19974                            }
19975                        } catch (e) {
19976                            console.error('Pre-calc error:', e);
19977                        }
19978
19979                        if (typeof this.originalInit === 'function') {
19980                            this.originalInit();
19981                        }
19982
19983                        try {
19984                            this.initShowSwatchesIntersect();
19985                        } catch (e) {
19986                            console.error('intersect error:', e);
19987                        }
19988                    },
19989
19990                    updateGallery() {
19991                        if (!this.productIndex) return;
19992
19993                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
19994                                method: 'GET',
19995                                headers: {
19996                                    'Content-Type': 'application/json',
19997                                    'X-Requested-With': 'XMLHttpRequest'
19998                                }
19999                            })
20000                            .then(response => response.json())
20001                            .then(data => {
20002                                if (data && data.medium) {
20003                                    window.dispatchEvent(new CustomEvent("update-gallery-4015", {
20004                                        detail: data.medium
20005                                    }));
20006                                }
20007                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
20008                    },
20009
20010
20011                    initShowSwatchesIntersect() {
20012                        const observer = new IntersectionObserver(entries => {
20013                            if (entries[0].isIntersecting) {
20014                                this.showSwatches = true;
20015                                observer.disconnect();
20016                            }
20017                        }, {
20018                            rootMargin: '512px'
20019                        });
20020                        observer.observe(this.$el);
20021                    },
20022                    getOptions(attrId) {
20023                        return this.precalcOptions[attrId] || [];
20024                    },
20025                    getOptionsByAttrId() {
20026                        return this.getOptions(this.$el.dataset.attributeId);
20027                    },
20028                    _getItemId() {
20029                        if (this.item && this.item.id) return this.item.id;
20030                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
20031                    },
20032                    getSwatchOptionHtmlId() {
20033                        const itemId = this._getItemId();
20034                        return itemId ? this.$id(`attribute-option-4015-${itemId}`) : '';
20035                    },
20036                    getSwatchOptionHtmlIdGroup() {
20037                        const itemId = this._getItemId();
20038                        return itemId ? [`attribute-option-4015-${itemId}`] : [];
20039                    },
20040                    getAttributeSwatchData(attributeId) {
20041                        const data = Object.assign({}, this.swatchConfig[attributeId]);
20042                        if (data['additional_data']) {
20043                            try {
20044                                data['details'] = JSON.parse(data['additional_data']);
20045                            } catch (e) {
20046                                data['details'] = {};
20047                            }
20048                        }
20049                        return data;
20050                    },
20051                    getSwatchType(attributeId, optionId) {
20052                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
20053                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
20054                        }
20055                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
20056                            this.swatchConfig[attributeId].details.swatch_input_type :
20057                            "empty";
20058                        if (type === 'visual') {
20059                            const config = this.swatchConfig[attributeId];
20060                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
20061                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
20062                            }
20063                            // Fallback to first option type
20064                            for (const oId in config) {
20065                                if (config[oId] && typeof config[oId].type !== 'undefined') {
20066                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
20067                                }
20068                            }
20069                        }
20070                        return type;
20071                    },
20072                    mapSwatchTypeNumberToTypeCode(type) {
20073                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
20074                    },
20075                    isTextSwatch() {
20076                        const itemId = this._getItemId();
20077                        if (!this.$el || !itemId) return false;
20078                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
20079                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
20080                    },
20081
20082                    getSwatchText() {
20083                        const itemId = this._getItemId();
20084                        if (this.item) return this.item.label || '';
20085                        if (!this.$el || !itemId) return '';
20086                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
20087                        const options = attrId ? this.getOptions(attrId) : [];
20088                        const opt = options.find(o => o.id == itemId);
20089                        return opt ? opt.label : '';
20090                    },
20091                    getSwatchBackgroundStyle() {
20092                        const itemId = this._getItemId();
20093                        if (!this.$el || !itemId) return '';
20094                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
20095                        if (!attrId) return '';
20096                        const type = this.getSwatchType(attrId, itemId);
20097                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
20098                            this.swatchConfig[attrId][itemId] :
20099                            null;
20100                        if (!swatchData) return '';
20101                        if (type === "color") return 'background-color:' + swatchData.value;
20102                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
20103                        return '';
20104                    },
20105                    swatchOptionClasses() {
20106                        const itemId = this._getItemId();
20107                        if (!this.$el || !itemId) return {};
20108                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
20109                        return {
20110                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
20111                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
20112                            'w-6 h-6': !this.isTextSwatch()
20113                        }
20114                    },
20115
20116                    onFocusSwatchItem() {
20117                        const itemId = this._getItemId();
20118                        if (itemId) this.focusedLabel = itemId;
20119                    },
20120                    onChangeOption() {
20121                        const itemId = this._getItemId();
20122                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
20123                        if (attrId && itemId) this.changeOption(attrId, itemId);
20124                    },
20125                    changeOption(attributeId, value) {
20126                        if (value === '') {
20127                            return;
20128                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
20129                        } else {
20130                            this.selectedValues[attributeId] = value;
20131                        }
20132
20133                        this.findSimpleIndex();
20134                        this.findAllowedAttributeOptions();
20135                        this.updatePrices();
20136                        this.updateGallery();
20137
20138                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
20139                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
20140
20141                        const eventDetail = {
20142                            productId: this.productId,
20143                            optionId: attributeId,
20144                            value: value,
20145                            productIndex: this.productIndex || 0,
20146                            selectedValues: this.selectedValues,
20147                            candidates: candidates,
20148                            sourceElement: this.$el
20149                        };
20150
20151                        // Dispatch for Amasty
20152                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
20153                            detail: eventDetail
20154                        }));
20155
20156                        // Dispatch for Hyva listing
20157                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
20158                            detail: eventDetail
20159                        }));
20160                    },
20161
20162
20163                    clearOptionIfActive() {
20164                        const itemId = this._getItemId();
20165                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
20166                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
20167                            this.changeOption(attrId, '');
20168
20169                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
20170                            if (!input && this.$el?.querySelector) {
20171                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
20172                            }
20173                            if (!input && this.$el?.closest) {
20174                                const root = this.$el.closest('[data-product-id]') || this.$el;
20175                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
20176                            }
20177                            if (input) {
20178                                input.checked = false;
20179                            }
20180                        }
20181                    },
20182                    get optionIsEnabled() {
20183                        const itemId = this._getItemId();
20184                        if (!this.$el || !itemId) return true;
20185                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
20186                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
20187                        return !!allowedOptions.find(opt => opt.id == itemId);
20188                    },
20189                    get isSelected() {
20190                        const itemId = this._getItemId();
20191                        if (!this.$el || !itemId) return false;
20192                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
20193                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
20194                    },
20195                    get isSwatchRequired() {
20196                        if (!this.$el) return false;
20197                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
20198                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
20199                    },
20200                    focusedLabel: false,
20201                    activeTooltipItem: false,
20202                    tooltipPositionElement: false,
20203                    setActiveTooltipItem() {
20204                        const itemId = this._getItemId();
20205                        if (!this.$el || !itemId) return;
20206                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
20207                        this.activeTooltipItem = {
20208                            attribute: attrId,
20209                            item: itemId,
20210                            index: 0
20211                        };
20212                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
20213                    },
20214                    unsetActiveTooltipItem() {
20215                        this.activeTooltipItem = false;
20216                    }
20217                },
20218                confProdPreSelect()
20219            );
20220
20221            if (result.optionConfig && result.optionConfig.attributes) {
20222                const attributes = result.optionConfig.attributes;
20223                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
20224                    let source = attributes;
20225                    if (Array.isArray(attributes)) {
20226                        source = {};
20227                        attributes.forEach(attr => {
20228                            if (attr && attr.id) source[attr.id] = attr;
20229                        });
20230                    }
20231                    const values = Object.values(source);
20232                    const wrapper = Object.assign(values, source);
20233                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
20234                        value: true,
20235                        enumerable: false
20236                    });
20237                    result.optionConfig.attributes = wrapper;
20238                }
20239            }
20240
20241            return result;
20242        }
20243
20244        window.addEventListener('alpine:init', () => {
20245            Alpine.data('initConfigurableSwatchOptions_4015', initConfigurableSwatchOptions_4015);
20246        }, {
20247            once: true
20248        });
20249    </script>
20249
20250    
20251    <div x-data="initConfigurableSwatchOptions_4015" x-defer="intersect">
20252        <div class="pagebuilder-home-hidden">
20253                                            
20254                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
20255                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
20256                        <template x-if="showSwatches">
20257                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-4015-163" role="radiogroup" aria-label="Einband">
20258                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
20259                                    <div :data-option-id="item.id" style="display: contents">
20260                                        <div x-id="getSwatchOptionHtmlIdGroup">
20261    <template x-if="optionIsEnabled">
20262        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
20262self="unsetActiveTooltipItem">
20263            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-4015-163">
20264            <div>
20265                <template x-if="isTextSwatch">
20266                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
20267                </template>
20268                <template x-if="!optionIsActive(163, item.id)">
20269                    <div>
20270                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
20271                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
20272                        </svg>
20273                    </div>
20274                </template>
20275            </div>
20276        </label>
20277    </template>
20278</div>                                    </div>
20279                                </template>
20280                            </div>
20281                        </template>
20282                    </div>
20283                </div>
20284                    </div>
20285    </div>
20286            
20287                                                <div class="meta py-4 pagebuilder-home-hidden">
20288                <div x-data="initMarketingShortText_4015()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
20289                    <!-- Marketing short text -->
20290                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
20291                    </div>
20292
20293                    <!-- Short description -->
20294                                                                <div class="short-description">
20295                            Vor dem Hintergrund einer zunehmend von politischen Emotionen gepr&auml;gten gesellschaftlichen Lage stellt das neue Buch von Josef Fr&uuml;chtl die grunds&auml;tzliche Frage nach dem Zusammenhang von Gef&uuml;hlen ...                            <a href="https://meiner.de/fmv_de/demokratie-der-gefa-hle-9137" class="underline">mehr</a>
20296                        </div>
20297                                    </div>
20298
20299                <!-- Series  -->
20300                                    <div class="mb-1">
20301                        <span class="sr-only">Reihe:</span>
20302                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
20303                            <span>Blaue Reihe</span>
20304                        </a>
20305                                            </div>
20306                
20307                
20308                                                    <div class="mb-1">
20309                        <span x-data="initEditionText_4015()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
20310                            <!-- Marketing short text -->
20311                            <span class="edition-text" x-html="editionText"></span>&nbsp;2021, 183 Seiten                        </span>
20312                    </div>
20313                
20314                            </div>
20315            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
20316                
20317                <div class="justify-end" x-data="initPriceBox()" @update-prices-4015.window="updatePrice($event.detail);">
20318                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="4015" data-price-box="product-id-4015"><span class="normal-price">
20319    <span x-data x-id="['product\u002Dprice\u002D4015']" class="price-container price-final_price tax weee">
20320            <span class="price-label">Ab</span>
20321                <span class="approx-price">ca. </span>
20322        <span :id="$id('product\u002Dprice\u002D4015')" data-price-amount="16.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">16,99&nbsp;&euro;</span></span>
20323        </span>
20324</span>
20325
20326
20327</div>                </div>
20328
20329                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
20330                                            <div class="open-access-container open-access-container-4015                    flex mt-4 ml-auto sm:mt-0 hidden">
20331                            <div class="text-gray-700">
20332                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
20333                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
20334                                        Kostenlos online lesen                                    </a>
20335                                </button>
20336                            </div>
20337                        </div>
20338                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Demokratie der Gef&uuml;hle" aria-label="In den Warenkorb Demokratie der Gef&uuml;hle" data-addto="cart">
20339                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
20340  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
203400 014 0z"></path>
20341</svg>
20342                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
20343                                        In den Warenkorb                                    </span>
20344                                </button>
20345                                                                                                                    
20346<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(4015)" aria-label="Zur Wunschliste hinzuf&uuml;gen Demokratie der Gef&uuml;hle" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
20347    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
20348  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
20349</svg>
20350</button>
20351                                    </div>
20352            </div>
20353        </div>
20354        
20354<script>
20355            function initMarketingShortText_4015() {
20356                var marketingShortTextConfig = {};
20357                if (typeof window.initConfigurableSwatchOptions_4015 === "function") {
20358                    var fullConfig = window.initConfigurableSwatchOptions_4015().optionConfig
20359                    var marketingShortTextConfig = fullConfig.marketing_short_text;
20360                }
20361                return {
20362                    marketingShortText: '',
20363                    config: marketingShortTextConfig,
20364                    productId: '4015',
20365                    getMarketingShortText(detail) {
20366                        this.marketingShortText = detail.productIndex ?
20367                            this.config[detail.productIndex] :
20368                            null;
20369                    },
20370                    eventListeners: {
20371                        ['@listing-configurable-selection-changed.window'](event) {
20372                            if (this.productId == event.detail.productId) {
20373                                this.getMarketingShortText(event.detail);
20374                            }
20375
20376                        }
20377                    }
20378                }
20379            }
20380
20381            function initEditionText_4015() {
20382                var editionTextConfig = {};
20383                if (typeof window.initConfigurableSwatchOptions_4015 === "function") {
20384                    var fullConfig = window.initConfigurableSwatchOptions_4015().optionConfig
20385                    var editionTextConfig = fullConfig.edition;
20386                }
20387                return {
20388                    editionText: '',
20389                    config: editionTextConfig,
20390                    productId: '4015',
20391                    getEditionText(detail) {
20392                        this.editionText = detail.productIndex ?
20393                            this.config[detail.productIndex] :
20394                            null;
20395                    },
20396                    eventListeners: {
20397                        ['@listing-configurable-selection-changed.window'](event) {
20398                            if (this.productId == event.detail.productId) {
20399                                this.getEditionText(event.detail);
20400                            }
20401
20402                        }
20403                    }
20404                }
20405            }
20406        </script>
20406
20407                    </form>
20408                            
20409    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/43703/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk17423">
20410        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="43703">
20411                                    <a href="https://meiner.de/fmv_de/schockierende-ungleichheit-17423" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
20412            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-43703.window="$el.src = $event.detail" alt="Schockierende Ungleichheit" title="Schockierende Ungleichheit" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351893_1.jpg" :style="{
20413                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
20414                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
20415            }">
20416                    </a>
20417        <div class="product-info flex flex-col flex-grow ">
20418                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
20419                                    <div class="mb-2 text-sm text-gray-500 font-medium">
20420                                                                                    <a href="https://meiner.de/fmv_de/person/Wolfgang-Detel-3526/" class="mb-2">
20421                                    Wolfgang Detel                                                                    </a>
20422                                                                                                                                    </div>
20423                                <a class="product-item-link" href="https://meiner.de/fmv_de/schockierende-ungleichheit-17423">
20424                    Schockierende Ungleichheit                </a>
20425                            </div>
20426
20427            <div x-data="initEditionText_43703()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
20428                <!-- Marketing short text -->
20429                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
20430                </div>
20431            </div>
20432
20433                            <div class="py-1 grid  mb-4 ">
20434                    
20435                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":43703,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":43703,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46975":"1","46991":"1","46992":"1"},"childProductsAlertStatus":{"46975":"0","46991":"0","46992":"0"},"indexMapping":{"163:15":46975,"163:8":46991,"163:9":46992},"availabilityMessages":{"46975":"Lieferbar innerhalb von 3-5 Tagen","46991":"Download sofort  verf\u00fcgbar","46992":"Download sofort  verf\u00fcgbar"},"openAccess":{"43703":{"status":0},"46975":{"status":0},"46991":{"status":0},"46992":{"status":0}}},"availabilityMessages":{"46975":"Lieferbar innerhalb von 3-5 Tagen","46991":"Download sofort  verf\u00fcgbar","46992":"Download sofort  verf\u00fcgbar"},"openAccess":{"43703":{"status":0},"46975":{"status":0},"46991":{"status":0},"46992":{"status":0}}}'>
20436        <template x-if="containerVisible">
20437                            <!-- Popup Trigger -->
20438                <div>
20439                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
20440                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
20441                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
20442  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
20443<title>bell</title></svg>
20444</span>
20445                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
20446
20447                    <!-- Popup Modal -->
20448                    <template x-if="showModal">
20449                        <template x-teleport=".page-wrapper">
20450                            <div x-cloak class="fixed inset-0 flex items-center justify-center
20451                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
20452                                <div class="relative bg-white rounded-lg shadow-xl
20453                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
20454                                    <div class="p-6">
20455                                        <!-- Subscription Form for Popup -->
20456                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
20457                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
20458                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
20459                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
20460
20461                                            <div class="flex flex-col gap-3">
20462                                                <div class="flex-grow grow">
20463                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
20464                                                        shadow-xs focus:outline-none focus:outline-hidden
20465                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
20466                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
20467                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
20468                                                </div>
20469                                                <input type="hidden" name="product_id" :value="currentProductId">
20470                                                <input type="hidden" name="type" value="email">
20471
20472                                                
20473                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
20474
20475                                                <div class="amxnotif_guest_action">
20476                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
20477                                                        rounded-md focus:outline-none
20478                                                        focus:outline-hidden focus:ring-2
20479                                                        focus:ring-offset-2 disabled:opacity-50
20480                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
20481                                                        Benachrichtigen                                                    </button>
20482                                                </div>
20483                                            </div>
20484
20485                                                                                            <div class="flex items-start pt-2">
20486                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
20487                                                        text-blue-600 border-gray-300 rounded-sm">
20488                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
20489                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
20490                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
20491                                                </div>
20492                                                                                    </form>
20493                                    </div>
20494
20495                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
20496                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
20497                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
20498  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
20499<title>x</title></svg>
20500                                    </button>
20501                                </div>
20502                            </div>
20503                        </template>
20504                    </template>
20505                </div>
20506                    </template>
20507    </div>
20508
20509<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_43703" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":43703,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46975":"
205091","46991":"1","46992":"1"},"childProductsAlertStatus":{"46975":"0","46991":"0","46992":"0"},"indexMapping":"{\u0022163:15\u0022:46975,\u0022163:8\u0022:46991,\u0022163:9\u0022:46992}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":43703,"availabilityMessages":{"46975":"Lieferbar innerhalb von 3-5 Tagen","46991":"Download sofort  verf\u00fcgbar","46992":"Download sofort  verf\u00fcgbar"},"openAccess":{"43703":{"status":0},"46975":{"status":0},"46991":{"status":0},"46992":{"status":0}}}'>
20510    
20511    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
20512        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
20513        <span x-html="optionsLabelText"></span>
20514    </p>
20515</div>                </div>
20516            
20517                                
20517<script>
20518        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
20519            try {
20520                const attributes = (config && config.attributes) ? config.attributes : null;
20521                if (!attributes) return [];
20522                let attr = null;
20523                if (Array.isArray(attributes)) {
20524                    for (let i = 0; i < attributes.length; i++) {
20525                        const a = attributes[i];
20526                        if (a && a.id == attrId) {
20527                            attr = a;
20528                            break;
20529                        }
20530                    }
20531                } else {
20532                    attr = attributes[attrId];
20533                }
20534                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
20535            } catch (e) {
20536                return [];
20537            }
20538        };
20539
20540        function initConfigurableSwatchOptions_43703() {
20541            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46975"]},{"id":"8","label":"PDF","products":["46991"]},{"id":"9","label":"EPUB","products":["46992"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46975":{"baseOldPrice":{"amount":27.943924233645},"oldPrice":{"amount":29.9},"basePrice":{"amount":27.943924233645},"finalPrice":{"amount":29.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46991":{"baseOldPrice":{"amount":20.551400869159},"oldPrice":{"amount":21.99},"basePrice":{"amount":20.551400869159},"finalPrice":{"amount":21.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46992":{"baseOldPrice":{"amount":20.551400869159},"oldPrice":{"amount":21.99},"basePrice":{"amount":20.551400869159},"finalPrice":{"amount":21.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":20.551400869159},"oldPrice":{"amount":21.99},"basePrice":{"amount":18.478990596639},"finalPrice":{"amount":21.99},"isApproxPrice":null},"productId":"43703","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46975":{"163":"15"},"46991":{"163":"8"},"46992":{"163":"9"}},"salable":{"163":{"15":["46975"],"8":["46991"],"9":["46992"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"46975":"005187","46991":"005188","46992":"005189"},"output":{"46975":"Kartoniert","46991":"PDF","46992":"EPUB"},"original_name":{"46975":"","46991":"","46992":""},"openaccess_license_link":{"46975":"","46991":"","46992":""},"openaccess_license_name":{"46975":"","46991":"","46992":""},"openaccess_external_link":{"46975":"","46991":"","46992":""},"gpsr_safety_info":{"46975":"","46991":"","46992":""},"description":{"46975":"In vielen demokratischen Staaten brennt die H\u00fctte, auch in Deutschland. Rechtspopulismus, Faschismus, alarmierende soziale Ungleichheit, prek\u00e4re Arbeitsverh\u00e4ltnisse, wachsende Staatsschulden, Abbau sozialer und kultureller Errungenschaften bedr\u00e4ngen fast \u00fcberall die Demokratie.<br\/><br\/>In seinem engagierten politischen Essay nimmt der Philosoph Wolfgang Detel eine der zentralen Ursachen f\u00fcr diese Entwicklung in den Fokus, n\u00e4mlich die extreme und weiter zunehmende \u00f6konomische Ungleichheit. Und er schl\u00e4gt einen Weg vor, der neben den \u00fcblichen L\u00f6sungen der Staatsschuldenkrise \u2013 weitere Schuldenaufnahme und Abbau von Sozialleistungen \u2013 zu erheblichen Mehreinnahmen f\u00fchren w\u00fcrde: die finanziell st\u00e4rkere Beteiligung der Ultra-Reichen. Damit st\u00fcnden deutlich mehr Mittel etwa f\u00fcr Klimapolitik, Landesverteidigung, Integration von Migranten, Bildung und Milderung der Armut zur Verf\u00fcgung.<br\/><br\/>In sechs Kapiteln analysiert Detel Geschichte und Gegenwart der \u00f6konomischen Ungleichheit und wie die neoliberale Transformation, unterst\u00fctzt durch eine philosophisch-\u00f6konomische Ideologie, diese Ungleichheit in den letzten Jahrzehnten angetrieben hat. In einem weiteren Teil wird eine F\u00fclle 
20541konkreter steuerlicher Ma\u00dfnahmen vorgestellt, die geeignet w\u00e4ren, die \u00f6konomische Ungleichheit in Deutschland erheblich abzumildern. Abschlie\u00dfend werden mit Bezug u. a. auf Axel Honneth, Michael Sandel und Thomas Piketty Entw\u00fcrfe zur nachhaltigen Transformation der neoliberalen Marktwirtschaft skizziert.","46991":"In vielen demokratischen Staaten brennt die H\u00fctte, auch in Deutschland. Rechtspopulismus, Faschismus, alarmierende soziale Ungleichheit, prek\u00e4re Arbeitsverh\u00e4ltnisse, wachsende Staatsschulden, Abbau sozialer und kultureller Errungenschaften bedr\u00e4ngen fast \u00fcberall die Demokratie.<br\/><br\/>In seinem engagierten politischen Essay nimmt der Philosoph Wolfgang Detel eine der zentralen Ursachen f\u00fcr diese Entwicklung in den Fokus, n\u00e4mlich die extreme und weiter zunehmende \u00f6konomische Ungleichheit. Und er schl\u00e4gt einen Weg vor, der neben den \u00fcblichen L\u00f6sungen der Staatsschuldenkrise \u2013 weitere Schuldenaufnahme und Abbau von Sozialleistungen \u2013 zu erheblichen Mehreinnahmen f\u00fchren w\u00fcrde: die finanziell st\u00e4rkere Beteiligung der Ultra-Reichen. Damit st\u00fcnden deutlich mehr Mittel etwa f\u00fcr Klimapolitik, Landesverteidigung, Integration von Migranten, Bildung und Milderung der Armut zur Verf\u00fcgung.<br\/><br\/>In sechs Kapiteln analysiert Detel Geschichte und Gegenwart der \u00f6konomischen Ungleichheit und wie die neoliberale Transformation, unterst\u00fctzt durch eine philosophisch-\u00f6konomische Ideologie, diese Ungleichheit in den letzten Jahrzehnten angetrieben hat. In einem weiteren Teil wird eine F\u00fclle konkreter steuerlicher Ma\u00dfnahmen vorgestellt, die geeignet w\u00e4ren, die \u00f6konomische Ungleichheit in Deutschland erheblich abzumildern. Abschlie\u00dfend werden mit Bezug u. a. auf Axel Honneth, Michael Sandel und Thomas Piketty Entw\u00fcrfe zur nachhaltigen Transformation der neoliberalen Marktwirtschaft skizziert.","46992":"In vielen demokratischen Staaten brennt die H\u00fctte, auch in Deutschland. Rechtspopulismus, Faschismus, alarmierende soziale Ungleichheit, prek\u00e4re Arbeitsverh\u00e4ltnisse, wachsende Staatsschulden, Abbau sozialer und kultureller Errungenschaften bedr\u00e4ngen fast \u00fcberall die Demokratie.<br\/><br\/>In seinem engagierten politischen Essay nimmt der Philosoph Wolfgang Detel eine der zentralen Ursachen f\u00fcr diese Entwicklung in den Fokus, n\u00e4mlich die extreme und weiter zunehmende \u00f6konomische Ungleichheit. Und er schl\u00e4gt einen Weg vor, der neben den \u00fcblichen L\u00f6sungen der Staatsschuldenkrise \u2013 weitere Schuldenaufnahme und Abbau von Sozialleistungen \u2013 zu erheblichen Mehreinnahmen f\u00fchren w\u00fcrde: die finanziell st\u00e4rkere Beteiligung der Ultra-Reichen. Damit st\u00fcnden deutlich mehr Mittel etwa f\u00fcr Klimapolitik, Landesverteidigung, Integration von Migranten, Bildung und Milderung der Armut zur Verf\u00fcgung.<br\/><br\/>In sechs Kapiteln analysiert Detel Geschichte und Gegenwart der \u00f6konomischen Ungleichheit und wie die neoliberale Transformation, unterst\u00fctzt durch eine philosophisch-\u00f6konomische Ideologie, diese Ungleichheit in den letzten Jahrzehnten angetrieben hat. In einem weiteren Teil wird eine F\u00fclle konkreter steuerlicher Ma\u00dfnahmen vorgestellt, die geeignet w\u00e4ren, die \u00f6konomische Ungleichheit in Deutschland erheblich abzumildern. Abschlie\u00dfend werden mit Bezug u. a. auf Axel Honneth, Michael Sandel und Thomas Piketty Entw\u00fcrfe zur nachhaltigen Transformation der neoliberalen Marktwirtschaft skizziert."},"doi":{"46975":"","46991":"10.28937\/978-3-7873-5188-6","46992":""},"isbn":{"46975":"978-3-7873-5187-9","46991":"978-3-7873-5188-6","46992":"978-3-7873-5189-3"},"marketing_short_text":{"46975":"","46991":"","46992":""},"recension_text":{"46975":"<div class=\"reviews\">\r\n<div class=\"review\">Wer sich mit der Faktenresistenz der aktuellen Sozialstaatsdebatte nicht abfinden will, ist mit [diesem] Buch bestens bedient.<\/div>\r\n<div class=\"source\">Joachim Maiworm in BIG Business Crime, Juli 2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">
20541[Detels] an Aristoteles gesch\u00e4rfter Blick verbindet philosophische Reflexion mit konkreten politischen Vorschl\u00e4gen, die sich auf wissenschaftliche Studien st\u00fctzen. Besonders sein Zehn-Punkte-Programm hebt das Buch \u00fcber reine Gesellschaftskritik hinaus. [...] Ein anregender und erhellender Beitrag.<\/div>\r\n<div class=\"source\">Franz Segbers in Publik-Forum 08\/2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Warum drohen so viele Demokratien zu kollabieren? Der Philosoph Wolfgang Detel macht die wachsende Ungleichheit als zentrale Ursache aus. Eine Analyse der neoliberalen Wurzeln der Misere \u2013 und ein Pl\u00e4doyer, durch eine st\u00e4rkere Besteuerung der Ultrareichen Demokratie, Sozialstaat und Zukunftsinvestitionen zu sichern.<\/div>\r\n<div class=\"source\">Platz 6 der Sachbuch-Bestenliste Februar 2026 von <a href=\"https:\/\/bilder.deutschlandfunk.de\/4d\/b8\/db\/7a\/4db8db7a-e5ed-438f-8873-d4bfa1815b5f\/sachbuchbestenliste-die-besten-sachbuecher-im-januar-2026-100.pdf\">Dlf Kultur<\/a>, <a href=\"https:\/\/www.zdf.de\/video\/reportagen\/aspekte-106\/bestenliste-104\">ZDF <\/a>und <a href=\"https:\/\/www.zeit.de\/kultur\/literatur\/2026-01\/sachbuch-bestenliste-literatur-buchempfehlungen-februar-2026\">ZEIT<\/a>\u200b\r\n<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Dieses Buch ist ein gro\u00dfer Wurf. Es bietet einen exzellenten \u00dcberblick \u00fcber die gegenw\u00e4rtige Debatte zu Ursachen und Folgen der Ungleichheit und verbindet philosophische Reflexion mit \u00f6konomischer und politischer Analyse. Das gelingt in einer Sprache, die allgemeinverst\u00e4ndlich bleibt, ohne banal zu werden. Ein Buch f\u00fcr jedermann also.<\/div>\r\n<div class=\"source\">Michael Hesse in der Frankfurter Rundschau am 17.03.2026<\/div>\r\n<\/div>","46991":"<div class=\"reviews\">\r\n<div class=\"review\">Wer sich mit der Faktenresistenz der aktuellen Sozialstaatsdebatte nicht abfinden will, ist mit [diesem] Buch bestens bedient.<\/div>\r\n<div class=\"source\">Joachim Maiworm in BIG Business Crime, Juli 2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">[Detels] an Aristoteles gesch\u00e4rfter Blick verbindet philosophische Reflexion mit konkreten politischen Vorschl\u00e4gen, die sich auf wissenschaftliche Studien st\u00fctzen. Besonders sein Zehn-Punkte-Programm hebt das Buch \u00fcber reine Gesellschaftskritik hinaus. [...] Ein anregender und erhellender Beitrag.<\/div>\r\n<div class=\"source\">Franz Segbers in Publik-Forum 08\/2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Warum drohen so viele Demokratien zu kollabieren? Der Philosoph Wolfgang Detel macht die wachsende Ungleichheit als zentrale Ursache aus. Eine Analyse der neoliberalen Wurzeln der Misere \u2013 und ein Pl\u00e4doyer, durch eine st\u00e4rkere Besteuerung der Ultrareichen Demokratie, Sozialstaat und Zukunftsinvestitionen zu sichern.<\/div>\r\n<div class=\"source\">Platz 6 der Sachbuch-Bestenliste Februar 2026 von <a href=\"https:\/\/bilder.deutschlandfunk.de\/4d\/b8\/db\/7a\/4db8db7a-e5ed-438f-8873-d4bfa1815b5f\/sachbuchbestenliste-die-besten-sachbuecher-im-januar-2026-100.pdf\">Dlf Kultur<\/a>, <a href=\"https:\/\/www.zdf.de\/video\/reportagen\/aspekte-106\/bestenliste-104\">ZDF <\/a>und <a href=\"https:\/\/www.zeit.de\/kultur\/literatur\/2026-01\/sachbuch-bestenliste-literatur-buchempfehlungen-februar-2026\">ZEIT<\/a>\u200b\r\n<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Dieses Buch ist ein gro\u00dfer Wurf. Es bietet einen exzellenten \u00dcberblick \u00fcber die gegenw\u00e4rtige Debatte zu Ursachen und Folgen der Ungleichheit und verbindet philosophische Reflexion mit \u00f6konomischer und politischer Analyse. Das gelingt in einer Sprache, die allgemeinverst\u00e4ndlich bleibt, ohne banal zu werden. Ein Buch f\u00fcr jedermann also.<\/div>\r\n<div class=\"source\">Michael Hesse in der Frankfurter Rundschau am 17.03.2026<\/div>\r\n<\/div>","46992":"<div class=\"reviews\">\r\n<div class=\"review\">Wer sich mit der Faktenresistenz der aktuellen Sozialstaatsdebatte nicht abfinden will, ist mit [diesem] Buch bestens bedient.<\/div>\r\n<div class=\"source\">Joachim Maiworm in BIG Business Crime, Juli 2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">
20541[Detels] an Aristoteles gesch\u00e4rfter Blick verbindet philosophische Reflexion mit konkreten politischen Vorschl\u00e4gen, die sich auf wissenschaftliche Studien st\u00fctzen. Besonders sein Zehn-Punkte-Programm hebt das Buch \u00fcber reine Gesellschaftskritik hinaus. [...] Ein anregender und erhellender Beitrag.<\/div>\r\n<div class=\"source\">Franz Segbers in Publik-Forum 08\/2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Warum drohen so viele Demokratien zu kollabieren? Der Philosoph Wolfgang Detel macht die wachsende Ungleichheit als zentrale Ursache aus. Eine Analyse der neoliberalen Wurzeln der Misere \u2013 und ein Pl\u00e4doyer, durch eine st\u00e4rkere Besteuerung der Ultrareichen Demokratie, Sozialstaat und Zukunftsinvestitionen zu sichern.<\/div>\r\n<div class=\"source\">Platz 6 der Sachbuch-Bestenliste Februar 2026 von <a href=\"https:\/\/bilder.deutschlandfunk.de\/4d\/b8\/db\/7a\/4db8db7a-e5ed-438f-8873-d4bfa1815b5f\/sachbuchbestenliste-die-besten-sachbuecher-im-januar-2026-100.pdf\">Dlf Kultur<\/a>, <a href=\"https:\/\/www.zdf.de\/video\/reportagen\/aspekte-106\/bestenliste-104\">ZDF <\/a>und <a href=\"https:\/\/www.zeit.de\/kultur\/literatur\/2026-01\/sachbuch-bestenliste-literatur-buchempfehlungen-februar-2026\">ZEIT<\/a>\u200b\r\n<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Dieses Buch ist ein gro\u00dfer Wurf. Es bietet einen exzellenten \u00dcberblick \u00fcber die gegenw\u00e4rtige Debatte zu Ursachen und Folgen der Ungleichheit und verbindet philosophische Reflexion mit \u00f6konomischer und politischer Analyse. Das gelingt in einer Sprache, die allgemeinverst\u00e4ndlich bleibt, ohne banal zu werden. Ein Buch f\u00fcr jedermann also.<\/div>\r\n<div class=\"source\">Michael Hesse in der Frankfurter Rundschau am 17.03.2026<\/div>\r\n<\/div>"},"language":{"46975":"","46991":"","46992":""},"cover":{"46975":"Kartoniert","46991":"","46992":""},"pages":{"46975":"412 Seiten","46991":"420 Seiten","46992":"420 Seiten"},"edition":{"46975":"2., um ein Nachwort erg\u00e4nzte Auflage","46991":"2., um ein Nachwort erg\u00e4nzte Auflage","46992":"2., um ein Nachwort erg\u00e4nzte Auflage"},"pod":{"46975":"Nein","46991":"Nein","46992":"Nein"},"copyright_year":{"46975":"","46991":"","46992":""},"vlb_tix_link":{"46975":"https:\/\/neu.vlbtix.de\/products\/9783787351879?type=gtin","46991":"","46992":""},"defaultValues":{"163":"15"}};
20542            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
20543
20544            if (typeof window.amxnotif_wrap_attributes === 'function') {
20545                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
20546                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
20547            }
20548
20549            const configurableOptionsComponent = initConfigurableOptions(
20550                '43703',
20551                config
20552            );
20553            const swatchOptionsComponent = initSwatchOptions(
20554                swatchConfig
20555            );
20556
20557            // DWS - Configurable product preselect start
20558            const confProdPreSelect = () => {
20559                return {
20560                    preselectQuerystringItems() {
20561                        var data = {"id":"46975","output":"15"};
20562                        const urlQueryParams = new URLSearchParams(window.location.search);
20563
20564                                                this.$nextTick(() => {
20565                            setTimeout(() => {
20566                                const rootEl = this.$root || this.$el;
20567                                if (!rootEl) return;
20568
20569                                const applySelection = (attrCode, attrValue) => {
20570                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
20571
20572                                    const attributes = Object.values(this.optionConfig.attributes || {});
20573                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
20574
20575                                    if (targetAttr) {
20576                                        const attrId = String(targetAttr.id);
20577                                        const optionVal = String(attrValue);
20578
20579                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
20580
20581                                        if (inputEl) {
20582                                                                                        inputEl.click();
20583                                            inputEl.dispatchEvent(new Event('change', {
20584                                                bubbles: true
20585                                            }));
20586                                        } else {
20587                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
20588                                            if (selectEl) {
20589                                                selectEl.value = optionVal;
20590                                                selectEl.dispatchEvent(new Event('change', {
20591                                                    bubbles: true
20592                                                }));
20593                                            }
20594                                        }
20595
20596                                                                                this.changeOption(attrId, optionVal, false);
20597                                    }
20598                                };
20599
20600                                                                if (data && typeof data === 'object') {
20601                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
20602                                }
20603
20604                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
20605                                    if (attribute && attribute.code) {
20606                                        let optionValue = urlQueryParams.get(attribute.code);
20607                                        if (optionValue) {
20608                                            let optionId = false;
20609                                            const attributes = Object.values(this.optionConfig.attributes || {});
20610                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
20611
20612                                            let found = false;
20613                                            Object.values(targetAttr.options).map(option => {
20614                                                if (found === false && option.label === optionValue) {
20615                                                    optionId = option.id;
20616                                                    found = true;
20617                                                }
20618                                            });
20619
20620                                            const attrId = String(targetAttr.id);
20621                                            let optionVal = String(optionValue);
20622                                            if (found) {
20623                                                optionVal = String(optionId);
20624                                            }
20625
20626                                            applySelection(attribute.code, optionVal);
20627                                        }
20628                                    }
20629                                });
20630                            }, 100);
20631                        });
20632                    }
20633                }
20634            };
20635            // DWS - Configurable product preselect end
20636
20637            const result = Object.assign(
20638                configurableOptionsComponent,
20639                swatchOptionsComponent, {
20640                    productId: '43703',
20641                    productIndex: 0,
20642                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
20643                    showSwatches: false,
20644                    precalcOptions: {},
20645                    originalInit: configurableOptionsComponent.init,
20646                    init() {
20647                        try {
20648                            this.precalcOptions = {};
20649                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
20650                            this.preselectQuerystringItems();
20651                            if (Array.isArray(attrSource)) {
20652                                attrSource.forEach(attr => {
20653                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
20654                                });
20655                            } else if (attrSource && typeof attrSource === 'object') {
20656                                Object.keys(attrSource).forEach(id => {
20657                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
20658                                });
20659                            }
20660                        } catch (e) {
20661                            console.error('Pre-calc error:', e);
20662                        }
20663
20664                        if (typeof this.originalInit === 'function') {
20665                            this.originalInit();
20666                        }
20667
20668                        try {
20669                            this.initShowSwatchesIntersect();
20670                        } catch (e) {
20671                            console.error('intersect error:', e);
20672                        }
20673                    },
20674
20675                    updateGallery() {
20676                        if (!this.productIndex) return;
20677
20678                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
20679                                method: 'GET',
20680                                headers: {
20681                                    'Content-Type': 'application/json',
20682                                    'X-Requested-With': 'XMLHttpRequest'
20683                                }
20684                            })
20685                            .then(response => response.json())
20686                            .then(data => {
20687                                if (data && data.medium) {
20688                                    window.dispatchEvent(new CustomEvent("update-gallery-43703", {
20689                                        detail: data.medium
20690                                    }));
20691                                }
20692                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
20693                    },
20694
20695
20696                    initShowSwatchesIntersect() {
20697                        const observer = new IntersectionObserver(entries => {
20698                            if (entries[0].isIntersecting) {
20699                                this.showSwatches = true;
20700                                observer.disconnect();
20701                            }
20702                        }, {
20703                            rootMargin: '512px'
20704                        });
20705                        observer.observe(this.$el);
20706                    },
20707                    getOptions(attrId) {
20708                        return this.precalcOptions[attrId] || [];
20709                    },
20710                    getOptionsByAttrId() {
20711                        return this.getOptions(this.$el.dataset.attributeId);
20712                    },
20713                    _getItemId() {
20714                        if (this.item && this.item.id) return this.item.id;
20715                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
20716                    },
20717                    getSwatchOptionHtmlId() {
20718                        const itemId = this._getItemId();
20719                        return itemId ? this.$id(`attribute-option-43703-${itemId}`) : '';
20720                    },
20721                    getSwatchOptionHtmlIdGroup() {
20722                        const itemId = this._getItemId();
20723                        return itemId ? [`attribute-option-43703-${itemId}`] : [];
20724                    },
20725                    getAttributeSwatchData(attributeId) {
20726                        const data = Object.assign({}, this.swatchConfig[attributeId]);
20727                        if (data['additional_data']) {
20728                            try {
20729                                data['details'] = JSON.parse(data['additional_data']);
20730                            } catch (e) {
20731                                data['details'] = {};
20732                            }
20733                        }
20734                        return data;
20735                    },
20736                    getSwatchType(attributeId, optionId) {
20737                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
20738                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
20739                        }
20740                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
20741                            this.swatchConfig[attributeId].details.swatch_input_type :
20742                            "empty";
20743                        if (type === 'visual') {
20744                            const config = this.swatchConfig[attributeId];
20745                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
20746                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
20747                            }
20748                            // Fallback to first option type
20749                            for (const oId in config) {
20750                                if (config[oId] && typeof config[oId].type !== 'undefined') {
20751                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
20752                                }
20753                            }
20754                        }
20755                        return type;
20756                    },
20757                    mapSwatchTypeNumberToTypeCode(type) {
20758                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
20759                    },
20760                    isTextSwatch() {
20761                        const itemId = this._getItemId();
20762                        if (!this.$el || !itemId) return false;
20763                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
20764                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
20765                    },
20766
20767                    getSwatchText() {
20768                        const itemId = this._getItemId();
20769                        if (this.item) return this.item.label || '';
20770                        if (!this.$el || !itemId) return '';
20771                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
20772                        const options = attrId ? this.getOptions(attrId) : [];
20773                        const opt = options.find(o => o.id == itemId);
20774                        return opt ? opt.label : '';
20775                    },
20776                    getSwatchBackgroundStyle() {
20777                        const itemId = this._getItemId();
20778                        if (!this.$el || !itemId) return '';
20779                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
20780                        if (!attrId) return '';
20781                        const type = this.getSwatchType(attrId, itemId);
20782                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
20783                            this.swatchConfig[attrId][itemId] :
20784                            null;
20785                        if (!swatchData) return '';
20786                        if (type === "color") return 'background-color:' + swatchData.value;
20787                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
20788                        return '';
20789                    },
20790                    swatchOptionClasses() {
20791                        const itemId = this._getItemId();
20792                        if (!this.$el || !itemId) return {};
20793                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
20794                        return {
20795                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
20796                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
20797                            'w-6 h-6': !this.isTextSwatch()
20798                        }
20799                    },
20800
20801                    onFocusSwatchItem() {
20802                        const itemId = this._getItemId();
20803                        if (itemId) this.focusedLabel = itemId;
20804                    },
20805                    onChangeOption() {
20806                        const itemId = this._getItemId();
20807                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
20808                        if (attrId && itemId) this.changeOption(attrId, itemId);
20809                    },
20810                    changeOption(attributeId, value) {
20811                        if (value === '') {
20812                            return;
20813                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
20814                        } else {
20815                            this.selectedValues[attributeId] = value;
20816                        }
20817
20818                        this.findSimpleIndex();
20819                        this.findAllowedAttributeOptions();
20820                        this.updatePrices();
20821                        this.updateGallery();
20822
20823                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
20824                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
20825
20826                        const eventDetail = {
20827                            productId: this.productId,
20828                            optionId: attributeId,
20829                            value: value,
20830                            productIndex: this.productIndex || 0,
20831                            selectedValues: this.selectedValues,
20832                            candidates: candidates,
20833                            sourceElement: this.$el
20834                        };
20835
20836                        // Dispatch for Amasty
20837                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
20838                            detail: eventDetail
20839                        }));
20840
20841                        // Dispatch for Hyva listing
20842                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
20843                            detail: eventDetail
20844                        }));
20845                    },
20846
20847
20848                    clearOptionIfActive() {
20849                        const itemId = this._getItemId();
20850                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
20851                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
20852                            this.changeOption(attrId, '');
20853
20854                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
20855                            if (!input && this.$el?.querySelector) {
20856                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
20857                            }
20858                            if (!input && this.$el?.closest) {
20859                                const root = this.$el.closest('[data-product-id]') || this.$el;
20860                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
20861                            }
20862                            if (input) {
20863                                input.checked = false;
20864                            }
20865                        }
20866                    },
20867                    get optionIsEnabled() {
20868                        const itemId = this._getItemId();
20869                        if (!this.$el || !itemId) return true;
20870                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
20871                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
20872                        return !!allowedOptions.find(opt => opt.id == itemId);
20873                    },
20874                    get isSelected() {
20875                        const itemId = this._getItemId();
20876                        if (!this.$el || !itemId) return false;
20877                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
20878                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
20879                    },
20880                    get isSwatchRequired() {
20881                        if (!this.$el) return false;
20882                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
20883                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
20884                    },
20885                    focusedLabel: false,
20886                    activeTooltipItem: false,
20887                    tooltipPositionElement: false,
20888                    setActiveTooltipItem() {
20889                        const itemId = this._getItemId();
20890                        if (!this.$el || !itemId) return;
20891                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
20892                        this.activeTooltipItem = {
20893                            attribute: attrId,
20894                            item: itemId,
20895                            index: 0
20896                        };
20897                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
20898                    },
20899                    unsetActiveTooltipItem() {
20900                        this.activeTooltipItem = false;
20901                    }
20902                },
20903                confProdPreSelect()
20904            );
20905
20906            if (result.optionConfig && result.optionConfig.attributes) {
20907                const attributes = result.optionConfig.attributes;
20908                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
20909                    let source = attributes;
20910                    if (Array.isArray(attributes)) {
20911                        source = {};
20912                        attributes.forEach(attr => {
20913                            if (attr && attr.id) source[attr.id] = attr;
20914                        });
20915                    }
20916                    const values = Object.values(source);
20917                    const wrapper = Object.assign(values, source);
20918                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
20919                        value: true,
20920                        enumerable: false
20921                    });
20922                    result.optionConfig.attributes = wrapper;
20923                }
20924            }
20925
20926            return result;
20927        }
20928
20929        window.addEventListener('alpine:init', () => {
20930            Alpine.data('initConfigurableSwatchOptions_43703', initConfigurableSwatchOptions_43703);
20931        }, {
20932            once: true
20933        });
20934    </script>
20934
20935    
20936    <div x-data="initConfigurableSwatchOptions_43703" x-defer="intersect">
20937        <div class="pagebuilder-home-hidden">
20938                                            
20939                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
20940                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
20941                        <template x-if="showSwatches">
20942                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-43703-163" role="radiogroup" aria-label="Einband">
20943                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
20944                                    <div :data-option-id="item.id" style="display: contents">
20945                                        <div x-id="getSwatchOptionHtmlIdGroup">
20946    <template x-if="optionIsEnabled">
20947        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
20947self="unsetActiveTooltipItem">
20948            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-43703-163">
20949            <div>
20950                <template x-if="isTextSwatch">
20951                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
20952                </template>
20953                <template x-if="!optionIsActive(163, item.id)">
20954                    <div>
20955                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
20956                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
20957                        </svg>
20958                    </div>
20959                </template>
20960            </div>
20961        </label>
20962    </template>
20963</div>                                    </div>
20964                                </template>
20965                            </div>
20966                        </template>
20967                    </div>
20968                </div>
20969                    </div>
20970    </div>
20971            
20972                                                <div class="meta py-4 pagebuilder-home-hidden">
20973                <div x-data="initMarketingShortText_43703()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
20974                    <!-- Marketing short text -->
20975                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
20976                    </div>
20977
20978                    <!-- Short description -->
20979                                                                <div class="short-description">
20980                            In vielen demokratischen Staaten brennt die H&uuml;tte, auch in Deutschland. Rechtspopulismus, Faschismus, alarmierende soziale Ungleichheit, prek&auml;re Arbeitsverh&auml;ltnisse, wachsende Staatsschulden, ...                            <a href="https://meiner.de/fmv_de/schockierende-ungleichheit-17423" class="underline">mehr</a>
20981                        </div>
20982                                    </div>
20983
20984                <!-- Series  -->
20985                                    <div class="mb-1">
20986                        <span class="sr-only">Reihe:</span>
20987                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
20988                            <span>Blaue Reihe</span>
20989                        </a>
20990                                            </div>
20991                
20992                
20993                                                    <div class="mb-1">
20994                        <span x-data="initEditionText_43703()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
20995                            <!-- Marketing short text -->
20996                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 412 Seiten                        </span>
20997                    </div>
20998                
20999                            </div>
21000            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
21001                
21002                <div class="justify-end" x-data="initPriceBox()" @update-prices-43703.window="updatePrice($event.detail);">
21003                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="43703" data-price-box="product-id-43703"><span class="normal-price">
21004    <span x-data x-id="['product\u002Dprice\u002D43703']" class="price-container price-final_price tax weee">
21005            <span class="price-label">Ab</span>
21006                <span class="approx-price">ca. </span>
21007        <span :id="$id('product\u002Dprice\u002D43703')" data-price-amount="21.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">21,99&nbsp;&euro;</span></span>
21008        </span>
21009</span>
21010
21011
21012</div>                </div>
21013
21014                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
21015                                            <div class="open-access-container open-access-container-43703                    flex mt-4 ml-auto sm:mt-0 hidden">
21016                            <div class="text-gray-700">
21017                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
21018                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
21019                                        Kostenlos online lesen                                    </a>
21020                                </button>
21021                            </div>
21022                        </div>
21023                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Schockierende Ungleichheit" aria-label="In den Warenkorb Schockierende Ungleichheit" data-addto="cart">
21024                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
21025  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
210250 014 0z"></path>
21026</svg>
21027                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
21028                                        In den Warenkorb                                    </span>
21029                                </button>
21030                                                                                                                    
21031<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(43703)" aria-label="Zur Wunschliste hinzuf&uuml;gen Schockierende Ungleichheit" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
21032    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
21033  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
21034</svg>
21035</button>
21036                                    </div>
21037            </div>
21038        </div>
21039        
21039<script>
21040            function initMarketingShortText_43703() {
21041                var marketingShortTextConfig = {};
21042                if (typeof window.initConfigurableSwatchOptions_43703 === "function") {
21043                    var fullConfig = window.initConfigurableSwatchOptions_43703().optionConfig
21044                    var marketingShortTextConfig = fullConfig.marketing_short_text;
21045                }
21046                return {
21047                    marketingShortText: '',
21048                    config: marketingShortTextConfig,
21049                    productId: '43703',
21050                    getMarketingShortText(detail) {
21051                        this.marketingShortText = detail.productIndex ?
21052                            this.config[detail.productIndex] :
21053                            null;
21054                    },
21055                    eventListeners: {
21056                        ['@listing-configurable-selection-changed.window'](event) {
21057                            if (this.productId == event.detail.productId) {
21058                                this.getMarketingShortText(event.detail);
21059                            }
21060
21061                        }
21062                    }
21063                }
21064            }
21065
21066            function initEditionText_43703() {
21067                var editionTextConfig = {};
21068                if (typeof window.initConfigurableSwatchOptions_43703 === "function") {
21069                    var fullConfig = window.initConfigurableSwatchOptions_43703().optionConfig
21070                    var editionTextConfig = fullConfig.edition;
21071                }
21072                return {
21073                    editionText: '',
21074                    config: editionTextConfig,
21075                    productId: '43703',
21076                    getEditionText(detail) {
21077                        this.editionText = detail.productIndex ?
21078                            this.config[detail.productIndex] :
21079                            null;
21080                    },
21081                    eventListeners: {
21082                        ['@listing-configurable-selection-changed.window'](event) {
21083                            if (this.productId == event.detail.productId) {
21084                                this.getEditionText(event.detail);
21085                            }
21086
21087                        }
21088                    }
21089                }
21090            }
21091        </script>
21091
21092                    </form>
21093                            
21094    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/4115/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk12295">
21095        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="4115">
21096                                    <a href="https://meiner.de/fmv_de/fakten-und-verunsicherung" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
21097            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-4115.window="$el.src = $event.detail" alt="Fakten und Verunsicherung" title="Fakten und Verunsicherung" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787342891_4.jpg" :style="{
21098                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
21099                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
21100            }">
21101                    </a>
21102        <div class="product-info flex flex-col flex-grow ">
21103                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
21104                                    <div class="mb-2 text-sm text-gray-500 font-medium">
21105                                                                                    <a href="https://meiner.de/fmv_de/person/Carina-Breidenbach-12297/" class="mb-2">
21106                                    Carina Breidenbach                                                                    </a>
21107                                                                    <span>|</span>
21108                                                                                            <a href="https://meiner.de/fmv_de/person/Ines-Ghalleb-12296/" class="mb-2">
21109                                    Ines Ghalleb                                                                    </a>
21110                                                                    <span>|</span>
21111                                                                                            <a href="https://meiner.de/fmv_de/person/Dominik-Pensel-12299/" class="mb-2">
21112                                    Dominik Pensel                                                                    </a>
21113                                                                    <span>|</span>
21114                                                                                            <a href="https://meiner.de/fmv_de/person/Katharina-Simon-12300/" class="mb-2">
21115                                    Katharina Simon                                                                    </a>
21116                                                                    <span>|</span>
21117                                                                                            <a href="https://meiner.de/fmv_de/person/Florian-Telsnig-12301/" class="mb-2">
21118                                    Florian Telsnig                                                                    </a>
21119                                                                    <span>|</span>
21120                                                                                            <a href="https://meiner.de/fmv_de/person/Martin-Wittmann-12298/" class="mb-2">
21121                                    Martin Wittmann                                                                            (Hrsg.)
21122                                                                    </a>
21123                                                                                                                                    </div>
21124                                <a class="product-item-link" href="https://meiner.de/fmv_de/fakten-und-verunsicherung">
21125                    Fakten und Verunsicherung                </a>
21126                            </div>
21127
21128            <div x-data="initEditionText_4115()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
21129                <!-- Marketing short text -->
21130                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
21131                </div>
21132            </div>
21133
21134                            <div class="py-1 grid  mb-4 ">
21135                    
21136                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":4115,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":4115,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"8065":"1","8
21136078":"1","8109":"1"},"childProductsAlertStatus":{"8065":"0","8078":"0","8109":"0"},"indexMapping":{"163:15":8065,"163:8":8078,"163:9":8109},"availabilityMessages":{"8065":"Lieferbar innerhalb von 3-5 Tagen","8078":"Download sofort  verf\u00fcgbar","8109":"Download sofort  verf\u00fcgbar"},"openAccess":{"4115":{"status":0},"8065":{"status":0},"8078":{"status":0},"8109":{"status":0}}},"availabilityMessages":{"8065":"Lieferbar innerhalb von 3-5 Tagen","8078":"Download sofort  verf\u00fcgbar","8109":"Download sofort  verf\u00fcgbar"},"openAccess":{"4115":{"status":0},"8065":{"status":0},"8078":{"status":0},"8109":{"status":0}}}'>
21137        <template x-if="containerVisible">
21138                            <!-- Popup Trigger -->
21139                <div>
21140                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
21141                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
21142                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
21143  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
21144<title>bell</title></svg>
21145</span>
21146                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
21147
21148                    <!-- Popup Modal -->
21149                    <template x-if="showModal">
21150                        <template x-teleport=".page-wrapper">
21151                            <div x-cloak class="fixed inset-0 flex items-center justify-center
21152                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
21153                                <div class="relative bg-white rounded-lg shadow-xl
21154                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
21155                                    <div class="p-6">
21156                                        <!-- Subscription Form for Popup -->
21157                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
21158                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
21159                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
21160                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
21161
21162                                            <div class="flex flex-col gap-3">
21163                                                <div class="flex-grow grow">
21164                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
21165                                                        shadow-xs focus:outline-none focus:outline-hidden
21166                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
21167                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
21168                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
21169                                                </div>
21170                                                <input type="hidden" name="product_id" :value="currentProductId">
21171                                                <input type="hidden" name="type" value="email">
21172
21173                                                
21174                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
21175
21176                                                <div class="amxnotif_guest_action">
21177                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
21178                                                        rounded-md focus:outline-none
21179                                                        focus:outline-hidden focu
21179s:ring-2
21180                                                        focus:ring-offset-2 disabled:opacity-50
21181                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
21182                                                        Benachrichtigen                                                    </button>
21183                                                </div>
21184                                            </div>
21185
21186                                                                                            <div class="flex items-start pt-2">
21187                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
21188                                                        text-blue-600 border-gray-300 rounded-sm">
21189                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
21190                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
21191                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
21192                                                </div>
21193                                                                                    </form>
21194                                    </div>
21195
21196                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
21197                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
21198                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
21199  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
21200<title>x</title></svg>
21201                                    </button>
21202                                </div>
21203                            </div>
21204                        </template>
21205                    </template>
21206                </div>
21207                    </template>
21208    </div>
21209
21210<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_4115" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":4115,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"8065":"1","8078":"1","8109":"1"},"childProductsAlertStatus":{"8065":"0","8078":"0","8109":"0"},"indexMapping":"{\u0022163:15\u0022:8065,\u0022163:8\u0022:8078,\u0022163:9\u0022:8109}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":4115,"availabilityMessages":{"8065":"Lieferbar innerhalb von 3-5 Tagen","8078":"Download sofort  verf\u00fcgbar","8109":"Download sofort  verf\u00fcgbar"},"openAccess":{"4115":{"status":0},"8065":{"status":0},"8078":{"status":0},"8109":{"status":0}}}'>
21211    
21212    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
21213        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
21214        <span x-html="optionsLabelText"></span>
21215    </p>
21216</div>                </div>
21217            
21218                                
21218<script>
21219        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
21220            try {
21221                const attributes = (config && config.attributes) ? config.attributes : null;
21222                if (!attributes) return [];
21223                let attr = null;
21224                if (Array.isArray(attributes)) {
21225                    for (let i = 0; i < attributes.length; i++) {
21226                        const a = attributes[i];
21227                        if (a && a.id == attrId) {
21228                            attr = a;
21229                            break;
21230                        }
21231                    }
21232                } else {
21233                    attr = attributes[attrId];
21234                }
21235                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
21236            } catch (e) {
21237                return [];
21238            }
21239        };
21240
21241        function initConfigurableSwatchOptions_4115() {
21242            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["8065"]},{"id":"8","label":"PDF","products":["8078"]},{"id":"9","label":"EPUB","products":["8109"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"8065":{"baseOldPrice":{"amount":25.140185915888},"oldPrice":{"amount":26.9},"basePrice":{"amount":25.140185915888},"finalPrice":{"amount":26.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"8078":{"baseOldPrice":{"amount":18.682241990654},"oldPrice":{"amount":19.99},"basePrice":{"amount":18.682241990654},"finalPrice":{"amount":19.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"8109":{"baseOldPrice":{"amount":18.682241990654},"oldPrice":{"amount":19.99},"basePrice":{"amount":18.682241990654},"finalPrice":{"amount":19.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":18.682241990654},"oldPrice":{"amount":19.99},"basePrice":{"amount":18.682241990654},"finalPrice":{"amount":19.99},"isApproxPrice":null},"productId":"4115","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"8065":{"163":"15"},"8078":{"163":"8"},"8109":{"163":"9"}},"salable":{"163":{"15":["8065"],"8":["8078"],"9":["8109"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"8065":"004054","8078":"004055","8109":"004289"},"output":{"8065":"Kartoniert","8078":"PDF","8109":"EPUB"},"original_name":{"8065":"","8078":"","8109":""},"openaccess_license_link":{"8065":"","8078":"","8109":""},"openaccess_license_name":{"8065":"","8078":"","8109":""},"openaccess_external_link":{"8065":"","8078":"","8109":""},"gpsr_safety_info":{"8065":"","8078":"","8109":""},"description":{"8065":"Alternative Facts, Post-Truth, Fake News \u2013 kaum etwas erregt und spaltet den \u00f6ffentlichen Diskurs aktuell derart wie die Auseinandersetzungen \u00fcber die Bedeutung von Fakten. Die globalen Krisen der j\u00fcngsten Zeit wie der Klimawandel, die Covid-19-Pandemie und der russische Angriffskrieg werden von einem diffusen Gef\u00fchl der Verunsicherung begleitet, das auf den prek\u00e4ren Status von Wahrheit, Wirklichkeit und Faktizit\u00e4t verweist. In Diskursen der Gegenwart stehen diese wie selten zuvor zur Debatte und verlangen nach einer Neuverhandlung. Ausgehend von diesem Befund zielt das Buch darauf, in \u00dcberschreitung der vorherrschenden bin\u00e4ren Unterscheidung zwischen Fakten und klar davon abzugrenzenden Fiktionen oder L\u00fcgen zu einer solchen Neuordnung beizutragen. Die versammelten Essays widmen sich gesellschaftlichen Ph\u00e4nomenen wie Hatespeech, politischer L\u00fcge, Propaganda, Halbwahrheiten oder Verschw\u00f6rungstheorien, beschreiben historische, epistemologische und sprachtheoretische Zusammenh\u00e4nge und analysieren aktuelle politische Fallbeispiele sowie kulturelle Reflexionen in Fernsehserien, Filmen und Literatur.<br\/><br\/>In diesem Band begegnen sich kultur- und literaturwissenschaftliche, soziologische, literarische wie philosophische Stimmen und Perspektiven. Mit Beitr\u00e4gen von Dirk Baecker, Klaus Benesch, Elisabeth Bronfen, Chiara Cappelletto, Oswald Egger, Nicola Gess und Carolin Amlinger, Jocelyn Holland, Gertrud Koch, Kathrin R\u00f6ggla, Marc R\u00f6lli, Sylvia Sasse und Sandro Zanetti, Thomas Schestag, Marcus Steinweg, Peter Waterhouse und Slavoj \u017di\u017eek.","8078":"Alternative Facts, Post-Truth, Fake News \u2013 kaum etwas erregt und spaltet den \u00f6ffentlichen Diskurs aktuell derart wie die Auseinandersetzungen \u00fcber die Bedeutung von Fakten. Die globalen Krisen der j\u00fcngsten Zeit wie der Klimawandel, die Covid-19-Pandemie und der russische Angriffskrieg werden von einem diffusen Gef\u00fchl der Verunsicherung begleitet, das auf den prek\u00e4ren Status von Wahrheit, Wirklic
21242hkeit und Faktizit\u00e4t verweist. In Diskursen der Gegenwart stehen diese wie selten zuvor zur Debatte und verlangen nach einer Neuverhandlung. Ausgehend von diesem Befund zielt das Buch darauf, in \u00dcberschreitung der vorherrschenden bin\u00e4ren Unterscheidung zwischen Fakten und klar davon abzugrenzenden Fiktionen oder L\u00fcgen zu einer solchen Neuordnung beizutragen. Die versammelten Essays widmen sich gesellschaftlichen Ph\u00e4nomenen wie Hatespeech, politischer L\u00fcge, Propaganda, Halbwahrheiten oder Verschw\u00f6rungstheorien, beschreiben historische, epistemologische und sprachtheoretische Zusammenh\u00e4nge und analysieren aktuelle politische Fallbeispiele sowie kulturelle Reflexionen in Fernsehserien, Filmen und Literatur.<br\/><br\/>In diesem Band begegnen sich kultur- und literaturwissenschaftliche, soziologische, literarische wie philosophische Stimmen und Perspektiven. Mit Beitr\u00e4gen von Dirk Baecker, Klaus Benesch, Elisabeth Bronfen, Chiara Cappelletto, Oswald Egger, Nicola Gess und Carolin Amlinger, Jocelyn Holland, Gertrud Koch, Kathrin R\u00f6ggla, Marc R\u00f6lli, Sylvia Sasse und Sandro Zanetti, Thomas Schestag, Marcus Steinweg, Peter Waterhouse und Slavoj \u017di\u017eek.","8109":"Alternative Facts, Post-Truth, Fake News \u2013 kaum etwas erregt und spaltet den \u00f6ffentlichen Diskurs aktuell derart wie die Auseinandersetzungen \u00fcber die Bedeutung von Fakten. Die globalen Krisen der j\u00fcngsten Zeit wie der Klimawandel, die Covid-19-Pandemie und der russische Angriffskrieg werden von einem diffusen Gef\u00fchl der Verunsicherung begleitet, das auf den prek\u00e4ren Status von Wahrheit, Wirklichkeit und Faktizit\u00e4t verweist. In Diskursen der Gegenwart stehen diese wie selten zuvor zur Debatte und verlangen nach einer Neuverhandlung. Ausgehend von diesem Befund zielt das Buch darauf, in \u00dcberschreitung der vorherrschenden bin\u00e4ren Unterscheidung zwischen Fakten und klar davon abzugrenzenden Fiktionen oder L\u00fcgen zu einer solchen Neuordnung beizutragen. Die versammelten Essays widmen sich gesellschaftlichen Ph\u00e4nomenen wie Hatespeech, politischer L\u00fcge, Propaganda, Halbwahrheiten oder Verschw\u00f6rungstheorien, beschreiben historische, epistemologische und sprachtheoretische Zusammenh\u00e4nge und analysieren aktuelle politische Fallbeispiele sowie kulturelle Reflexionen in Fernsehserien, Filmen und Literatur.<br\/><br\/>In diesem Band begegnen sich kultur- und literaturwissenschaftliche, soziologische, literarische wie philosophische Stimmen und Perspektiven. Mit Beitr\u00e4gen von Dirk Baecker, Klaus Benesch, Elisabeth Bronfen, Chiara Cappelletto, Oswald Egger, Nicola Gess und Carolin Amlinger, Jocelyn Holland, Gertrud Koch, Kathrin R\u00f6ggla, Marc R\u00f6lli, Sylvia Sasse und Sandro Zanetti, Thomas Schestag, Marcus Steinweg, Peter Waterhouse und Slavoj \u017di\u017eek."},"doi":{"8065":"","8078":"10.28937\/978-3-7873-4055-2","8109":""},"isbn":{"8065":"978-3-7873-4054-5","8078":"978-3-7873-4055-2","8109":"978-3-7873-4289-1"},"marketing_short_text":{"8065":"","8078":"","8109":""},"recension_text":{"8065":"","8078":"","8109":""},"language":{"8065":"","8078":"","8109":""},"cover":{"8065":"Kartoniert","8078":"","8109":""},"pages":{"8065":"385 Seiten","8078":"386 Seiten","8109":"385 Seiten"},"edition":{"8065":"","8078":"Unver\u00e4ndertes eBook der 1. Auflage von 2022","8109":"Unver\u00e4ndertes EPUB der 1. Auflage von 2022"},"pod":{"8065":"Nein","8078":"Nein","8109":"Nein"},"copyright_year":{"8065":"","8078":"","8109":""},"vlb_tix_link":{"8065":"https:\/\/neu.vlbtix.de\/products\/9783787340545?type=gtin","8078":"","8109":""},"defaultValues":{"163":"15"}};
21243            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
21244
21245            if (typeof window.amxnotif_wrap_attributes === 'function') {
21246                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
21247                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
21248            }
21249
21250            const configurableOptionsComponent = initConfigurableOptions(
21251                '4115',
21252                config
21253            );
21254            const swatchOptionsComponent = initSwatchOptions(
21255                swatchConfig
21256            );
21257
21258            // DWS - Configurable product preselect start
21259            const confProdPreSelect = () => {
21260                return {
21261                    preselectQuerystringItems() {
21262                        var data = {"id":"8065","output":"15"};
21263                        const urlQueryParams = new URLSearchParams(window.location.search);
21264
21265                                                this.$nextTick(() => {
21266                            setTimeout(() => {
21267                                const rootEl = this.$root || this.$el;
21268                                if (!rootEl) return;
21269
21270                                const applySelection = (attrCode, attrValue) => {
21271                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
21272
21273                                    const attributes = Object.values(this.optionConfig.attributes || {});
21274                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
21275
21276                                    if (targetAttr) {
21277                                        const attrId = String(targetAttr.id);
21278                                        const optionVal = String(attrValue);
21279
21280                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
21281
21282                                        if (inputEl) {
21283                                                                                        inputEl.click();
21284                                            inputEl.dispatchEvent(new Event('change', {
21285                                                bubbles: true
21286                                            }));
21287                                        } else {
21288                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
21289                                            if (selectEl) {
21290                                                selectEl.value = optionVal;
21291                                                selectEl.dispatchEvent(new Event('change', {
21292                                                    bubbles: true
21293                                                }));
21294                                            }
21295                                        }
21296
21297                                                                                this.changeOption(attrId, optionVal, false);
21298                                    }
21299                                };
21300
21301                                                                if (data && typeof data === 'object') {
21302                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
21303                                }
21304
21305                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
21306                                    if (attribute && attribute.code) {
21307                                        let optionValue = urlQueryParams.get(attribute.code);
21308                                        if (optionValue) {
21309                                            let optionId = false;
21310                                            const attributes = Object.values(this.optionConfig.attributes || {});
21311                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
21312
21313                                            let found = false;
21314                                            Object.values(targetAttr.options).map(option => {
21315                                                if (found === false && option.label === optionValue) {
21316                                                    optionId = option.id;
21317                                                    found = true;
21318                                                }
21319                                            });
21320
21321                                            const attrId = String(targetAttr.id);
21322                                            let optionVal = String(optionValue);
21323                                            if (found) {
21324                                                optionVal = String(optionId);
21325                                            }
21326
21327                                            applySelection(attribute.code, optionVal);
21328                                        }
21329                                    }
21330                                });
21331                            }, 100);
21332                        });
21333                    }
21334                }
21335            };
21336            // DWS - Configurable product preselect end
21337
21338            const result = Object.assign(
21339                configurableOptionsComponent,
21340                swatchOptionsComponent, {
21341                    productId: '4115',
21342                    productIndex: 0,
21343                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
21344                    showSwatches: false,
21345                    precalcOptions: {},
21346                    originalInit: configurableOptionsComponent.init,
21347                    init() {
21348                        try {
21349                            this.precalcOptions = {};
21350                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
21351                            this.preselectQuerystringItems();
21352                            if (Array.isArray(attrSource)) {
21353                                attrSource.forEach(attr => {
21354                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
21355                                });
21356                            } else if (attrSource && typeof attrSource === 'object') {
21357                                Object.keys(attrSource).forEach(id => {
21358                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
21359                                });
21360                            }
21361                        } catch (e) {
21362                            console.error('Pre-calc error:', e);
21363                        }
21364
21365                        if (typeof this.originalInit === 'function') {
21366                            this.originalInit();
21367                        }
21368
21369                        try {
21370                            this.initShowSwatchesIntersect();
21371                        } catch (e) {
21372                            console.error('intersect error:', e);
21373                        }
21374                    },
21375
21376                    updateGallery() {
21377                        if (!this.productIndex) return;
21378
21379                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
21380                                method: 'GET',
21381                                headers: {
21382                                    'Content-Type': 'application/json',
21383                                    'X-Requested-With': 'XMLHttpRequest'
21384                                }
21385                            })
21386                            .then(response => response.json())
21387                            .then(data => {
21388                                if (data && data.medium) {
21389                                    window.dispatchEvent(new CustomEvent("update-gallery-4115", {
21390                                        detail: data.medium
21391                                    }));
21392                                }
21393                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
21394                    },
21395
21396
21397                    initShowSwatchesIntersect() {
21398                        const observer = new IntersectionObserver(entries => {
21399                            if (entries[0].isIntersecting) {
21400                                this.showSwatches = true;
21401                                observer.disconnect();
21402                            }
21403                        }, {
21404                            rootMargin: '512px'
21405                        });
21406                        observer.observe(this.$el);
21407                    },
21408                    getOptions(attrId) {
21409                        return this.precalcOptions[attrId] || [];
21410                    },
21411                    getOptionsByAttrId() {
21412                        return this.getOptions(this.$el.dataset.attributeId);
21413                    },
21414                    _getItemId() {
21415                        if (this.item && this.item.id) return this.item.id;
21416                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
21417                    },
21418                    getSwatchOptionHtmlId() {
21419                        const itemId = this._getItemId();
21420                        return itemId ? this.$id(`attribute-option-4115-${itemId}`) : '';
21421                    },
21422                    getSwatchOptionHtmlIdGroup() {
21423                        const itemId = this._getItemId();
21424                        return itemId ? [`attribute-option-4115-${itemId}`] : [];
21425                    },
21426                    getAttributeSwatchData(attributeId) {
21427                        const data = Object.assign({}, this.swatchConfig[attributeId]);
21428                        if (data['additional_data']) {
21429                            try {
21430                                data['details'] = JSON.parse(data['additional_data']);
21431                            } catch (e) {
21432                                data['details'] = {};
21433                            }
21434                        }
21435                        return data;
21436                    },
21437                    getSwatchType(attributeId, optionId) {
21438                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
21439                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
21440                        }
21441                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
21442                            this.swatchConfig[attributeId].details.swatch_input_type :
21443                            "empty";
21444                        if (type === 'visual') {
21445                            const config = this.swatchConfig[attributeId];
21446                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
21447                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
21448                            }
21449                            // Fallback to first option type
21450                            for (const oId in config) {
21451                                if (config[oId] && typeof config[oId].type !== 'undefined') {
21452                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
21453                                }
21454                            }
21455                        }
21456                        return type;
21457                    },
21458                    mapSwatchTypeNumberToTypeCode(type) {
21459                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
21460                    },
21461                    isTextSwatch() {
21462                        const itemId = this._getItemId();
21463                        if (!this.$el || !itemId) return false;
21464                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
21465                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
21466                    },
21467
21468                    getSwatchText() {
21469                        const itemId = this._getItemId();
21470                        if (this.item) return this.item.label || '';
21471                        if (!this.$el || !itemId) return '';
21472                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
21473                        const options = attrId ? this.getOptions(attrId) : [];
21474                        const opt = options.find(o => o.id == itemId);
21475                        return opt ? opt.label : '';
21476                    },
21477                    getSwatchBackgroundStyle() {
21478                        const itemId = this._getItemId();
21479                        if (!this.$el || !itemId) return '';
21480                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
21481                        if (!attrId) return '';
21482                        const type = this.getSwatchType(attrId, itemId);
21483                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
21484                            this.swatchConfig[attrId][itemId] :
21485                            null;
21486                        if (!swatchData) return '';
21487                        if (type === "color") return 'background-color:' + swatchData.value;
21488                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
21489                        return '';
21490                    },
21491                    swatchOptionClasses() {
21492                        const itemId = this._getItemId();
21493                        if (!this.$el || !itemId) return {};
21494                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
21495                        return {
21496                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
21497                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
21498                            'w-6 h-6': !this.isTextSwatch()
21499                        }
21500                    },
21501
21502                    onFocusSwatchItem() {
21503                        const itemId = this._getItemId();
21504                        if (itemId) this.focusedLabel = itemId;
21505                    },
21506                    onChangeOption() {
21507                        const itemId = this._getItemId();
21508                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
21509                        if (attrId && itemId) this.changeOption(attrId, itemId);
21510                    },
21511                    changeOption(attributeId, value) {
21512                        if (value === '') {
21513                            return;
21514                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
21515                        } else {
21516                            this.selectedValues[attributeId] = value;
21517                        }
21518
21519                        this.findSimpleIndex();
21520                        this.findAllowedAttributeOptions();
21521                        this.updatePrices();
21522                        this.updateGallery();
21523
21524                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
21525                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
21526
21527                        const eventDetail = {
21528                            productId: this.productId,
21529                            optionId: attributeId,
21530                            value: value,
21531                            productIndex: this.productIndex || 0,
21532                            selectedValues: this.selectedValues,
21533                            candidates: candidates,
21534                            sourceElement: this.$el
21535                        };
21536
21537                        // Dispatch for Amasty
21538                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
21539                            detail: eventDetail
21540                        }));
21541
21542                        // Dispatch for Hyva listing
21543                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
21544                            detail: eventDetail
21545                        }));
21546                    },
21547
21548
21549                    clearOptionIfActive() {
21550                        const itemId = this._getItemId();
21551                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
21552                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
21553                            this.changeOption(attrId, '');
21554
21555                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
21556                            if (!input && this.$el?.querySelector) {
21557                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
21558                            }
21559                            if (!input && this.$el?.closest) {
21560                                const root = this.$el.closest('[data-product-id]') || this.$el;
21561                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
21562                            }
21563                            if (input) {
21564                                input.checked = false;
21565                            }
21566                        }
21567                    },
21568                    get optionIsEnabled() {
21569                        const itemId = this._getItemId();
21570                        if (!this.$el || !itemId) return true;
21571                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
21572                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
21573                        return !!allowedOptions.find(opt => opt.id == itemId);
21574                    },
21575                    get isSelected() {
21576                        const itemId = this._getItemId();
21577                        if (!this.$el || !itemId) return false;
21578                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
21579                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
21580                    },
21581                    get isSwatchRequired() {
21582                        if (!this.$el) return false;
21583                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
21584                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
21585                    },
21586                    focusedLabel: false,
21587                    activeTooltipItem: false,
21588                    tooltipPositionElement: false,
21589                    setActiveTooltipItem() {
21590                        const itemId = this._getItemId();
21591                        if (!this.$el || !itemId) return;
21592                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
21593                        this.activeTooltipItem = {
21594                            attribute: attrId,
21595                            item: itemId,
21596                            index: 0
21597                        };
21598                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
21599                    },
21600                    unsetActiveTooltipItem() {
21601                        this.activeTooltipItem = false;
21602                    }
21603                },
21604                confProdPreSelect()
21605            );
21606
21607            if (result.optionConfig && result.optionConfig.attributes) {
21608                const attributes = result.optionConfig.attributes;
21609                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
21610                    let source = attributes;
21611                    if (Array.isArray(attributes)) {
21612                        source = {};
21613                        attributes.forEach(attr => {
21614                            if (attr && attr.id) source[attr.id] = attr;
21615                        });
21616                    }
21617                    const values = Object.values(source);
21618                    const wrapper = Object.assign(values, source);
21619                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
21620                        value: true,
21621                        enumerable: false
21622                    });
21623                    result.optionConfig.attributes = wrapper;
21624                }
21625            }
21626
21627            return result;
21628        }
21629
21630        window.addEventListener('alpine:init', () => {
21631            Alpine.data('initConfigurableSwatchOptions_4115', initConfigurableSwatchOptions_4115);
21632        }, {
21633            once: true
21634        });
21635    </script>
21635
21636    
21637    <div x-data="initConfigurableSwatchOptions_4115" x-defer="intersect">
21638        <div class="pagebuilder-home-hidden">
21639                                            
21640                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
21641                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
21642                        <template x-if="showSwatches">
21643                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-4115-163" role="radiogroup" aria-label="Einband">
21644                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
21645                                    <div :data-option-id="item.id" style="display: contents">
21646                                        <div x-id="getSwatchOptionHtmlIdGroup">
21647    <template x-if="optionIsEnabled">
21648        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
21648self="unsetActiveTooltipItem">
21649            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-4115-163">
21650            <div>
21651                <template x-if="isTextSwatch">
21652                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
21653                </template>
21654                <template x-if="!optionIsActive(163, item.id)">
21655                    <div>
21656                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
21657                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
21658                        </svg>
21659                    </div>
21660                </template>
21661            </div>
21662        </label>
21663    </template>
21664</div>                                    </div>
21665                                </template>
21666                            </div>
21667                        </template>
21668                    </div>
21669                </div>
21670                    </div>
21671    </div>
21672            
21673                                                <div class="meta py-4 pagebuilder-home-hidden">
21674                <div x-data="initMarketingShortText_4115()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
21675                    <!-- Marketing short text -->
21676                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
21677                    </div>
21678
21679                    <!-- Short description -->
21680                                                                <div class="short-description">
21681                            Alternative Facts, Post-Truth, Fake News &ndash; kaum etwas erregt und spaltet den &ouml;ffentlichen Diskurs aktuell derart wie die Auseinandersetzungen &uuml;ber die Bedeutung von Fakten. Die globalen Krisen ...                            <a href="https://meiner.de/fmv_de/fakten-und-verunsicherung" class="underline">mehr</a>
21682                        </div>
21683                                    </div>
21684
21685                <!-- Series  -->
21686                                    <div class="mb-1">
21687                        <span class="sr-only">Reihe:</span>
21688                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
21689                            <span>Blaue Reihe</span>
21690                        </a>
21691                                            </div>
21692                
21693                
21694                                                    <div class="mb-1">
21695                        <span x-data="initEditionText_4115()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
21696                            <!-- Marketing short text -->
21697                            <span class="edition-text" x-html="editionText"></span>&nbsp;2022, 385 Seiten                        </span>
21698                    </div>
21699                
21700                            </div>
21701            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
21702                
21703                <div class="justify-end" x-data="initPriceBox()" @update-prices-4115.window="updatePrice($event.detail);">
21704                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="4115" data-price-box="product-id-4115"><span class="normal-price">
21705    <span x-data x-id="['product\u002Dprice\u002D4115']" class="price-container price-final_price tax weee">
21706            <span class="price-label">Ab</span>
21707                <span class="approx-price">ca. </span>
21708        <span :id="$id('product\u002Dprice\u002D4115')" data-price-amount="19.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">19,99&nbsp;&euro;</span></span>
21709        </span>
21710</span>
21711
21712
21713</div>                </div>
21714
21715                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
21716                                            <div class="open-access-container open-access-container-4115                    flex mt-4 ml-auto sm:mt-0 hidden">
21717                            <div class="text-gray-700">
21718                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
21719                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
21720                                        Kostenlos online lesen                                    </a>
21721                                </button>
21722                            </div>
21723                        </div>
21724                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Fakten und Verunsicherung" aria-label="In den Warenkorb Fakten und Verunsicherung" data-addto="cart">
21725                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
21726  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
217260 014 0z"></path>
21727</svg>
21728                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
21729                                        In den Warenkorb                                    </span>
21730                                </button>
21731                                                                                                                    
21732<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(4115)" aria-label="Zur Wunschliste hinzuf&uuml;gen Fakten und Verunsicherung" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
21733    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
21734  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
21735</svg>
21736</button>
21737                                    </div>
21738            </div>
21739        </div>
21740        
21740<script>
21741            function initMarketingShortText_4115() {
21742                var marketingShortTextConfig = {};
21743                if (typeof window.initConfigurableSwatchOptions_4115 === "function") {
21744                    var fullConfig = window.initConfigurableSwatchOptions_4115().optionConfig
21745                    var marketingShortTextConfig = fullConfig.marketing_short_text;
21746                }
21747                return {
21748                    marketingShortText: '',
21749                    config: marketingShortTextConfig,
21750                    productId: '4115',
21751                    getMarketingShortText(detail) {
21752                        this.marketingShortText = detail.productIndex ?
21753                            this.config[detail.productIndex] :
21754                            null;
21755                    },
21756                    eventListeners: {
21757                        ['@listing-configurable-selection-changed.window'](event) {
21758                            if (this.productId == event.detail.productId) {
21759                                this.getMarketingShortText(event.detail);
21760                            }
21761
21762                        }
21763                    }
21764                }
21765            }
21766
21767            function initEditionText_4115() {
21768                var editionTextConfig = {};
21769                if (typeof window.initConfigurableSwatchOptions_4115 === "function") {
21770                    var fullConfig = window.initConfigurableSwatchOptions_4115().optionConfig
21771                    var editionTextConfig = fullConfig.edition;
21772                }
21773                return {
21774                    editionText: '',
21775                    config: editionTextConfig,
21776                    productId: '4115',
21777                    getEditionText(detail) {
21778                        this.editionText = detail.productIndex ?
21779                            this.config[detail.productIndex] :
21780                            null;
21781                    },
21782                    eventListeners: {
21783                        ['@listing-configurable-selection-changed.window'](event) {
21784                            if (this.productId == event.detail.productId) {
21785                                this.getEditionText(event.detail);
21786                            }
21787
21788                        }
21789                    }
21790                }
21791            }
21792        </script>
21792
21793                    </form>
21794                            
21795    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/4068/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk10167">
21796        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="4068">
21797                                    <a href="https://meiner.de/fmv_de/transparenz" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
21798            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-4068.window="$el.src = $event.detail" alt="Transparenz" title="Transparenz" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787341375_4.jpg" :style="{
21799                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
21800                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
21801            }">
21802                    </a>
21803        <div class="product-info flex flex-col flex-grow ">
21804                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
21805                                    <div class="mb-2 text-sm text-gray-500 font-medium">
21806                                                                                    <a href="https://meiner.de/fmv_de/person/Lea-Watzinger-10168/" class="mb-2">
21807                                    Lea Watzinger                                                                    </a>
21808                                                                                                                                    </div>
21809                                <a class="product-item-link" href="https://meiner.de/fmv_de/transparenz">
21810                    Transparenz                </a>
21811                            </div>
21812
21813            <div x-data="initEditionText_4068()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
21814                <!-- Marketing short text -->
21815                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
21816                </div>
21817            </div>
21818
21819                            <div class="py-1 grid  mb-4 ">
21820                    
21821                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":4068,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":4068,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"7947":"1","7948":"1","7949":"1"},"childProductsAlertStatus":{"7947":"0","7948":"0","7949":"0"},"indexMapping":{"163:15":7947,"163:8":7948,"163:9":7949},"availabilityMessages":{"7947":"Lieferbar innerhalb von 3-5 Tagen","7948":"Download sofort  verf\u00fcgbar","7949":"Download sofort  verf\u00fcgbar"},"openAccess":{"4068":{"status":0},"7947":{"status":0},"7948":{"status":0},"7949":{"status":0}}},"availabilityMessages":{"7947":"Lieferbar innerhalb von 3-5 Tagen","7948":"Download sofort  verf\u00fcgbar","7949":"Download sofort  verf\u00fcgbar"},"openAccess":{"4068":{"status":0},"7947":{"status":0},"7948":{"status":0},"7949":{"status":0}}}'>
21822        <template x-if="containerVisible">
21823                            <!-- Popup Trigger -->
21824                <div>
21825                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
21826                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
21827                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
21828  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
21829<title>bell</title></svg>
21830</span>
21831                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
21832
21833                    <!-- Popup Modal -->
21834                    <template x-if="showModal">
21835                        <template x-teleport=".page-wrapper">
21836                            <div x-cloak class="fixed inset-0 flex items-center justify-center
21837                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
21838                                <div class="relative bg-white rounded-lg shadow-xl
21839                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
21840                                    <div class="p-6">
21841                                        <!-- Subscription Form for Popup -->
21842                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
21843                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
21844                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
21845                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
21846
21847                                            <div class="flex flex-col gap-3">
21848                                                <div class="flex-grow grow">
21849                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
21850                                                        shadow-xs focus:outline-none focus:outline-hidden
21851                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
21852                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
21853                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
21854                                                </div>
21855                                                <input type="hidden" name="product_id" :value="currentProductId">
21856                                                <input type="hidden" name="type" value="email">
21857
21858                                                
21859                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
21860
21861                                                <div class="amxnotif_guest_action">
21862                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
21863                                                        rounded-md focus:outline-none
21864                                                        focus:outline-hidden focus:ring-2
21865                                                        focus:ring-offset-2 disabled:opacity-50
21866                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
21867                                                        Benachrichtigen                                                    </button>
21868                                                </div>
21869                                            </div>
21870
21871                                                                                            <div class="flex items-start pt-2">
21872                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
21873                                                        text-blue-600 border-gray-300 rounded-sm">
21874                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
21875                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
21876                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
21877                                                </div>
21878                                                                                    </form>
21879                                    </div>
21880
21881                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
21882                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
21883                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
21884  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
21885<title>x</title></svg>
21886                                    </button>
21887                                </div>
21888                            </div>
21889                        </template>
21890                    </template>
21891                </div>
21892                    </template>
21893    </div>
21894
21895<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_4068" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":4068,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"7947":"1","7948":"1","7949":"1"},"childProductsAlertStatus":{"7947":"0","7948":"0","7949":"0"},"indexMapping":"{\u0022163:15\u0022:7947,\u0022163:8\u0022:7948,\u0022163:9\u0022:7949}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":4068,"availabilityMessages":{"7947":"Lieferbar innerhalb von 3-5 Tagen","7948":"Download sofort  verf\u00fcgbar","7949":"Download sofort  verf\u00fcgbar"},"openAccess":{"4068":{"status":0},"7947":{"status":0},"7948":{"status":0},"7949":{"status":0}}}'>
21896    
21897    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
21898        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
21899        <span x-html="optionsLabelText"></span>
21900    </p>
21901</div>                </div>
21902            
21903                                
21903<script>
21904        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
21905            try {
21906                const attributes = (config && config.attributes) ? config.attributes : null;
21907                if (!attributes) return [];
21908                let attr = null;
21909                if (Array.isArray(attributes)) {
21910                    for (let i = 0; i < attributes.length; i++) {
21911                        const a = attributes[i];
21912                        if (a && a.id == attrId) {
21913                            attr = a;
21914                            break;
21915                        }
21916                    }
21917                } else {
21918                    attr = attributes[attrId];
21919                }
21920                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
21921            } catch (e) {
21922                return [];
21923            }
21924        };
21925
21926        function initConfigurableSwatchOptions_4068() {
21927            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["7947"]},{"id":"8","label":"PDF","products":["7948"]},{"id":"9","label":"EPUB","products":["7949"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"7947":{"baseOldPrice":{"amount":21.401868158879},"oldPrice":{"amount":22.9},"basePrice":{"amount":21.401868158879},"finalPrice":{"amount":22.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"7948":{"baseOldPrice":{"amount":17.747662551402},"oldPrice":{"amount":18.99},"basePrice":{"amount":17.747662551402},"finalPrice":{"amount":18.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"7949":{"baseOldPrice":{"amount":17.747662551402},"oldPrice":{"amount":18.99},"basePrice":{"amount":17.747662551402},"finalPrice":{"amount":18.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":17.747662551402},"oldPrice":{"amount":18.99},"basePrice":{"amount":17.747662551402},"finalPrice":{"amount":18.99},"isApproxPrice":null},"productId":"4068","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"7947":{"163":"15"},"7948":{"163":"8"},"7949":{"163":"9"}},"salable":{"163":{"15":["7947"],"8":["7948"],"9":["7949"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"7947":"004131","7948":"004132","7949":"004137"},"output":{"7947":"Kartoniert","7948":"PDF","7949":"EPUB"},"original_name":{"7947":"","7948":"","7949":""},"openaccess_license_link":{"7947":"","7948":"","7949":""},"openaccess_license_name":{"7947":"","7948":"","7949":""},"openaccess_external_link":{"7947":"","7948":"","7949":""},"gpsr_safety_info":{"7947":"","7948":"","7949":""},"description":{"7947":"Transparenz ist ein Schl\u00fcsselbegriff des 21. Jahrhunderts. Sie hat sich einerseits zum Erfordernis entwickelt, dem alle entsprechen wollen: eine sich als modern verstehende Politik, aber auch das Individuum. Andererseits droht sowohl dem Staat als auch den Einzelnen ein digitaler Kontrollverlust. Der Band untersucht die Vielschichtigkeit von Transparenz und verbindet dabei Ans\u00e4tze aus Ideengeschichte, Politischer Philosophie und Medienethik.<br\/><br\/>Seit der Jahrtausendwende entwickelt der Transparenzbegriff eine zivilgesellschaftliche und politische Eigendynamik. Transparenz entwickelt sich zur Ideologie einer zeitgem\u00e4\u00dfen digitalen Medienlogik. Als zukunftsweisende und Freiheit versprechende Norm steht sie auf den Agenden von Demokratie-AktivistInnen, PolitikerInnen, InternetnutzerInnen, aber auch der demokratischen Gesellschaft als ganzer. Der gl\u00e4serne Mensch allerdings unterst\u00fctzt durch sein Nutzungsverhalten im Digitalen seine eigene Transparenz. Dies resultiert meist nicht in Freiheit und Partizipation, sondern in Kontrolle und Manipulation. Transparenz ist zu einem Konsensbegriff von beinahe universaler Geltung avanciert und leistet einen wesentlichen Beitrag zur Selbstverst\u00e4ndigung von Gesellschaften im digitalen Transformationsprozess. Dabei ger\u00e4t oft in den Hintergrund, dass es sich, je nac
21927hdem, wer oder was transparent sein soll, um v\u00f6llig verschiedene Bezugspunkte handelt. Lea Watzinger geht der Diskussion um Transparenz unter R\u00fcckgriff auf philosophiegeschichtliche Vorg\u00e4ngerdebatten zu \u00bb\u00d6ffentlichkeit\u00ab und \u00bbPublizit\u00e4t\u00ab nach und sortiert das Begriffsfeld von \u00bbTransparenz\u00ab neu.","7948":"Transparenz ist ein Schl\u00fcsselbegriff des 21. Jahrhunderts. Sie hat sich einerseits zum Erfordernis entwickelt, dem alle entsprechen wollen: eine sich als modern verstehende Politik, aber auch das Individuum. Andererseits droht sowohl dem Staat als auch den Einzelnen ein digitaler Kontrollverlust. Der Band untersucht die Vielschichtigkeit von Transparenz und verbindet dabei Ans\u00e4tze aus Ideengeschichte, Politischer Philosophie und Medienethik.<br\/><br\/>Seit der Jahrtausendwende entwickelt der Transparenzbegriff eine zivilgesellschaftliche und politische Eigendynamik. Transparenz entwickelt sich zur Ideologie einer zeitgem\u00e4\u00dfen digitalen Medienlogik. Als zukunftsweisende und Freiheit versprechende Norm steht sie auf den Agenden von Demokratie-AktivistInnen, PolitikerInnen, InternetnutzerInnen, aber auch der demokratischen Gesellschaft als ganzer. Der gl\u00e4serne Mensch allerdings unterst\u00fctzt durch sein Nutzungsverhalten im Digitalen seine eigene Transparenz. Dies resultiert meist nicht in Freiheit und Partizipation, sondern in Kontrolle und Manipulation. Transparenz ist zu einem Konsensbegriff von beinahe universaler Geltung avanciert und leistet einen wesentlichen Beitrag zur Selbstverst\u00e4ndigung von Gesellschaften im digitalen Transformationsprozess. Dabei ger\u00e4t oft in den Hintergrund, dass es sich, je nachdem, wer oder was transparent sein soll, um v\u00f6llig verschiedene Bezugspunkte handelt. Lea Watzinger geht der Diskussion um Transparenz unter R\u00fcckgriff auf philosophiegeschichtliche Vorg\u00e4ngerdebatten zu \u00bb\u00d6ffentlichkeit\u00ab und \u00bbPublizit\u00e4t\u00ab nach und sortiert das Begriffsfeld von \u00bbTransparenz\u00ab neu.","7949":"Transparenz ist ein Schl\u00fcsselbegriff des 21. Jahrhunderts. Sie hat sich einerseits zum Erfordernis entwickelt, dem alle entsprechen wollen: eine sich als modern verstehende Politik, aber auch das Individuum. Andererseits droht sowohl dem Staat als auch den Einzelnen ein digitaler Kontrollverlust. Der Band untersucht die Vielschichtigkeit von Transparenz und verbindet dabei Ans\u00e4tze aus Ideengeschichte, Politischer Philosophie und Medienethik.<br\/><br\/>Seit der Jahrtausendwende entwickelt der Transparenzbegriff eine zivilgesellschaftliche und politische Eigendynamik. Transparenz entwickelt sich zur Ideologie einer zeitgem\u00e4\u00dfen digitalen Medienlogik. Als zukunftsweisende und Freiheit versprechende Norm steht sie auf den Agenden von Demokratie-AktivistInnen, PolitikerInnen, InternetnutzerInnen, aber auch der demokratischen Gesellschaft als ganzer. Der gl\u00e4serne Mensch allerdings unterst\u00fctzt durch sein Nutzungsverhalten im Digitalen seine eigene Transparenz. Dies resultiert meist nicht in Freiheit und Partizipation, sondern in Kontrolle und Manipulation. Transparenz ist zu einem Konsensbegriff von beinahe universaler Geltung avanciert und leistet einen wesentlichen Beitrag zur Selbstverst\u00e4ndigung von Gesellschaften im digitalen Transformationsprozess. Dabei ger\u00e4t oft in den Hintergrund, dass es sich, je nachdem, wer oder was transparent sein soll, um v\u00f6llig verschiedene Bezugspunkte handelt. Lea Watzinger geht der Diskussion um Transparenz unter R\u00fcckgriff auf philosophiegeschichtliche Vorg\u00e4ngerdebatten zu \u00bb\u00d6ffentlichkeit\u00ab und \u00bbPublizit\u00e4t\u00ab nach und sortiert das Begriffsfeld von \u00bbTransparenz\u00ab neu."},"doi":{"7947":"","7948":"10.28937\/978-3-7873-4132-0","7949":"10.28937\/978-3-7873-4137-5"},"isbn":{"7947":"978-3-7873-4131-3","7948":"978-3-7873-4132-0","7949":"978-3-7873-4137-5"},"marketing_short_text":{"7947":"","7948":"","7949":""},"recension_text":{"7947":"","7948":"","7949":""},"language":{"7947":"","7948":"","7949":""},"cover":{"7947":"Kartoniert","7948":"","7949":""}
21927,"pages":{"7947":"190 Seiten","7948":"190 Seiten","7949":"190 Seiten"},"edition":{"7947":"","7948":"Unver\u00e4nderte eBook-Ausgabe der 1. Auflage von 2022","7949":"Unver\u00e4nderte eBook-Ausgabe der 1. Auflage von 2022"},"pod":{"7947":"Nein","7948":"Nein","7949":"Nein"},"copyright_year":{"7947":"","7948":"","7949":""},"vlb_tix_link":{"7947":"https:\/\/neu.vlbtix.de\/products\/9783787341313?type=gtin","7948":"","7949":""},"defaultValues":{"163":"15"}};
21928            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
21929
21930            if (typeof window.amxnotif_wrap_attributes === 'function') {
21931                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
21932                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
21933            }
21934
21935            const configurableOptionsComponent = initConfigurableOptions(
21936                '4068',
21937                config
21938            );
21939            const swatchOptionsComponent = initSwatchOptions(
21940                swatchConfig
21941            );
21942
21943            // DWS - Configurable product preselect start
21944            const confProdPreSelect = () => {
21945                return {
21946                    preselectQuerystringItems() {
21947                        var data = {"id":"7947","output":"15"};
21948                        const urlQueryParams = new URLSearchParams(window.location.search);
21949
21950                                                this.$nextTick(() => {
21951                            setTimeout(() => {
21952                                const rootEl = this.$root || this.$el;
21953                                if (!rootEl) return;
21954
21955                                const applySelection = (attrCode, attrValue) => {
21956                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
21957
21958                                    const attributes = Object.values(this.optionConfig.attributes || {});
21959                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
21960
21961                                    if (targetAttr) {
21962                                        const attrId = String(targetAttr.id);
21963                                        const optionVal = String(attrValue);
21964
21965                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
21966
21967                                        if (inputEl) {
21968                                                                                        inputEl.click();
21969                                            inputEl.dispatchEvent(new Event('change', {
21970                                                bubbles: true
21971                                            }));
21972                                        } else {
21973                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
21974                                            if (selectEl) {
21975                                                selectEl.value = optionVal;
21976                                                selectEl.dispatchEvent(new Event('change', {
21977                                                    bubbles: true
21978                                                }));
21979                                            }
21980                                        }
21981
21982                                                                                this.changeOption(attrId, optionVal, false);
21983                                    }
21984                                };
21985
21986                                                                if (data && typeof data === 'object') {
21987                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
21988                                }
21989
21990                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
21991                                    if (attribute && attribute.code) {
21992                                        let optionValue = urlQueryParams.get(attribute.code);
21993                                        if (optionValue) {
21994                                            let optionId = false;
21995                                            const attributes = Object.values(this.optionConfig.attributes || {});
21996                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
21997
21998                                            let found = false;
21999                                            Object.values(targetAttr.options).map(option => {
22000                                                if (found === false && option.label === optionValue) {
22001                                                    optionId = option.id;
22002                                                    found = true;
22003                                                }
22004                                            });
22005
22006                                            const attrId = String(targetAttr.id);
22007                                            let optionVal = String(optionValue);
22008                                            if (found) {
22009                                                optionVal = String(optionId);
22010                                            }
22011
22012                                            applySelection(attribute.code, optionVal);
22013                                        }
22014                                    }
22015                                });
22016                            }, 100);
22017                        });
22018                    }
22019                }
22020            };
22021            // DWS - Configurable product preselect end
22022
22023            const result = Object.assign(
22024                configurableOptionsComponent,
22025                swatchOptionsComponent, {
22026                    productId: '4068',
22027                    productIndex: 0,
22028                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
22029                    showSwatches: false,
22030                    precalcOptions: {},
22031                    originalInit: configurableOptionsComponent.init,
22032                    init() {
22033                        try {
22034                            this.precalcOptions = {};
22035                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
22036                            this.preselectQuerystringItems();
22037                            if (Array.isArray(attrSource)) {
22038                                attrSource.forEach(attr => {
22039                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
22040                                });
22041                            } else if (attrSource && typeof attrSource === 'object') {
22042                                Object.keys(attrSource).forEach(id => {
22043                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
22044                                });
22045                            }
22046                        } catch (e) {
22047                            console.error('Pre-calc error:', e);
22048                        }
22049
22050                        if (typeof this.originalInit === 'function') {
22051                            this.originalInit();
22052                        }
22053
22054                        try {
22055                            this.initShowSwatchesIntersect();
22056                        } catch (e) {
22057                            console.error('intersect error:', e);
22058                        }
22059                    },
22060
22061                    updateGallery() {
22062                        if (!this.productIndex) return;
22063
22064                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
22065                                method: 'GET',
22066                                headers: {
22067                                    'Content-Type': 'application/json',
22068                                    'X-Requested-With': 'XMLHttpRequest'
22069                                }
22070                            })
22071                            .then(response => response.json())
22072                            .then(data => {
22073                                if (data && data.medium) {
22074                                    window.dispatchEvent(new CustomEvent("update-gallery-4068", {
22075                                        detail: data.medium
22076                                    }));
22077                                }
22078                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
22079                    },
22080
22081
22082                    initShowSwatchesIntersect() {
22083                        const observer = new IntersectionObserver(entries => {
22084                            if (entries[0].isIntersecting) {
22085                                this.showSwatches = true;
22086                                observer.disconnect();
22087                            }
22088                        }, {
22089                            rootMargin: '512px'
22090                        });
22091                        observer.observe(this.$el);
22092                    },
22093                    getOptions(attrId) {
22094                        return this.precalcOptions[attrId] || [];
22095                    },
22096                    getOptionsByAttrId() {
22097                        return this.getOptions(this.$el.dataset.attributeId);
22098                    },
22099                    _getItemId() {
22100                        if (this.item && this.item.id) return this.item.id;
22101                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
22102                    },
22103                    getSwatchOptionHtmlId() {
22104                        const itemId = this._getItemId();
22105                        return itemId ? this.$id(`attribute-option-4068-${itemId}`) : '';
22106                    },
22107                    getSwatchOptionHtmlIdGroup() {
22108                        const itemId = this._getItemId();
22109                        return itemId ? [`attribute-option-4068-${itemId}`] : [];
22110                    },
22111                    getAttributeSwatchData(attributeId) {
22112                        const data = Object.assign({}, this.swatchConfig[attributeId]);
22113                        if (data['additional_data']) {
22114                            try {
22115                                data['details'] = JSON.parse(data['additional_data']);
22116                            } catch (e) {
22117                                data['details'] = {};
22118                            }
22119                        }
22120                        return data;
22121                    },
22122                    getSwatchType(attributeId, optionId) {
22123                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
22124                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
22125                        }
22126                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
22127                            this.swatchConfig[attributeId].details.swatch_input_type :
22128                            "empty";
22129                        if (type === 'visual') {
22130                            const config = this.swatchConfig[attributeId];
22131                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
22132                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
22133                            }
22134                            // Fallback to first option type
22135                            for (const oId in config) {
22136                                if (config[oId] && typeof config[oId].type !== 'undefined') {
22137                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
22138                                }
22139                            }
22140                        }
22141                        return type;
22142                    },
22143                    mapSwatchTypeNumberToTypeCode(type) {
22144                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
22145                    },
22146                    isTextSwatch() {
22147                        const itemId = this._getItemId();
22148                        if (!this.$el || !itemId) return false;
22149                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
22150                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
22151                    },
22152
22153                    getSwatchText() {
22154                        const itemId = this._getItemId();
22155                        if (this.item) return this.item.label || '';
22156                        if (!this.$el || !itemId) return '';
22157                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
22158                        const options = attrId ? this.getOptions(attrId) : [];
22159                        const opt = options.find(o => o.id == itemId);
22160                        return opt ? opt.label : '';
22161                    },
22162                    getSwatchBackgroundStyle() {
22163                        const itemId = this._getItemId();
22164                        if (!this.$el || !itemId) return '';
22165                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
22166                        if (!attrId) return '';
22167                        const type = this.getSwatchType(attrId, itemId);
22168                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
22169                            this.swatchConfig[attrId][itemId] :
22170                            null;
22171                        if (!swatchData) return '';
22172                        if (type === "color") return 'background-color:' + swatchData.value;
22173                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
22174                        return '';
22175                    },
22176                    swatchOptionClasses() {
22177                        const itemId = this._getItemId();
22178                        if (!this.$el || !itemId) return {};
22179                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
22180                        return {
22181                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
22182                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
22183                            'w-6 h-6': !this.isTextSwatch()
22184                        }
22185                    },
22186
22187                    onFocusSwatchItem() {
22188                        const itemId = this._getItemId();
22189                        if (itemId) this.focusedLabel = itemId;
22190                    },
22191                    onChangeOption() {
22192                        const itemId = this._getItemId();
22193                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
22194                        if (attrId && itemId) this.changeOption(attrId, itemId);
22195                    },
22196                    changeOption(attributeId, value) {
22197                        if (value === '') {
22198                            return;
22199                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
22200                        } else {
22201                            this.selectedValues[attributeId] = value;
22202                        }
22203
22204                        this.findSimpleIndex();
22205                        this.findAllowedAttributeOptions();
22206                        this.updatePrices();
22207                        this.updateGallery();
22208
22209                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
22210                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
22211
22212                        const eventDetail = {
22213                            productId: this.productId,
22214                            optionId: attributeId,
22215                            value: value,
22216                            productIndex: this.productIndex || 0,
22217                            selectedValues: this.selectedValues,
22218                            candidates: candidates,
22219                            sourceElement: this.$el
22220                        };
22221
22222                        // Dispatch for Amasty
22223                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
22224                            detail: eventDetail
22225                        }));
22226
22227                        // Dispatch for Hyva listing
22228                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
22229                            detail: eventDetail
22230                        }));
22231                    },
22232
22233
22234                    clearOptionIfActive() {
22235                        const itemId = this._getItemId();
22236                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
22237                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
22238                            this.changeOption(attrId, '');
22239
22240                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
22241                            if (!input && this.$el?.querySelector) {
22242                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
22243                            }
22244                            if (!input && this.$el?.closest) {
22245                                const root = this.$el.closest('[data-product-id]') || this.$el;
22246                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
22247                            }
22248                            if (input) {
22249                                input.checked = false;
22250                            }
22251                        }
22252                    },
22253                    get optionIsEnabled() {
22254                        const itemId = this._getItemId();
22255                        if (!this.$el || !itemId) return true;
22256                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
22257                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
22258                        return !!allowedOptions.find(opt => opt.id == itemId);
22259                    },
22260                    get isSelected() {
22261                        const itemId = this._getItemId();
22262                        if (!this.$el || !itemId) return false;
22263                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
22264                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
22265                    },
22266                    get isSwatchRequired() {
22267                        if (!this.$el) return false;
22268                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
22269                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
22270                    },
22271                    focusedLabel: false,
22272                    activeTooltipItem: false,
22273                    tooltipPositionElement: false,
22274                    setActiveTooltipItem() {
22275                        const itemId = this._getItemId();
22276                        if (!this.$el || !itemId) return;
22277                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
22278                        this.activeTooltipItem = {
22279                            attribute: attrId,
22280                            item: itemId,
22281                            index: 0
22282                        };
22283                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
22284                    },
22285                    unsetActiveTooltipItem() {
22286                        this.activeTooltipItem = false;
22287                    }
22288                },
22289                confProdPreSelect()
22290            );
22291
22292            if (result.optionConfig && result.optionConfig.attributes) {
22293                const attributes = result.optionConfig.attributes;
22294                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
22295                    let source = attributes;
22296                    if (Array.isArray(attributes)) {
22297                        source = {};
22298                        attributes.forEach(attr => {
22299                            if (attr && attr.id) source[attr.id] = attr;
22300                        });
22301                    }
22302                    const values = Object.values(source);
22303                    const wrapper = Object.assign(values, source);
22304                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
22305                        value: true,
22306                        enumerable: false
22307                    });
22308                    result.optionConfig.attributes = wrapper;
22309                }
22310            }
22311
22312            return result;
22313        }
22314
22315        window.addEventListener('alpine:init', () => {
22316            Alpine.data('initConfigurableSwatchOptions_4068', initConfigurableSwatchOptions_4068);
22317        }, {
22318            once: true
22319        });
22320    </script>
22320
22321    
22322    <div x-data="initConfigurableSwatchOptions_4068" x-defer="intersect">
22323        <div class="pagebuilder-home-hidden">
22324                                            
22325                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
22326                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
22327                        <template x-if="showSwatches">
22328                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-4068-163" role="radiogroup" aria-label="Einband">
22329                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
22330                                    <div :data-option-id="item.id" style="display: contents">
22331                                        <div x-id="getSwatchOptionHtmlIdGroup">
22332    <template x-if="optionIsEnabled">
22333        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
22333self="unsetActiveTooltipItem">
22334            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-4068-163">
22335            <div>
22336                <template x-if="isTextSwatch">
22337                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
22338                </template>
22339                <template x-if="!optionIsActive(163, item.id)">
22340                    <div>
22341                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
22342                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
22343                        </svg>
22344                    </div>
22345                </template>
22346            </div>
22347        </label>
22348    </template>
22349</div>                                    </div>
22350                                </template>
22351                            </div>
22352                        </template>
22353                    </div>
22354                </div>
22355                    </div>
22356    </div>
22357            
22358                                                <div class="meta py-4 pagebuilder-home-hidden">
22359                <div x-data="initMarketingShortText_4068()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
22360                    <!-- Marketing short text -->
22361                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
22362                    </div>
22363
22364                    <!-- Short description -->
22365                                                                <div class="short-description">
22366                            Transparenz ist ein Schl&uuml;sselbegriff des 21. Jahrhunderts. Sie hat sich einerseits zum Erfordernis entwickelt, dem alle entsprechen wollen: eine sich als modern verstehende Politik, aber auch das ...                            <a href="https://meiner.de/fmv_de/transparenz" class="underline">mehr</a>
22367                        </div>
22368                                    </div>
22369
22370                <!-- Series  -->
22371                                    <div class="mb-1">
22372                        <span class="sr-only">Reihe:</span>
22373                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
22374                            <span>Blaue Reihe</span>
22375                        </a>
22376                                            </div>
22377                
22378                
22379                                                    <div class="mb-1">
22380                        <span x-data="initEditionText_4068()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
22381                            <!-- Marketing short text -->
22382                            <span class="edition-text" x-html="editionText"></span>&nbsp;2022, 190 Seiten                        </span>
22383                    </div>
22384                
22385                            </div>
22386            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
22387                
22388                <div class="justify-end" x-data="initPriceBox()" @update-prices-4068.window="updatePrice($event.detail);">
22389                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="4068" data-price-box="product-id-4068"><span class="normal-price">
22390    <span x-data x-id="['product\u002Dprice\u002D4068']" class="price-container price-final_price tax weee">
22391            <span class="price-label">Ab</span>
22392                <span class="approx-price">ca. </span>
22393        <span :id="$id('product\u002Dprice\u002D4068')" data-price-amount="18.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">18,99&nbsp;&euro;</span></span>
22394        </span>
22395</span>
22396
22397
22398</div>                </div>
22399
22400                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
22401                                            <div class="open-access-container open-access-container-4068                    flex mt-4 ml-auto sm:mt-0 hidden">
22402                            <div class="text-gray-700">
22403                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
22404                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
22405                                        Kostenlos online lesen                                    </a>
22406                                </button>
22407                            </div>
22408                        </div>
22409                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Trans
22409parenz" aria-label="In den Warenkorb Transparenz" data-addto="cart">
22410                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
22411  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
22412</svg>
22413                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
22414                                        In den Warenkorb                                    </span>
22415                                </button>
22416                                                                                                                    
22417<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(4068)" aria-label="Zur Wunschliste hinzuf&uuml;gen Transparenz" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
22418    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
22419  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
22420</svg>
22421</button>
22422                                    </div>
22423            </div>
22424        </div>
22425        
22425<script>
22426            function initMarketingShortText_4068() {
22427                var marketingShortTextConfig = {};
22428                if (typeof window.initConfigurableSwatchOptions_4068 === "function") {
22429                    var fullConfig = window.initConfigurableSwatchOptions_4068().optionConfig
22430                    var marketingShortTextConfig = fullConfig.marketing_short_text;
22431                }
22432                return {
22433                    marketingShortText: '',
22434                    config: marketingShortTextConfig,
22435                    productId: '4068',
22436                    getMarketingShortText(detail) {
22437                        this.marketingShortText = detail.productIndex ?
22438                            this.config[detail.productIndex] :
22439                            null;
22440                    },
22441                    eventListeners: {
22442                        ['@listing-configurable-selection-changed.window'](event) {
22443                            if (this.productId == event.detail.productId) {
22444                                this.getMarketingShortText(event.detail);
22445                            }
22446
22447                        }
22448                    }
22449                }
22450            }
22451
22452            function initEditionText_4068() {
22453                var editionTextConfig = {};
22454                if (typeof window.initConfigurableSwatchOptions_4068 === "function") {
22455                    var fullConfig = window.initConfigurableSwatchOptions_4068().optionConfig
22456                    var editionTextConfig = fullConfig.edition;
22457                }
22458                return {
22459                    editionText: '',
22460                    config: editionTextConfig,
22461                    productId: '4068',
22462                    getEditionText(detail) {
22463                        this.editionText = detail.productIndex ?
22464                            this.config[detail.productIndex] :
22465                            null;
22466                    },
22467                    eventListeners: {
22468                        ['@listing-configurable-selection-changed.window'](event) {
22469                            if (this.productId == event.detail.productId) {
22470                                this.getEditionText(event.detail);
22471                            }
22472
22473                        }
22474                    }
22475                }
22476            }
22477        </script>
22477
22478                    </form>
22479                            
22480    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/4044/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk9391">
22481        <input name="form_key" type="hidden" value="R6NBsKL42phFmgWc">        <input type="hidden" name="product" value="4044">
22482                                    <a href="https://meiner.de/fmv_de/meinungskrise-und-meinungsbildung" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
22483            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-4044.window="$el.src = $event.detail" alt="Meinungskrise und Meinungsbildung" title="Meinungskrise und Meinungsbildung" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787340927_6.jpg" :style="{
22484                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
22485                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
22486            }">
22487                    </a>
22488        <div class="product-info flex flex-col flex-grow ">
22489                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
22490                                    <div class="mb-2 text-sm text-gray-500 font-medium">
22491                                                                                    <a href="https://meiner.de/fmv_de/person/Christian-Bermes-3208/" class="mb-2">
22492                                    Christian Bermes                                                                    </a>
22493                                                                                                                                    </div>
22494                                <a class="product-item-link" href="https://meiner.de/fmv_de/meinungskrise-und-meinungsbildung">
22495                    Meinungskrise und Meinungsbildung                </a>
22496                            </div>
22497
22498            <div x-data="initEditionText_4044()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
22499                <!-- Marketing short text -->
22500                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
22501                </div>
22502            </div>
22503
22504                            <div class="py-1 grid  mb-4 ">
22505                    
22506                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":4044,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":4044,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2Rl","childProducts":{"4417":"1","4415":"1","4416":"1"},"childProductsAlertStatus":{"4417":"0","4415":"0","4416":"0"},"indexMapping":{"163:15":4417,"163:8":4415,"163:9":4416},"availabilityMessages":{"4417":"Lieferbar innerhalb von 3-5 Tagen","4415":"Download sofort  verf\u00fcgbar","4416":"Download sofort  verf\u00fcgbar"},"openAccess":{"4044":{"status":0},"4417":{"status":0},"4415":{"status":0},"4416":{"status":0}}},"availabilityMessages":{"4417":"Lieferbar innerhalb von 3-5 Tagen","4415":"Download sofort  verf\u00fcgbar","4416":"Download sofort  verf\u00fcgbar"},"openAccess":{"4044":{"status":0},"4417":{"status":0},"4415":{"status":0},"4416":{"status":0}}}'>
22507        <template x-if="containerVisible">
22508                            <!-- Popup Trigger -->
22509                <div>
22510                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
22511                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
22512                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
22513  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
22514<title>bell</title></svg>
22515</span>
22516                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
22517
22518                    <!-- Popup Modal -->
22519                    <template x-if="showModal">
22520                        <template x-teleport=".page-wrapper">
22521                            <div x-cloak class="fixed inset-0 flex items-center justify-center
22522                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
22523                                <div class="relative bg-white rounded-lg shadow-xl
22524                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
22525                                    <div class="p-6">
22526                                        <!-- Subscription Form for Popup -->
22527                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
22528                                            <input name="form_key" type="hidden" value="R6NBsKL42phFmgWc">
22529                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
22530                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
22531
22532                                            <div class="flex flex-col gap-3">
22533                                                <div class="flex-grow grow">
22534                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
22535                                                        shadow-xs focus:outline-none focus:outline-hidden
22536                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
22537                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
22538                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
22539                                                </div>
22540                                                <input type="hidden" name="product_id" :value="currentProductId">
22541                                                <input type="hidden" name="type" value="email">
22542
22543                                                
22544                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvZm12X2Rl">
22545
22546                                                <div class="amxnotif_guest_action">
22547                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
22548                                                        rounded-md focus:outline-none
22549                                                        focus:outline-hidden focus:ring-2
22550                                                        focus:ring-offset-2 disabled:opacity-50
22551                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
22552                                                        Benachrichtigen                                                    </button>
22553                                                </div>
22554                                            </div>
22555
22556                                                                                            <div class="flex items-start pt-2">
22557                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
22558                                                        text-blue-600 border-gray-300 rounded-sm">
22559                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
22560                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
22561                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
22562                                                </div>
22563                                                                                    </form>
22564                                    </div>
22565
22566                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
22567                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
22568                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
22569  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
22570<title>x</title></svg>
22571                                    </button>
22572                                </div>
22573                            </div>
22574                        </template>
22575                    </template>
22576                </div>
22577                    </template>
22578    </div>
22579
22580<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_4044" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":4044,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2Rl","childProducts":{"4417":"1","4415":"1","4416":"1"},"childProductsAlertStatus":{"4417":"0","4415":"0","4416":"0"},"indexMapping":"{\u0022163:15\u0022:4417,\u0022163:8\u0022:4415,\u0022163:9\u0022:4416}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":4044,"availabilityMessages":{"4417":"Lieferbar innerhalb von 3-5 Tagen","4415":"Download sofort  verf\u00fcgbar","4416":"Download sofort  verf\u00fcgbar"},"openAccess":{"4044":{"status":0},"4417":{"status":0},"4415":{"status":0},"4416":{"status":0}}}'>
22581    
22582    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
22583        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
22584        <span x-html="optionsLabelText"></span>
22585    </p>
22586</div>                </div>
22587            
22588                                
22588<script>
22589        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
22590            try {
22591                const attributes = (config && config.attributes) ? config.attributes : null;
22592                if (!attributes) return [];
22593                let attr = null;
22594                if (Array.isArray(attributes)) {
22595                    for (let i = 0; i < attributes.length; i++) {
22596                        const a = attributes[i];
22597                        if (a && a.id == attrId) {
22598                            attr = a;
22599                            break;
22600                        }
22601                    }
22602                } else {
22603                    attr = attributes[attrId];
22604                }
22605                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
22606            } catch (e) {
22607                return [];
22608            }
22609        };
22610
22611        function initConfigurableSwatchOptions_4044() {
22612            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["4417"]},{"id":"8","label":"PDF","products":["4415"]},{"id":"9","label":"EPUB","products":["4416"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"4417":{"baseOldPrice":{"amount":9.2523354485981},"oldPrice":{"amount":9.9},"basePrice":{"amount":9.2523354485981},"finalPrice":{"amount":9.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"4415":{"baseOldPrice":{"amount":6.5327092803738},"oldPrice":{"amount":6.99},"basePrice":{"amount":6.5327092803738},"finalPrice":{"amount":6.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"4416":{"baseOldPrice":{"amount":6.5327092803738},"oldPrice":{"amount":6.99},"basePrice":{"amount":6.5327092803738},"finalPrice":{"amount":6.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":6.5327092803738},"oldPrice":{"amount":6.99},"basePrice":{"amount":6.5327092803738},"finalPrice":{"amount":6.99},"isApproxPrice":null},"productId":"4044","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"4417":{"163":"15"},"4415":{"163":"8"},"4416":{"163":"9"}},"salable":{"163":{"15":["4417"],"8":["4415"],"9":["4416"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"4417":"004090","4415":"004091","4416":"004092"},"output":{"4415":"PDF","4416":"EPUB","4417":"Kartoniert"},"original_name":{"4415":"","4416":"","4417":""},"openaccess_license_link":{"4415":"","4416":"","4417":""},"openaccess_license_name":{"4415":"","4416":"","4417":""},"openaccess_external_link":{"4415":"","4416":"","4417":""},"gpsr_safety_info":{"4415":"","4416":"","4417":""},"description":{"4415":"Christian Bermes diskutiert in seinem Essay das Konzept der Meinung in einem grunds\u00e4tzlichen Sinne. Er fragt danach, ob wir \u00fcberhaupt noch ein Verst\u00e4ndnis von Meinungen als Meinungen besitzen. Zeitkritisch und in Auseinandersetzung mit Positionen der Sozial- und Kommunikationswissenschaften zeigt Bermes, dass die Meinungskrisen der Gegenwart letztlich in einer Krisis der Doxa gr\u00fcnden.<br\/><br\/>Die Antworten scheinen klar zu sein, wenn es um Meinungen geht: Meinungen sind privat, subjektiv, beliebig oder willk\u00fcrlich. Werden Meinungen dem Wissen gegen\u00fcbergestellt, erscheinen sie als ein Provisorium, das m\u00f6glichst schnell \u00fcberwunden werden muss, damit sinnvoll von Erkenntnis gesprochen werden kann. Gleichwohl m\u00fcssen wir mit Meinungen umgehen, gerade die Herausforderungen der Sozialen Medien zeigen dies aufs Neue. In seinem Essay entwickelt Bermes in Auseinandersetzung mit Wittgenstein und im Anschluss an das ph\u00e4nomenologische Projekt einer Rehabilitierung der Doxa Bausteine zu einer Theorie wohlfundierter Meinung. Er diagnostiziert einen Mythos, der sich um das Meinungskonzept entwickelt hat, und er\u00f6rtert die Doxa im Ausgang von einem Verst\u00e4ndnis des Exemplarischen. Meinungen sind nicht einfach beliebig, subjektiv oder willk\u00fcrlich. Auch Meinungen unterliegen Qualifikationsmerkmalen. Dies hat sowohl Auswirkungen f\u00fcr die Philosophische Anthropologie als auch f\u00fcr dasjenige, was als \u00f6ffentliche Meinung bezeichnet wird.<br\/><br\/>Die zweite Auflage hat der Autor um ein Vorwort erg\u00e4nzt, das auf die vielf\u00e4ltige Resonanz auf das Buch eingeht.","4416":"Christian Bermes diskutiert in seinem Essay das Konzept der Meinung in einem grunds\u00e4tzlichen Sinne. Er fragt danach, ob wir \u00fcberhaupt noch ein Verst\u00e4ndnis von Meinungen als Meinungen besitzen. Zeitkritisch und in Auseinandersetzung mit Positionen der Sozial- und 
22612Kommunikationswissenschaften zeigt Bermes, dass die Meinungskrisen der Gegenwart letztlich in einer Krisis der Doxa gr\u00fcnden.<br\/><br\/>Die Antworten scheinen klar zu sein, wenn es um Meinungen geht: Meinungen sind privat, subjektiv, beliebig oder willk\u00fcrlich. Werden Meinungen dem Wissen gegen\u00fcbergestellt, erscheinen sie als ein Provisorium, das m\u00f6glichst schnell \u00fcberwunden werden muss, damit sinnvoll von Erkenntnis gesprochen werden kann. Gleichwohl m\u00fcssen wir mit Meinungen umgehen, gerade die Herausforderungen der Sozialen Medien zeigen dies aufs Neue. In seinem Essay entwickelt Bermes in Auseinandersetzung mit Wittgenstein und im Anschluss an das ph\u00e4nomenologische Projekt einer Rehabilitierung der Doxa Bausteine zu einer Theorie wohlfundierter Meinung. Er diagnostiziert einen Mythos, der sich um das Meinungskonzept entwickelt hat, und er\u00f6rtert die Doxa im Ausgang von einem Verst\u00e4ndnis des Exemplarischen. Meinungen sind nicht einfach beliebig, subjektiv oder willk\u00fcrlich. Auch Meinungen unterliegen Qualifikationsmerkmalen. Dies hat sowohl Auswirkungen f\u00fcr die Philosophische Anthropologie als auch f\u00fcr dasjenige, was als \u00f6ffentliche Meinung bezeichnet wird.<br\/><br\/>Die zweite Auflage hat der Autor um ein Vorwort erg\u00e4nzt, das auf die vielf\u00e4ltige Resonanz auf das Buch eingeht.","4417":"Christian Bermes diskutiert in seinem Essay das Konzept der Meinung in einem grunds\u00e4tzlichen Sinne. Er fragt danach, ob wir \u00fcberhaupt noch ein Verst\u00e4ndnis von Meinungen als Meinungen besitzen. Zeitkritisch und in Auseinandersetzung mit Positionen der Sozial- und Kommunikationswissenschaften zeigt Bermes, dass die Meinungskrisen der Gegenwart letztlich in einer Krisis der Doxa gr\u00fcnden.<br\/><br\/>Die Antworten scheinen klar zu sein, wenn es um Meinungen geht: Meinungen sind privat, subjektiv, beliebig oder willk\u00fcrlich. Werden Meinungen dem Wissen gegen\u00fcbergestellt, erscheinen sie als ein Provisorium, das m\u00f6glichst schnell \u00fcberwunden werden muss, damit sinnvoll von Erkenntnis gesprochen werden kann. Gleichwohl m\u00fcssen wir mit Meinungen umgehen, gerade die Herausforderungen der Sozialen Medien zeigen dies aufs Neue. In seinem Essay entwickelt Bermes in Auseinandersetzung mit Wittgenstein und im Anschluss an das ph\u00e4nomenologische Projekt einer Rehabilitierung der Doxa Bausteine zu einer Theorie wohlfundierter Meinung. Er diagnostiziert einen Mythos, der sich um das Meinungskonzept entwickelt hat, und er\u00f6rtert die Doxa im Ausgang von einem Verst\u00e4ndnis des Exemplarischen. Meinungen sind nicht einfach beliebig, subjektiv oder willk\u00fcrlich. Auch Meinungen unterliegen Qualifikationsmerkmalen. Dies hat sowohl Auswirkungen f\u00fcr die Philosophische Anthropologie als auch f\u00fcr dasjenige, was als \u00f6ffentliche Meinung bezeichnet wird.<br\/><br\/>Die zweite Auflage hat der Autor um ein Vorwort erg\u00e4nzt, das auf die vielf\u00e4ltige Resonanz auf das Buch eingeht."},"doi":{"4415":"10.28937\/978-3-7873-4091-0","4416":"10.28937\/978-3-7873-4092-7","4417":""},"isbn":{"4415":"978-3-7873-4091-0","4416":"978-3-7873-4092-7","4417":"978-3-7873-4090-3"},"marketing_short_text":{"4415":"","4416":"","4417":"Statt vorher \u20ac 14,90 jetzt nur \u20ac 9,90"},"recension_text":{"4415":"<div class=\"reviews\">\r\n<div class=\"review\">Obwohl alle Welt zu allem und jedem eine Meinung hat, ist das, was all diese Meinungen als solche ausmacht, erstaunlich schwer zu greifen. Christian Bermes \u2026 hat \u2026 ebenso b\u00fcndige wie aufschlussreiche \u00dcberlegungen zu diesem seltsam schillernden Begriff der Meinung angestellt \u2013 \u00dcberlegungen, die das Bild deutlich differenzieren und, wie nur folgerichtig, ver\u00e4ndern.<\/div>\r\n<div class=\"source\">Ralf Konersmann, Die Politische Meinung, Nr. 574 (2022)<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Bermes skizziert die Grundlinien einer Philosophie der Doxa in seinem lesenswerten Essay sehr konzentriert und eing\u00e4ngig, indem er der Meinung in der Geschichte der Philosophie nachsp\u00fcrt und unter anderem wichtige Anst\u00f6\u00dfe von Husserl, Heidegger, Arendt und Wittgenstein f\u00fcr ein Konzept der Meinung aufgreift.<\/div>\r\n<div class=\"source\">
22612Ulrike Bardt im Philosophischen Literaturanzeiger 73 (2023) 3.<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">... ist diese \u203aPhilosophie der Doxa\u2039 ungew\u00f6hnlich anregend, weil sie gegen den Begriff der blo\u00dfen Meinungsfreiheit den der weithin untersch\u00e4tzten Meinungsbildung so stark macht. Dem zu folgen, erfordert ein hohes Ma\u00df an Konzentration, doch sch\u00e4rft das eigene Urteilsverm\u00f6gen ungemein. Wer m\u00f6chte sich schon an Georg Christoph Lichtenbergs sp\u00f6ttische Empfehlung halten: \u203aNichts kann mehr zu einer Seelen-Ruhe beitragen, als wenn man gar keine Meinung hat.\u2039<\/div>\r\n<div class=\"source\">Gregor Dotzauer im Tagesspiegel vom 25.01.2022<\/div>\r\n<\/div>","4416":"<div class=\"reviews\">\r\n<div class=\"review\">Obwohl alle Welt zu allem und jedem eine Meinung hat, ist das, was all diese Meinungen als solche ausmacht, erstaunlich schwer zu greifen. Christian Bermes \u2026 hat \u2026 ebenso b\u00fcndige wie aufschlussreiche \u00dcberlegungen zu diesem seltsam schillernden Begriff der Meinung angestellt \u2013 \u00dcberlegungen, die das Bild deutlich differenzieren und, wie nur folgerichtig, ver\u00e4ndern.<\/div>\r\n<div class=\"source\">Ralf Konersmann, Die Politische Meinung, Nr. 574 (2022)<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Bermes skizziert die Grundlinien einer Philosophie der Doxa in seinem lesenswerten Essay sehr konzentriert und eing\u00e4ngig, indem er der Meinung in der Geschichte der Philosophie nachsp\u00fcrt und unter anderem wichtige Anst\u00f6\u00dfe von Husserl, Heidegger, Arendt und Wittgenstein f\u00fcr ein Konzept der Meinung aufgreift.<\/div>\r\n<div class=\"source\">Ulrike Bardt im Philosophischen Literaturanzeiger 73 (2023) 3.<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">... ist diese \u203aPhilosophie der Doxa\u2039 ungew\u00f6hnlich anregend, weil sie gegen den Begriff der blo\u00dfen Meinungsfreiheit den der weithin untersch\u00e4tzten Meinungsbildung so stark macht. Dem zu folgen, erfordert ein hohes Ma\u00df an Konzentration, doch sch\u00e4rft das eigene Urteilsverm\u00f6gen ungemein. Wer m\u00f6chte sich schon an Georg Christoph Lichtenbergs sp\u00f6ttische Empfehlung halten: \u203aNichts kann mehr zu einer Seelen-Ruhe beitragen, als wenn man gar keine Meinung hat.\u2039<\/div>\r\n<div class=\"source\">Gregor Dotzauer im Tagesspiegel vom 25.01.2022<\/div>\r\n<\/div>","4417":"<div class=\"reviews\">\r\n<div class=\"review\">Obwohl alle Welt zu allem und jedem eine Meinung hat, ist das, was all diese Meinungen als solche ausmacht, erstaunlich schwer zu greifen. Christian Bermes \u2026 hat \u2026 ebenso b\u00fcndige wie aufschlussreiche \u00dcberlegungen zu diesem seltsam schillernden Begriff der Meinung angestellt \u2013 \u00dcberlegungen, die das Bild deutlich differenzieren und, wie nur folgerichtig, ver\u00e4ndern.<\/div>\r\n<div class=\"source\">Ralf Konersmann, Die Politische Meinung, Nr. 574 (2022)<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Bermes skizziert die Grundlinien einer Philosophie der Doxa in seinem lesenswerten Essay sehr konzentriert und eing\u00e4ngig, indem er der Meinung in der Geschichte der Philosophie nachsp\u00fcrt und unter anderem wichtige Anst\u00f6\u00dfe von Husserl, Heidegger, Arendt und Wittgenstein f\u00fcr ein Konzept der Meinung aufgreift.<\/div>\r\n<div class=\"source\">Ulrike Bardt im Philosophischen Literaturanzeiger 73 (2023) 3.<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">... ist diese \u203aPhilosophie der Doxa\u2039 ungew\u00f6hnlich anregend, weil sie gegen den Begriff der blo\u00dfen Meinungsfreiheit den der weithin untersch\u00e4tzten Meinungsbildung so stark macht. Dem zu folgen, erfordert ein hohes Ma\u00df an Konzentration, doch sch\u00e4rft das eigene Urteilsverm\u00f6gen ungemein. Wer m\u00f6chte sich schon an Georg Christoph Lichtenbergs sp\u00f6ttische Empfehlung halten: \u203aNichts kann mehr zu einer Seelen-Ruhe beitragen, als wenn man gar keine Meinung hat.\u2039<\/div>\r\n<div class=\"source\">Gregor Dotzauer im Tagesspiegel vom 25.01.2022<\/div>\r\n<\/div>"},"language":{"4415":"","4416":"","4417":""},"cover":{"4415":"","4416":"","4417":"Kartoniert"},"pages":{"4415":"126 Seiten","4416":"126 Seiten","4417":"126 Seiten"},"edition":{"4415":"2. Auflage","4416":"2. Auflage","4417":""},"pod":{"4415":"Nein","4416":"Nein","4417":"Nein"},"copyright_year":{"4415":"","4416":"","4417":""},"vlb_tix_link":{"4415":"","4416":"","4417":"https:\/\/neu.vlbtix.de\/products\/9783787340903?type=gtin"},"defaultValues":{"163":"15"}};
22613            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
22614
22615            if (typeof window.amxnotif_wrap_attributes === 'function') {
22616                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
22617                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
22618            }
22619
22620            const configurableOptionsComponent = initConfigurableOptions(
22621                '4044',
22622                config
22623            );
22624            const swatchOptionsComponent = initSwatchOptions(
22625                swatchConfig
22626            );
22627
22628            // DWS - Configurable product preselect start
22629            const confProdPreSelect = () => {
22630                return {
22631                    preselectQuerystringItems() {
22632                        var data = {"id":"4417","output":"15"};
22633                        const urlQueryParams = new URLSearchParams(window.location.search);
22634
22635                                                this.$nextTick(() => {
22636                            setTimeout(() => {
22637                                const rootEl = this.$root || this.$el;
22638                                if (!rootEl) return;
22639
22640                                const applySelection = (attrCode, attrValue) => {
22641                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
22642
22643                                    const attributes = Object.values(this.optionConfig.attributes || {});
22644                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
22645
22646                                    if (targetAttr) {
22647                                        const attrId = String(targetAttr.id);
22648                                        const optionVal = String(attrValue);
22649
22650                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
22651
22652                                        if (inputEl) {
22653                                                                                        inputEl.click();
22654                                            inputEl.dispatchEvent(new Event('change', {
22655                                                bubbles: true
22656                                            }));
22657                                        } else {
22658                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
22659                                            if (selectEl) {
22660                                                selectEl.value = optionVal;
22661                                                selectEl.dispatchEvent(new Event('change', {
22662                                                    bubbles: true
22663                                                }));
22664                                            }
22665                                        }
22666
22667                                                                                this.changeOption(attrId, optionVal, false);
22668                                    }
22669                                };
22670
22671                                                                if (data && typeof data === 'object') {
22672                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
22673                                }
22674
22675                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
22676                                    if (attribute && attribute.code) {
22677                                        let optionValue = urlQueryParams.get(attribute.code);
22678                                        if (optionValue) {
22679                                            let optionId = false;
22680                                            const attributes = Object.values(this.optionConfig.attributes || {});
22681                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
22682
22683                                            let found = false;
22684                                            Object.values(targetAttr.options).map(option => {
22685                                                if (found === false && option.label === optionValue) {
22686                                                    optionId = option.id;
22687                                                    found = true;
22688                                                }
22689                                            });
22690
22691                                            const attrId = String(targetAttr.id);
22692                                            let optionVal = String(optionValue);
22693                                            if (found) {
22694                                                optionVal = String(optionId);
22695                                            }
22696
22697                                            applySelection(attribute.code, optionVal);
22698                                        }
22699                                    }
22700                                });
22701                            }, 100);
22702                        });
22703                    }
22704                }
22705            };
22706            // DWS - Configurable product preselect end
22707
22708            const result = Object.assign(
22709                configurableOptionsComponent,
22710                swatchOptionsComponent, {
22711                    productId: '4044',
22712                    productIndex: 0,
22713                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
22714                    showSwatches: false,
22715                    precalcOptions: {},
22716                    originalInit: configurableOptionsComponent.init,
22717                    init() {
22718                        try {
22719                            this.precalcOptions = {};
22720                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
22721                            this.preselectQuerystringItems();
22722                            if (Array.isArray(attrSource)) {
22723                                attrSource.forEach(attr => {
22724                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
22725                                });
22726                            } else if (attrSource && typeof attrSource === 'object') {
22727                                Object.keys(attrSource).forEach(id => {
22728                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
22729                                });
22730                            }
22731                        } catch (e) {
22732                            console.error('Pre-calc error:', e);
22733                        }
22734
22735                        if (typeof this.originalInit === 'function') {
22736                            this.originalInit();
22737                        }
22738
22739                        try {
22740                            this.initShowSwatchesIntersect();
22741                        } catch (e) {
22742                            console.error('intersect error:', e);
22743                        }
22744                    },
22745
22746                    updateGallery() {
22747                        if (!this.productIndex) return;
22748
22749                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
22750                                method: 'GET',
22751                                headers: {
22752                                    'Content-Type': 'application/json',
22753                                    'X-Requested-With': 'XMLHttpRequest'
22754                                }
22755                            })
22756                            .then(response => response.json())
22757                            .then(data => {
22758                                if (data && data.medium) {
22759                                    window.dispatchEvent(new CustomEvent("update-gallery-4044", {
22760                                        detail: data.medium
22761                                    }));
22762                                }
22763                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
22764                    },
22765
22766
22767                    initShowSwatchesIntersect() {
22768                        const observer = new IntersectionObserver(entries => {
22769                            if (entries[0].isIntersecting) {
22770                                this.showSwatches = true;
22771                                observer.disconnect();
22772                            }
22773                        }, {
22774                            rootMargin: '512px'
22775                        });
22776                        observer.observe(this.$el);
22777                    },
22778                    getOptions(attrId) {
22779                        return this.precalcOptions[attrId] || [];
22780                    },
22781                    getOptionsByAttrId() {
22782                        return this.getOptions(this.$el.dataset.attributeId);
22783                    },
22784                    _getItemId() {
22785                        if (this.item && this.item.id) return this.item.id;
22786                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
22787                    },
22788                    getSwatchOptionHtmlId() {
22789                        const itemId = this._getItemId();
22790                        return itemId ? this.$id(`attribute-option-4044-${itemId}`) : '';
22791                    },
22792                    getSwatchOptionHtmlIdGroup() {
22793                        const itemId = this._getItemId();
22794                        return itemId ? [`attribute-option-4044-${itemId}`] : [];
22795                    },
22796                    getAttributeSwatchData(attributeId) {
22797                        const data = Object.assign({}, this.swatchConfig[attributeId]);
22798                        if (data['additional_data']) {
22799                            try {
22800                                data['details'] = JSON.parse(data['additional_data']);
22801                            } catch (e) {
22802                                data['details'] = {};
22803                            }
22804                        }
22805                        return data;
22806                    },
22807                    getSwatchType(attributeId, optionId) {
22808                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
22809                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
22810                        }
22811                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
22812                            this.swatchConfig[attributeId].details.swatch_input_type :
22813                            "empty";
22814                        if (type === 'visual') {
22815                            const config = this.swatchConfig[attributeId];
22816                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
22817                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
22818                            }
22819                            // Fallback to first option type
22820                            for (const oId in config) {
22821                                if (config[oId] && typeof config[oId].type !== 'undefined') {
22822                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
22823                                }
22824                            }
22825                        }
22826                        return type;
22827                    },
22828                    mapSwatchTypeNumberToTypeCode(type) {
22829                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
22830                    },
22831                    isTextSwatch() {
22832                        const itemId = this._getItemId();
22833                        if (!this.$el || !itemId) return false;
22834                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
22835                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
22836                    },
22837
22838                    getSwatchText() {
22839                        const itemId = this._getItemId();
22840                        if (this.item) return this.item.label || '';
22841                        if (!this.$el || !itemId) return '';
22842                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
22843                        const options = attrId ? this.getOptions(attrId) : [];
22844                        const opt = options.find(o => o.id == itemId);
22845                        return opt ? opt.label : '';
22846                    },
22847                    getSwatchBackgroundStyle() {
22848                        const itemId = this._getItemId();
22849                        if (!this.$el || !itemId) return '';
22850                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
22851                        if (!attrId) return '';
22852                        const type = this.getSwatchType(attrId, itemId);
22853                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
22854                            this.swatchConfig[attrId][itemId] :
22855                            null;
22856                        if (!swatchData) return '';
22857                        if (type === "color") return 'background-color:' + swatchData.value;
22858                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
22859                        return '';
22860                    },
22861                    swatchOptionClasses() {
22862                        const itemId = this._getItemId();
22863                        if (!this.$el || !itemId) return {};
22864                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
22865                        return {
22866                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
22867                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
22868                            'w-6 h-6': !this.isTextSwatch()
22869                        }
22870                    },
22871
22872                    onFocusSwatchItem() {
22873                        const itemId = this._getItemId();
22874                        if (itemId) this.focusedLabel = itemId;
22875                    },
22876                    onChangeOption() {
22877                        const itemId = this._getItemId();
22878                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
22879                        if (attrId && itemId) this.changeOption(attrId, itemId);
22880                    },
22881                    changeOption(attributeId, value) {
22882                        if (value === '') {
22883                            return;
22884                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
22885                        } else {
22886                            this.selectedValues[attributeId] = value;
22887                        }
22888
22889                        this.findSimpleIndex();
22890                        this.findAllowedAttributeOptions();
22891                        this.updatePrices();
22892                        this.updateGallery();
22893
22894                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
22895                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
22896
22897                        const eventDetail = {
22898                            productId: this.productId,
22899                            optionId: attributeId,
22900                            value: value,
22901                            productIndex: this.productIndex || 0,
22902                            selectedValues: this.selectedValues,
22903                            candidates: candidates,
22904                            sourceElement: this.$el
22905                        };
22906
22907                        // Dispatch for Amasty
22908                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
22909                            detail: eventDetail
22910                        }));
22911
22912                        // Dispatch for Hyva listing
22913                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
22914                            detail: eventDetail
22915                        }));
22916                    },
22917
22918
22919                    clearOptionIfActive() {
22920                        const itemId = this._getItemId();
22921                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
22922                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
22923                            this.changeOption(attrId, '');
22924
22925                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
22926                            if (!input && this.$el?.querySelector) {
22927                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
22928                            }
22929                            if (!input && this.$el?.closest) {
22930                                const root = this.$el.closest('[data-product-id]') || this.$el;
22931                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
22932                            }
22933                            if (input) {
22934                                input.checked = false;
22935                            }
22936                        }
22937                    },
22938                    get optionIsEnabled() {
22939                        const itemId = this._getItemId();
22940                        if (!this.$el || !itemId) return true;
22941                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
22942                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
22943                        return !!allowedOptions.find(opt => opt.id == itemId);
22944                    },
22945                    get isSelected() {
22946                        const itemId = this._getItemId();
22947                        if (!this.$el || !itemId) return false;
22948                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
22949                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
22950                    },
22951                    get isSwatchRequired() {
22952                        if (!this.$el) return false;
22953                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
22954                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
22955                    },
22956                    focusedLabel: false,
22957                    activeTooltipItem: false,
22958                    tooltipPositionElement: false,
22959                    setActiveTooltipItem() {
22960                        const itemId = this._getItemId();
22961                        if (!this.$el || !itemId) return;
22962                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
22963                        this.activeTooltipItem = {
22964                            attribute: attrId,
22965                            item: itemId,
22966                            index: 0
22967                        };
22968                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
22969                    },
22970                    unsetActiveTooltipItem() {
22971                        this.activeTooltipItem = false;
22972                    }
22973                },
22974                confProdPreSelect()
22975            );
22976
22977            if (result.optionConfig && result.optionConfig.attributes) {
22978                const attributes = result.optionConfig.attributes;
22979                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
22980                    let source = attributes;
22981                    if (Array.isArray(attributes)) {
22982                        source = {};
22983                        attributes.forEach(attr => {
22984                            if (attr && attr.id) source[attr.id] = attr;
22985                        });
22986                    }
22987                    const values = Object.values(source);
22988                    const wrapper = Object.assign(values, source);
22989                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
22990                        value: true,
22991                        enumerable: false
22992                    });
22993                    result.optionConfig.attributes = wrapper;
22994                }
22995            }
22996
22997            return result;
22998        }
22999
23000        window.addEventListener('alpine:init', () => {
23001            Alpine.data('initConfigurableSwatchOptions_4044', initConfigurableSwatchOptions_4044);
23002        }, {
23003            once: true
23004        });
23005    </script>
23005
23006    
23007    <div x-data="initConfigurableSwatchOptions_4044" x-defer="intersect">
23008        <div class="pagebuilder-home-hidden">
23009                                            
23010                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
23011                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
23012                        <template x-if="showSwatches">
23013                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-4044-163" role="radiogroup" aria-label="Einband">
23014                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
23015                                    <div :data-option-id="item.id" style="display: contents">
23016                                        <div x-id="getSwatchOptionHtmlIdGroup">
23017    <template x-if="optionIsEnabled">
23018        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
23018self="unsetActiveTooltipItem">
23019            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-4044-163">
23020            <div>
23021                <template x-if="isTextSwatch">
23022                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
23023                </template>
23024                <template x-if="!optionIsActive(163, item.id)">
23025                    <div>
23026                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
23027                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
23028                        </svg>
23029                    </div>
23030                </template>
23031            </div>
23032        </label>
23033    </template>
23034</div>                                    </div>
23035                                </template>
23036                            </div>
23037                        </template>
23038                    </div>
23039                </div>
23040                    </div>
23041    </div>
23042            
23043                                                <div class="meta py-4 pagebuilder-home-hidden">
23044                <div x-data="initMarketingShortText_4044()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
23045                    <!-- Marketing short text -->
23046                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
23047                    </div>
23048
23049                    <!-- Short description -->
23050                                                                <div class="short-description">
23051                            Christian Bermes diskutiert in seinem Essay das Konzept der Meinung in einem grunds&auml;tzlichen Sinne. Er fragt danach, ob wir &uuml;berhaupt noch ein Verst&auml;ndnis von Meinungen als Meinungen besitzen. ...                            <a href="https://meiner.de/fmv_de/meinungskrise-und-meinungsbildung" class="underline">mehr</a>
23052                        </div>
23053                                    </div>
23054
23055                <!-- Series  -->
23056                                    <div class="mb-1">
23057                        <span class="sr-only">Reihe:</span>
23058                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
23059                            <span>Blaue Reihe</span>
23060                        </a>
23061                                            </div>
23062                
23063                
23064                                                    <div class="mb-1">
23065                        <span x-data="initEditionText_4044()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
23066                            <!-- Marketing short text -->
23067                            <span class="edition-text" x-html="editionText"></span>&nbsp;2022, 126 Seiten                        </span>
23068                    </div>
23069                
23070                            </div>
23071            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
23072                
23073                <div class="justify-end" x-data="initPriceBox()" @update-prices-4044.window="updatePrice($event.detail);">
23074                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="4044" data-price-box="product-id-4044"><span class="normal-price">
23075    <span x-data x-id="['product\u002Dprice\u002D4044']" class="price-container price-final_price tax weee">
23076            <span class="price-label">Ab</span>
23077                <span class="approx-price">ca. </span>
23078        <span :id="$id('product\u002Dprice\u002D4044')" data-price-amount="6.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">6,99&nbsp;&euro;</span></span>
23079        </span>
23080</span>
23081
23082
23083</div>                </div>
23084
23085                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
23086                                            <div class="open-access-container open-access-container-4044                    flex mt-4 ml-auto sm:mt-0 hidden">
23087                            <div class="text-gray-700">
23088                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
23089                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
23090                                        Kostenlos online lesen                                    </a>
23091                                </button>
23092                            </div>
23093                        </div>
23094                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Meinungskrise und Meinungsbildung" aria-label="In den Warenkorb Meinungskrise und Meinungsbildung" data-addto="cart">
23095                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
23096  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
230960 014 0z"></path>
23097</svg>
23098                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
23099                                        In den Warenkorb                                    </span>
23100                                </button>
23101                                                                                                                    
23102<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(4044)" aria-label="Zur Wunschliste hinzuf&uuml;gen Meinungskrise und Meinungsbildung" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
23103    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
23104  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
23105</svg>
23106</button>
23107                                    </div>
23108            </div>
23109        </div>
23110        
23110<script>
23111            function initMarketingShortText_4044() {
23112                var marketingShortTextConfig = {};
23113                if (typeof window.initConfigurableSwatchOptions_4044 === "function") {
23114                    var fullConfig = window.initConfigurableSwatchOptions_4044().optionConfig
23115                    var marketingShortTextConfig = fullConfig.marketing_short_text;
23116                }
23117                return {
23118                    marketingShortText: '',
23119                    config: marketingShortTextConfig,
23120                    productId: '4044',
23121                    getMarketingShortText(detail) {
23122                        this.marketingShortText = detail.productIndex ?
23123                            this.config[detail.productIndex] :
23124                            null;
23125                    },
23126                    eventListeners: {
23127                        ['@listing-configurable-selection-changed.window'](event) {
23128                            if (this.productId == event.detail.productId) {
23129                                this.getMarketingShortText(event.detail);
23130                            }
23131
23132                        }
23133                    }
23134                }
23135            }
23136
23137            function initEditionText_4044() {
23138                var editionTextConfig = {};
23139                if (typeof window.initConfigurableSwatchOptions_4044 === "function") {
23140                    var fullConfig = window.initConfigurableSwatchOptions_4044().optionConfig
23141                    var editionTextConfig = fullConfig.edition;
23142                }
23143                return {
23144                    editionText: '',
23145                    config: editionTextConfig,
23146                    productId: '4044',
23147                    getEditionText(detail) {
23148                        this.editionText = detail.productIndex ?
23149                            this.config[detail.productIndex] :
23150                            null;
23151                    },
23152                    eventListeners: {
23153                        ['@listing-configurable-selection-changed.window'](event) {
23154                            if (this.productId == event.detail.productId) {
23155                                this.getEditionText(event.detail);
23156                            }
23157
23158                        }
23159                    }
23160                }
23161            }
23162        </script>
23162
23163                    </form>
23164                    </div>
23165        
23166<div class="carousel-nav flex items-center justify-center flex-1 p-4">
23167    <button aria-label="Zur&uuml;ck" title="Zur&uuml;ck" class="glider-prev w-8 h-8 mr-1 text-black rounded-full outline-none focus:outline-none hidden">
23168        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true">
23169  <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"></path>
23170</svg>
23171    </button>
23172    <div role="tablist" class="glider-dots select-none flex flex-wrap mx-1 justify-center p-0 focus:outline-none"></div>
23173    <button aria-label="Weiter" title="Weiter" class="glider-next w-8 h-8 ml-1 text-black rounded-full outline-none focus:outline-none hidden">
23174        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true">
23175  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"></path>
23176</svg>
23177    </button>
23178</div>
23179    </div>
23180</div></div></div></div></div></div><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="" data-element="inner" data-pb-style="IJNNBS8"><h3 data-content-type="heading" data-appearance="default" data-element="main">Philosophische Bibliothek</h3><div class="pagebuilder-column-group card cmsp2-p-5" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-background-lazy-load="false" data-element="main" data-pb-style="HHRXWXR"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="OY6Q222"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="A3QU07G"><h4 data-content-type="heading" data-appearance="default" data-element="main">Texte aus 2400 Jahren Philosophiegeschichte</h4><div data-content-type="text" data-appearance="default" data-element="main" data-pb-style="VV1BAQX"><p id="N8HVAHN" style="text-align: left;">Philosophische Texte von der Antike bis zur Gegenwart sind Programm der&nbsp;<a href="/programm/reihen/philosophische-bibliothek">Philosophischen Bibliothek</a>. Jedes Jahr erscheinen in der &raquo;gr&uuml;nen Reihe&laquo; nach neuesten wissenschaftlichen Erkenntnissen erarbeitete Studienausgaben f&uuml;r alle, die es ernst meinen mit der Philosophie.</p>
23181<div id="box_infotext">
23182<p style="text-align: left;">Herausgegeben von f&uuml;hrenden Vertretern des Faches, eingeleitet und kommentiert, im Original, in &Uuml;bersetzung oder zweisprachig, stehen hier neben den Klassikern der Philosophiegeschichte auch weniger bekannte und bisher marginalisierte Texte, die es wiederzuentdecken gilt. Repr&auml;sentative Auswahl- und Gesamtausgaben sowie Studien- und W&ouml;rterb&uuml;cher erg&auml;nzen das Programm. Gegenw&auml;rtig sind &uuml;ber 500 Titel von etwa 160 Autoren aus den letzten 2400 Jahren lieferbar.</p>
23183<p style="text-align: left;">Die Philosophische Bibliothek (gegr. 1868) ist die &auml;lteste und umfangreichste Sammlung philosophischer Texte, betreibt aber keine museale R&uuml;ckschau auf geistesgeschichtliche Antiquit&auml;ten. Jeder einzelne Band schl&auml;gt eine Br&uuml;cke zwischen aktueller Forschung und philosophischem Studium. Sorgf&auml;ltigste Edition, Erl&auml;uterungen, Register und Bibliographien zeichnen diese Reihe aus, die zum Markenzeichen kritischer Textpr&auml;sentation geworden ist.</p>
23184<p style="text-align: left;">&nbsp;</p>
23185<p style="text-align: left;"><a href="/programm/reihen/philosophische-bibliothek"><img style="display: block; margin-left: auto; margin-right: auto; width: 75px; height: 75px;" src="https://meiner.de/media/wysiwyg/FMV/Signets-Logos/PhB_B_quad_sw.png" alt="Signet der Philosophischen Bibliothek" width="100" height="100"></a></p>
23186<p style="text-align: center;">&nbsp;</p>
23187</div></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="CB11K18"></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="ES6KTQP"><h4 data-content-type="heading" data-appearance="default" data-element="main">Aktuelle Neuerscheinungen &amp; Wiederver&ouml;ffentlichungen</h4><div data-content-type="products" data-appearance="carousel" data-autoplay="false" data-autoplay-speed="4000" data-infinite-loop="false" data-show-arrows="false" data-show-dots="true" data-carousel-mode="default" data-center-padding="90px" data-element="main">        <div class="glider-contain product-items widget-product-carou
23187sel">
23188        <div data-role="glider-content" class="mx-auto grid gap-4 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 relative overflow-y-hidden overflow-x-scroll">
23189                            
23190    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/47165/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk16064">
23191        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="47165">
23192                                    <a href="https://meiner.de/fmv_de/traktat-a-ber-die-drei-betra-ger-16064" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
23193            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-47165.window="$el.src = $event.detail" alt="Traktat &uuml;ber die drei Betr&uuml;ger" title="Traktat &uuml;ber die drei Betr&uuml;ger" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787344192_3.jpg" :style="{
23194                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
23195                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
23196            }">
23197                    </a>
23198        <div class="product-info flex flex-col flex-grow ">
23199                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
23200                                    <div class="mb-2 text-sm text-gray-500 font-medium">
23201                                                                                    <a href="https://meiner.de/fmv_de/person/Anonymus-4636/" class="mb-2">
23202                                    Anonymus                                                                    </a>
23203                                                                                                                                    </div>
23204                                <a class="product-item-link" href="https://meiner.de/fmv_de/traktat-a-ber-die-drei-betra-ger-16064">
23205                    Traktat &uuml;ber die drei Betr&uuml;ger                </a>
23206                            </div>
23207
23208            <div x-data="initEditionText_47165()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
23209                <!-- Marketing short text -->
23210                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
23211                </div>
23212            </div>
23213
23214                            <div class="py-1 grid  mb-4 ">
23215                    
23216                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":47165,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":47165,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"19306":"1","47092":"1"},"childProductsAlertStatus":{"19306":"0","47092":"0"},"indexMapping":{"163:15":19306,"163:8":47092},"availabilityMessages":{"19306":"Lieferbar innerhalb von 3-5 Tagen","47092":"Download sofort  verf\u00fcgbar"},"openAccess":{"47165":{"status":0},"19306":{"status":0},"47092":{"status":0}}},"availabilityMessages":{"19306":"Lieferbar innerhalb von 3-5 Tagen","47092":"Download sofort  verf\u00fcgbar"},"openAccess":{"47165":{"status":0},"19306":{"status":0},"47092":{"status":0}}}'>
23217        <template x-if="containerVisible">
23218                            <!-- Popup Trigger -->
23219                <div>
23220                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
23221                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
23222                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
23223  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
23224<title>bell</title></svg>
23225</span>
23226                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
23227
23228                    <!-- Popup Modal -->
23229                    <template x-if="showModal">
23230                        <template x-teleport=".page-wrapper">
23231                            <div x-cloak class="fixed inset-0 flex items-center justify-center
23232                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
23233                                <div class="relative bg-white rounded-lg shadow-xl
23234                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
23235                                    <div class="p-6">
23236                                        <!-- Subscription Form for Popup -->
23237                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
23238                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
23239                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
23240                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
23241
23242                                            <div class="flex flex-col gap-3">
23243                                                <div class="flex-grow grow">
23244                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
23245                                                        shadow-xs focus:outline-none focus:outline-hidden
23246                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
23247                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
23248                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
23249                                                </div>
23250                                                <input type="hidden" name="product_id" :value="currentProductId">
23251                                                <input type="hidden" name="type" value="email">
23252
23253                                                
23254                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
23255
23256                                                <div class="amxnotif_guest_action">
23257                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
23258                                                        rounded-md focus:outline-none
23259                                                        focus:outline-hidden focus:ring-2
23260                                                        focus:ring-offset-2 disabled:opacity-50
23261                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
23262                                                        Benachrichtigen                                                    </button>
23263                                                </div>
23264                                            </div>
23265
23266                                                                                            <div class="flex items-start pt-2">
23267                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
23268                                                        text-blue-600 border-gray-300 rounded-sm">
23269                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
23270                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
23271                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
23272                                                </div>
23273                                                                                    </form>
23274                                    </div>
23275
23276                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
23277                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
23278                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
23279  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
23280<title>x</title></svg>
23281                                    </button>
23282                                </div>
23283                            </div>
23284                        </template>
23285                    </template>
23286                </div>
23287                    </template>
23288    </div>
23289
23290<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_47165" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":47165,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"19306":"1","47092":"1"},"childProductsAlertStatus":{"19306":"0","47092":"0"}
23290,"indexMapping":"{\u0022163:15\u0022:19306,\u0022163:8\u0022:47092}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":47165,"availabilityMessages":{"19306":"Lieferbar innerhalb von 3-5 Tagen","47092":"Download sofort  verf\u00fcgbar"},"openAccess":{"47165":{"status":0},"19306":{"status":0},"47092":{"status":0}}}'>
23291    
23292    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
23293        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
23294        <span x-html="optionsLabelText"></span>
23295    </p>
23296</div>                </div>
23297            
23298                                
23298<script>
23299        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
23300            try {
23301                const attributes = (config && config.attributes) ? config.attributes : null;
23302                if (!attributes) return [];
23303                let attr = null;
23304                if (Array.isArray(attributes)) {
23305                    for (let i = 0; i < attributes.length; i++) {
23306                        const a = attributes[i];
23307                        if (a && a.id == attrId) {
23308                            attr = a;
23309                            break;
23310                        }
23311                    }
23312                } else {
23313                    attr = attributes[attrId];
23314                }
23315                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
23316            } catch (e) {
23317                return [];
23318            }
23319        };
23320
23321        function initConfigurableSwatchOptions_47165() {
23322            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["19306"]},{"id":"8","label":"PDF","products":["47092"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"19306":{"baseOldPrice":{"amount":21.401868158879},"oldPrice":{"amount":22.9},"basePrice":{"amount":21.401868158879},"finalPrice":{"amount":22.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47092":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":15.878503672897},"finalPrice":{"amount":16.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":14.27730992437},"finalPrice":{"amount":16.99},"isApproxPrice":null},"productId":"47165","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"19306":{"163":"15"},"47092":{"163":"8"}},"salable":{"163":{"15":["19306"],"8":["47092"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"19306":"004419","47092":"004420"},"output":{"19306":"Kartoniert","47092":"PDF"},"original_name":{"19306":"Trait\u00e9 des trois imposteurs","47092":"Trait\u00e9 des trois imposteurs"},"openaccess_license_link":{"19306":"","47092":""},"openaccess_license_name":{"19306":"","47092":""},"openaccess_external_link":{"19306":"","47092":""},"gpsr_safety_info":{"19306":"","47092":""},"description":{"19306":"Die legend\u00e4re Abhandlung \u00fcber die drei Betr\u00fcger (Moses, Jesus und Mohammed) z\u00e4hlt zu den herausragenden Schl\u00fcsseltexten der franz\u00f6sischen Aufkl\u00e4rung. Die Schrift markiert den \u00dcbergang von der rationalen Religionskritik zum konsequenten Atheismus in der Philosophie der Neuzeit und war z.B. auch f\u00fcr de Sade ein wichtiger Ausgangspunkt. Es gibt weder Gott noch das Jenseits, weder Freiheit noch Verantwortung \u2013 sondern der Mensch ist sterblich und Teil der Natur. So lautet die radikale, den Standpunkt der Deisten \u00fcberbietende Botschaft des gegen Ende des 17. Jahrhunderts entstandenen \u00bbTrait\u00e9 des trois imposteurs\u00ab, der die Lehren von Moses, Jesus und Mohammed als Lug und Trug zur\u00fcckweist. <br\/><br\/>Die legendenumwobene Schrift fand im 18. Jhd. (zun\u00e4chst in einer Vielzahl von Abschriften, ab 1768 im Druck) gro\u00dfe Verbreitung. Sie gilt als Schl\u00fcsseldokument f\u00fcr die Anf\u00e4nge und das Programm des strikt materialistischen Fl\u00fcgels der franz\u00f6sischen Aufkl\u00e4rung: Bereits 50 Jahre vor d'Holbach bot der \u00bbTrait\u00e9\u00ab den Aufriss f\u00fcr dessen \u00bbSyst\u00e8me de la nature\u00ab und war sp\u00e4ter f\u00fcr den Marquis de Sade der Ausgangspunkt f\u00fcr die radikale Desavouierung des Begriffs der Moral. Der unbekannte Verfasser des \u00bbTrait\u00e9\u00ab begriff sich nicht als Autor, sondern als Vermittler: Sein Text st\u00fctzt sich auf Anleihen bei Hobbes, Spinoza und Vanini, d.h. auf Paraphrasen und Umdeutungen in aufkl\u00e4rerischem Pathos. <br\/><br\/>Der Band pr\u00e4sentiert den Text in kritischer Edition (nach der Ausgabe von 1768) mit deutscher \u00dcbersetzung und kommentierenden Anmerkungen des Herausgebers. F\u00fcr die Neuausgabe hat der Herausgeber eine neue Einleitung verfasst und die Bibliographie \u00fcberarbeitet.","47092":"Die legend\u00e4re Abhandlung \u00fcber die drei Betr\u00fcger (Moses, Jesus und Mohammed) z\u00e4hlt zu den herausragenden Schl\u00fcsseltexten der franz\u00f6sischen Aufkl\u00e4rung. Die Schrift markiert den \u00dcbergang von der rationalen Religionskritik zum konsequenten Athe
23322ismus in der Philosophie der Neuzeit und war z.B. auch f\u00fcr de Sade ein wichtiger Ausgangspunkt. Es gibt weder Gott noch das Jenseits, weder Freiheit noch Verantwortung \u2013 sondern der Mensch ist sterblich und Teil der Natur. So lautet die radikale, den Standpunkt der Deisten \u00fcberbietende Botschaft des gegen Ende des 17. Jahrhunderts entstandenen \u00bbTrait\u00e9 des trois imposteurs\u00ab, der die Lehren von Moses, Jesus und Mohammed als Lug und Trug zur\u00fcckweist. <br\/><br\/>Die legendenumwobene Schrift fand im 18. Jhd. (zun\u00e4chst in einer Vielzahl von Abschriften, ab 1768 im Druck) gro\u00dfe Verbreitung. Sie gilt als Schl\u00fcsseldokument f\u00fcr die Anf\u00e4nge und das Programm des strikt materialistischen Fl\u00fcgels der franz\u00f6sischen Aufkl\u00e4rung: Bereits 50 Jahre vor d'Holbach bot der \u00bbTrait\u00e9\u00ab den Aufriss f\u00fcr dessen \u00bbSyst\u00e8me de la nature\u00ab und war sp\u00e4ter f\u00fcr den Marquis de Sade der Ausgangspunkt f\u00fcr die radikale Desavouierung des Begriffs der Moral. Der unbekannte Verfasser des \u00bbTrait\u00e9\u00ab begriff sich nicht als Autor, sondern als Vermittler: Sein Text st\u00fctzt sich auf Anleihen bei Hobbes, Spinoza und Vanini, d.h. auf Paraphrasen und Umdeutungen in aufkl\u00e4rerischem Pathos. <br\/><br\/>Der Band pr\u00e4sentiert den Text in kritischer Edition (nach der Ausgabe von 1768) mit deutscher \u00dcbersetzung und kommentierenden Anmerkungen des Herausgebers. F\u00fcr die Neuausgabe hat der Herausgeber eine neue Einleitung verfasst und die Bibliographie \u00fcberarbeitet."},"doi":{"19306":"","47092":"10.28937\/978-3-7873-4420-8"},"isbn":{"19306":"978-3-7873-4419-2","47092":"978-3-7873-4420-8"},"marketing_short_text":{"19306":"","47092":""},"recension_text":{"19306":"<div class=\"reviews\">\r\n<div class=\"review\">Schr\u00f6ders Kommentar ist ein philologisches Glanzst\u00fcck.<\/div>\r\n<div class=\"source\">Frankfurter Allgemeine, 12. Mai 1993<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Die Menschen \u2013 das war das Verhei\u00dfende des Textes \u2013 sollten von den Fesseln befreit werden, die sie in ihrem Handeln und Denken einschr\u00e4nkten, von den Fesseln einer Moral, die im Bunde mit einer fragw\u00fcrdigen, repressiven Herrschaft stand. Darum wollte der Autor auch unbedingt mit der Vorstellung aufr\u00e4umen, es g\u00e4be Strafen im Jenseits. [\u2026] Wer\u2019s darauf anlegt, dem liefert der Traktat noch heute eine Menge polemische Munition. Unter anderem deshalb wird er im laizistischen Frankreich wieder so gern gelesen. Wichtig bleibt das B\u00fcchlein auf jeden Fall in historischer Perspektive: gerade weil es uns an die Wurzeln jener entzauberten modernen Welt f\u00fchrt, in der wir heute leben \u2013 und f\u00fcr die, wie nichts sonst, der Atheismus zu einer signifikanten Position geworden ist.<\/div>\r\n<div class=\"source\">Winfried Schr\u00f6der (im ZEIT-Interview vom 20. Mai 2010)<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Ein wegweisendes Dokument des Atheismus! Es gibt weder Gott noch das Jenseits, weder Freiheit noch Verantwortung, sondern der Mensch ist sterblich und Teil der Natur.<\/div>\r\n<div class=\"source\">lehrerbibliothek.de<\/div>\r\n<\/div>","47092":"<div class=\"reviews\">\r\n<div class=\"review\">Schr\u00f6ders Kommentar ist ein philologisches Glanzst\u00fcck.<\/div>\r\n<div class=\"source\">Frankfurter Allgemeine, 12. Mai 1993<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Die Menschen \u2013 das war das Verhei\u00dfende des Textes \u2013 sollten von den Fesseln befreit werden, die sie in ihrem Handeln und Denken einschr\u00e4nkten, von den Fesseln einer Moral, die im Bunde mit einer fragw\u00fcrdigen, repressiven Herrschaft stand. Darum wollte der Autor auch unbedingt mit der Vorstellung aufr\u00e4umen, es g\u00e4be Strafen im Jenseits. [\u2026] Wer\u2019s darauf anlegt, dem liefert der Traktat noch heute eine Menge polemische Munition. Unter anderem deshalb wird er im laizistischen Frankreich wieder so gern gelesen. Wichtig bleibt das B\u00fcchlein auf jeden Fall in historischer Perspektive: gerade weil es uns an die Wurzeln jener entzauberten modernen Welt f\u00fchrt, in der wir heute leben \u2013 und f\u00fcr die, wie nichts sonst, der Atheismus zu einer signifikanten Position geworden ist.<\/div>\r\n<div class=\"source\">Winfried Schr\u00f6der (im ZEIT-Interview vom 20. Mai 2010)<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Ein wegweisendes Dokument des Atheismus! Es gibt weder Gott noch das Jense
23322its, weder Freiheit noch Verantwortung, sondern der Mensch ist sterblich und Teil der Natur.<\/div>\r\n<div class=\"source\">lehrerbibliothek.de<\/div>\r\n<\/div>"},"language":{"19306":"Franz\u00f6sisch-Deutsch","47092":""},"cover":{"19306":"Kartoniert","47092":""},"pages":{"19306":"LXVIII, 171 Seiten.","47092":"LXVIII, 171 Seiten."},"edition":{"19306":"2., durchgesehene Auflage mit neuer Einleitung und aktualisierter Bibliographie","47092":"2., durchgesehene Auflage mit neuer Einleitung und aktualisierter Bibliographie"},"pod":{"19306":"Nein","47092":"Nein"},"copyright_year":{"19306":"","47092":""},"vlb_tix_link":{"19306":"https:\/\/neu.vlbtix.de\/products\/9783787344192?type=gtin","47092":""},"defaultValues":{"163":"15"}};
23323            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
23324
23325            if (typeof window.amxnotif_wrap_attributes === 'function') {
23326                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
23327                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
23328            }
23329
23330            const configurableOptionsComponent = initConfigurableOptions(
23331                '47165',
23332                config
23333            );
23334            const swatchOptionsComponent = initSwatchOptions(
23335                swatchConfig
23336            );
23337
23338            // DWS - Configurable product preselect start
23339            const confProdPreSelect = () => {
23340                return {
23341                    preselectQuerystringItems() {
23342                        var data = {"id":"19306","output":"15"};
23343                        const urlQueryParams = new URLSearchParams(window.location.search);
23344
23345                                                this.$nextTick(() => {
23346                            setTimeout(() => {
23347                                const rootEl = this.$root || this.$el;
23348                                if (!rootEl) return;
23349
23350                                const applySelection = (attrCode, attrValue) => {
23351                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
23352
23353                                    const attributes = Object.values(this.optionConfig.attributes || {});
23354                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
23355
23356                                    if (targetAttr) {
23357                                        const attrId = String(targetAttr.id);
23358                                        const optionVal = String(attrValue);
23359
23360                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
23361
23362                                        if (inputEl) {
23363                                                                                        inputEl.click();
23364                                            inputEl.dispatchEvent(new Event('change', {
23365                                                bubbles: true
23366                                            }));
23367                                        } else {
23368                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
23369                                            if (selectEl) {
23370                                                selectEl.value = optionVal;
23371                                                selectEl.dispatchEvent(new Event('change', {
23372                                                    bubbles: true
23373                                                }));
23374                                            }
23375                                        }
23376
23377                                                                                this.changeOption(attrId, optionVal, false);
23378                                    }
23379                                };
23380
23381                                                                if (data && typeof data === 'object') {
23382                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
23383                                }
23384
23385                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
23386                                    if (attribute && attribute.code) {
23387                                        let optionValue = urlQueryParams.get(attribute.code);
23388                                        if (optionValue) {
23389                                            let optionId = false;
23390                                            const attributes = Object.values(this.optionConfig.attributes || {});
23391                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
23392
23393                                            let found = false;
23394                                            Object.values(targetAttr.options).map(option => {
23395                                                if (found === false && option.label === optionValue) {
23396                                                    optionId = option.id;
23397                                                    found = true;
23398                                                }
23399                                            });
23400
23401                                            const attrId = String(targetAttr.id);
23402                                            let optionVal = String(optionValue);
23403                                            if (found) {
23404                                                optionVal = String(optionId);
23405                                            }
23406
23407                                            applySelection(attribute.code, optionVal);
23408                                        }
23409                                    }
23410                                });
23411                            }, 100);
23412                        });
23413                    }
23414                }
23415            };
23416            // DWS - Configurable product preselect end
23417
23418            const result = Object.assign(
23419                configurableOptionsComponent,
23420                swatchOptionsComponent, {
23421                    productId: '47165',
23422                    productIndex: 0,
23423                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
23424                    showSwatches: false,
23425                    precalcOptions: {},
23426                    originalInit: configurableOptionsComponent.init,
23427                    init() {
23428                        try {
23429                            this.precalcOptions = {};
23430                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
23431                            this.preselectQuerystringItems();
23432                            if (Array.isArray(attrSource)) {
23433                                attrSource.forEach(attr => {
23434                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
23435                                });
23436                            } else if (attrSource && typeof attrSource === 'object') {
23437                                Object.keys(attrSource).forEach(id => {
23438                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
23439                                });
23440                            }
23441                        } catch (e) {
23442                            console.error('Pre-calc error:', e);
23443                        }
23444
23445                        if (typeof this.originalInit === 'function') {
23446                            this.originalInit();
23447                        }
23448
23449                        try {
23450                            this.initShowSwatchesIntersect();
23451                        } catch (e) {
23452                            console.error('intersect error:', e);
23453                        }
23454                    },
23455
23456                    updateGallery() {
23457                        if (!this.productIndex) return;
23458
23459                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
23460                                method: 'GET',
23461                                headers: {
23462                                    'Content-Type': 'application/json',
23463                                    'X-Requested-With': 'XMLHttpRequest'
23464                                }
23465                            })
23466                            .then(response => response.json())
23467                            .then(data => {
23468                                if (data && data.medium) {
23469                                    window.dispatchEvent(new CustomEvent("update-gallery-47165", {
23470                                        detail: data.medium
23471                                    }));
23472                                }
23473                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
23474                    },
23475
23476
23477                    initShowSwatchesIntersect() {
23478                        const observer = new IntersectionObserver(entries => {
23479                            if (entries[0].isIntersecting) {
23480                                this.showSwatches = true;
23481                                observer.disconnect();
23482                            }
23483                        }, {
23484                            rootMargin: '512px'
23485                        });
23486                        observer.observe(this.$el);
23487                    },
23488                    getOptions(attrId) {
23489                        return this.precalcOptions[attrId] || [];
23490                    },
23491                    getOptionsByAttrId() {
23492                        return this.getOptions(this.$el.dataset.attributeId);
23493                    },
23494                    _getItemId() {
23495                        if (this.item && this.item.id) return this.item.id;
23496                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
23497                    },
23498                    getSwatchOptionHtmlId() {
23499                        const itemId = this._getItemId();
23500                        return itemId ? this.$id(`attribute-option-47165-${itemId}`) : '';
23501                    },
23502                    getSwatchOptionHtmlIdGroup() {
23503                        const itemId = this._getItemId();
23504                        return itemId ? [`attribute-option-47165-${itemId}`] : [];
23505                    },
23506                    getAttributeSwatchData(attributeId) {
23507                        const data = Object.assign({}, this.swatchConfig[attributeId]);
23508                        if (data['additional_data']) {
23509                            try {
23510                                data['details'] = JSON.parse(data['additional_data']);
23511                            } catch (e) {
23512                                data['details'] = {};
23513                            }
23514                        }
23515                        return data;
23516                    },
23517                    getSwatchType(attributeId, optionId) {
23518                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
23519                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
23520                        }
23521                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
23522                            this.swatchConfig[attributeId].details.swatch_input_type :
23523                            "empty";
23524                        if (type === 'visual') {
23525                            const config = this.swatchConfig[attributeId];
23526                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
23527                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
23528                            }
23529                            // Fallback to first option type
23530                            for (const oId in config) {
23531                                if (config[oId] && typeof config[oId].type !== 'undefined') {
23532                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
23533                                }
23534                            }
23535                        }
23536                        return type;
23537                    },
23538                    mapSwatchTypeNumberToTypeCode(type) {
23539                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
23540                    },
23541                    isTextSwatch() {
23542                        const itemId = this._getItemId();
23543                        if (!this.$el || !itemId) return false;
23544                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
23545                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
23546                    },
23547
23548                    getSwatchText() {
23549                        const itemId = this._getItemId();
23550                        if (this.item) return this.item.label || '';
23551                        if (!this.$el || !itemId) return '';
23552                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
23553                        const options = attrId ? this.getOptions(attrId) : [];
23554                        const opt = options.find(o => o.id == itemId);
23555                        return opt ? opt.label : '';
23556                    },
23557                    getSwatchBackgroundStyle() {
23558                        const itemId = this._getItemId();
23559                        if (!this.$el || !itemId) return '';
23560                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
23561                        if (!attrId) return '';
23562                        const type = this.getSwatchType(attrId, itemId);
23563                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
23564                            this.swatchConfig[attrId][itemId] :
23565                            null;
23566                        if (!swatchData) return '';
23567                        if (type === "color") return 'background-color:' + swatchData.value;
23568                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
23569                        return '';
23570                    },
23571                    swatchOptionClasses() {
23572                        const itemId = this._getItemId();
23573                        if (!this.$el || !itemId) return {};
23574                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
23575                        return {
23576                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
23577                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
23578                            'w-6 h-6': !this.isTextSwatch()
23579                        }
23580                    },
23581
23582                    onFocusSwatchItem() {
23583                        const itemId = this._getItemId();
23584                        if (itemId) this.focusedLabel = itemId;
23585                    },
23586                    onChangeOption() {
23587                        const itemId = this._getItemId();
23588                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
23589                        if (attrId && itemId) this.changeOption(attrId, itemId);
23590                    },
23591                    changeOption(attributeId, value) {
23592                        if (value === '') {
23593                            return;
23594                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
23595                        } else {
23596                            this.selectedValues[attributeId] = value;
23597                        }
23598
23599                        this.findSimpleIndex();
23600                        this.findAllowedAttributeOptions();
23601                        this.updatePrices();
23602                        this.updateGallery();
23603
23604                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
23605                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
23606
23607                        const eventDetail = {
23608                            productId: this.productId,
23609                            optionId: attributeId,
23610                            value: value,
23611                            productIndex: this.productIndex || 0,
23612                            selectedValues: this.selectedValues,
23613                            candidates: candidates,
23614                            sourceElement: this.$el
23615                        };
23616
23617                        // Dispatch for Amasty
23618                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
23619                            detail: eventDetail
23620                        }));
23621
23622                        // Dispatch for Hyva listing
23623                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
23624                            detail: eventDetail
23625                        }));
23626                    },
23627
23628
23629                    clearOptionIfActive() {
23630                        const itemId = this._getItemId();
23631                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
23632                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
23633                            this.changeOption(attrId, '');
23634
23635                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
23636                            if (!input && this.$el?.querySelector) {
23637                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
23638                            }
23639                            if (!input && this.$el?.closest) {
23640                                const root = this.$el.closest('[data-product-id]') || this.$el;
23641                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
23642                            }
23643                            if (input) {
23644                                input.checked = false;
23645                            }
23646                        }
23647                    },
23648                    get optionIsEnabled() {
23649                        const itemId = this._getItemId();
23650                        if (!this.$el || !itemId) return true;
23651                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
23652                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
23653                        return !!allowedOptions.find(opt => opt.id == itemId);
23654                    },
23655                    get isSelected() {
23656                        const itemId = this._getItemId();
23657                        if (!this.$el || !itemId) return false;
23658                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
23659                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
23660                    },
23661                    get isSwatchRequired() {
23662                        if (!this.$el) return false;
23663                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
23664                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
23665                    },
23666                    focusedLabel: false,
23667                    activeTooltipItem: false,
23668                    tooltipPositionElement: false,
23669                    setActiveTooltipItem() {
23670                        const itemId = this._getItemId();
23671                        if (!this.$el || !itemId) return;
23672                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
23673                        this.activeTooltipItem = {
23674                            attribute: attrId,
23675                            item: itemId,
23676                            index: 0
23677                        };
23678                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
23679                    },
23680                    unsetActiveTooltipItem() {
23681                        this.activeTooltipItem = false;
23682                    }
23683                },
23684                confProdPreSelect()
23685            );
23686
23687            if (result.optionConfig && result.optionConfig.attributes) {
23688                const attributes = result.optionConfig.attributes;
23689                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
23690                    let source = attributes;
23691                    if (Array.isArray(attributes)) {
23692                        source = {};
23693                        attributes.forEach(attr => {
23694                            if (attr && attr.id) source[attr.id] = attr;
23695                        });
23696                    }
23697                    const values = Object.values(source);
23698                    const wrapper = Object.assign(values, source);
23699                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
23700                        value: true,
23701                        enumerable: false
23702                    });
23703                    result.optionConfig.attributes = wrapper;
23704                }
23705            }
23706
23707            return result;
23708        }
23709
23710        window.addEventListener('alpine:init', () => {
23711            Alpine.data('initConfigurableSwatchOptions_47165', initConfigurableSwatchOptions_47165);
23712        }, {
23713            once: true
23714        });
23715    </script>
23715
23716    
23717    <div x-data="initConfigurableSwatchOptions_47165" x-defer="intersect">
23718        <div class="pagebuilder-home-hidden">
23719                                            
23720                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
23721                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
23722                        <template x-if="showSwatches">
23723                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-47165-163" role="radiogroup" aria-label="Einband">
23724                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
23725                                    <div :data-option-id="item.id" style="display: contents">
23726                                        <div x-id="getSwatchOptionHtmlIdGroup">
23727    <template x-if="optionIsEnabled">
23728        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
23728self="unsetActiveTooltipItem">
23729            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-47165-163">
23730            <div>
23731                <template x-if="isTextSwatch">
23732                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
23733                </template>
23734                <template x-if="!optionIsActive(163, item.id)">
23735                    <div>
23736                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
23737                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
23738                        </svg>
23739                    </div>
23740                </template>
23741            </div>
23742        </label>
23743    </template>
23744</div>                                    </div>
23745                                </template>
23746                            </div>
23747                        </template>
23748                    </div>
23749                </div>
23750                    </div>
23751    </div>
23752            
23753                                                <div class="meta py-4 pagebuilder-home-hidden">
23754                <div x-data="initMarketingShortText_47165()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
23755                    <!-- Marketing short text -->
23756                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
23757                    </div>
23758
23759                    <!-- Short description -->
23760                                                                <div class="short-description">
23761                            Die legend&auml;re Abhandlung &uuml;ber die drei Betr&uuml;ger (Moses, Jesus und Mohammed) z&auml;hlt zu den herausragenden Schl&uuml;sseltexten der franz&ouml;sischen Aufkl&auml;rung. Die Schrift markiert den &Uuml;bergang von der ...                            <a href="https://meiner.de/fmv_de/traktat-a-ber-die-drei-betra-ger-16064" class="underline">mehr</a>
23762                        </div>
23763                                    </div>
23764
23765                <!-- Series  -->
23766                                    <div class="mb-1">
23767                        <span class="sr-only">Reihe:</span>
23768                        <a href="https://meiner.de/fmv_de/programm/reihen/philosophische-bibliothek">
23769                            <span>Philosophische Bibliothek</span>
23770                        </a>
23771                                                    452                                            </div>
23772                
23773                
23774                                                    <div class="mb-1">
23775                        <span x-data="initEditionText_47165()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
23776                            <!-- Marketing short text -->
23777                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, LXVIII, 171 Seiten.                        </span>
23778                    </div>
23779                
23780                            </div>
23781            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
23782                
23783                <div class="justify-end" x-data="initPriceBox()" @update-prices-47165.window="updatePrice($event.detail);">
23784                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="47165" data-price-box="product-id-47165"><span class="normal-price">
23785    <span x-data x-id="['product\u002Dprice\u002D47165']" class="price-container price-final_price tax weee">
23786            <span class="price-label">Ab</span>
23787                <span class="approx-price">ca. </span>
23788        <span :id="$id('product\u002Dprice\u002D47165')" data-price-amount="16.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">16,99&nbsp;&euro;</span></span>
23789        </span>
23790</span>
23791
23792
23793</div>                </div>
23794
23795                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
23796                                            <div class="open-access-container open-access-container-47165                    flex mt-4 ml-auto sm:mt-0 hidden">
23797                            <div class="text-gray-700">
23798                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
23799                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
23800                                        Kostenlos online lesen                                    </a>
23801                                </button>
23802                            </div>
23803                        </div>
23804                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Traktat &uuml;ber die drei Betr&uuml;ger" aria-label="In den Warenkorb Traktat &uuml;ber die drei Betr&uuml;ger" data-addto="cart">
23805                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
23806  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
23807</svg>
23808                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
23809                                        In den Warenkorb                                    </span>
23810                                </button>
23811                                                                                                                    
23812<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(47165)" aria-label="Zur Wunschliste hinzuf&uuml;gen Traktat &uuml;ber die drei Betr&uuml;ger" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
23813    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
23814  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
23815</svg>
23816</button>
23817                                    </div>
23818            </div>
23819        </div>
23820        
23820<script>
23821            function initMarketingShortText_47165() {
23822                var marketingShortTextConfig = {};
23823                if (typeof window.initConfigurableSwatchOptions_47165 === "function") {
23824                    var fullConfig = window.initConfigurableSwatchOptions_47165().optionConfig
23825                    var marketingShortTextConfig = fullConfig.marketing_short_text;
23826                }
23827                return {
23828                    marketingShortText: '',
23829                    config: marketingShortTextConfig,
23830                    productId: '47165',
23831                    getMarketingShortText(detail) {
23832                        this.marketingShortText = detail.productIndex ?
23833                            this.config[detail.productIndex] :
23834                            null;
23835                    },
23836                    eventListeners: {
23837                        ['@listing-configurable-selection-changed.window'](event) {
23838                            if (this.productId == event.detail.productId) {
23839                                this.getMarketingShortText(event.detail);
23840                            }
23841
23842                        }
23843                    }
23844                }
23845            }
23846
23847            function initEditionText_47165() {
23848                var editionTextConfig = {};
23849                if (typeof window.initConfigurableSwatchOptions_47165 === "function") {
23850                    var fullConfig = window.initConfigurableSwatchOptions_47165().optionConfig
23851                    var editionTextConfig = fullConfig.edition;
23852                }
23853                return {
23854                    editionText: '',
23855                    config: editionTextConfig,
23856                    productId: '47165',
23857                    getEditionText(detail) {
23858                        this.editionText = detail.productIndex ?
23859                            this.config[detail.productIndex] :
23860                            null;
23861                    },
23862                    eventListeners: {
23863                        ['@listing-configurable-selection-changed.window'](event) {
23864                            if (this.productId == event.detail.productId) {
23865                                this.getEditionText(event.detail);
23866                            }
23867
23868                        }
23869                    }
23870                }
23871            }
23872        </script>
23872
23873                    </form>
23874                            
23875    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/46708/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21370">
23876        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="46708">
23877                                    <a href="https://meiner.de/fmv_de/der-briefwechsel-mit-constantijn-huygens-21370" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
23878            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-46708.window="$el.src = $event.detail" alt="Der Briefwechsel mit Constantijn Huygens" title="Der Briefwechsel mit Constantijn Huygens" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351060_1.jpg" :style="{
23879                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
23880                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
23881            }">
23882                    </a>
23883        <div class="product-info flex flex-col flex-grow ">
23884                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
23885                                    <div class="mb-2 text-sm text-gray-500 font-medium">
23886                                                                                    <a href="https://meiner.de/fmv_de/person/Rene-Descartes-3688/" class="mb-2">
23887                                    Ren&eacute; Descartes                                                                    </a>
23888                                                                                                                                    </div>
23889                                <a class="product-item-link" href="https://meiner.de/fmv_de/der-briefwechsel-mit-constantijn-huygens-21370">
23890                    Der Briefwechsel mit Constantijn Huygens                </a>
23891                            </div>
23892
23893            <div x-data="initEditionText_46708()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
23894                <!-- Marketing short text -->
23895                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
23896                </div>
23897            </div>
23898
23899                            <div class="py-1 grid  mb-4 ">
23900                    
23901                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":46708,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":46708,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46502":"1","46771":"1"},"childProductsAlertStatus":{"46502":"0","46771":"0"},"indexMapping":{"163:17":46502,"163:8":46771},"availabilityMessages":{"46502":"Lieferbar innerhalb von 3-5 Tagen","46771":"Download sofort  verf\u00fcgbar"},"openAccess":{"46708":{"status":0},"46502":{"status":0},"46771":{"status":0}}},"availabilityMessages":{"46502":"Lieferbar innerhalb von 3-5 Tagen","46771":"Download sofort  verf\u00fcgbar"},"openAccess":{"46708":{"status":0},"46502":{"status":0},"46771":{"status":0}}}'>
23902        <template x-if="containerVisible">
23903                            <!-- Popup Trigger -->
23904                <div>
23905                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
23906                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
23907                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
23908  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
23909<title>bell</title></svg>
23910</span>
23911                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
23912
23913                    <!-- Popup Modal -->
23914                    <template x-if="showModal">
23915                        <template x-teleport=".page-wrapper">
23916                            <div x-cloak class="fixed inset-0 flex items-center justify-center
23917                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
23918                                <div class="relative bg-white rounded-lg shadow-xl
23919                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
23920                                    <div class="p-6">
23921                                        <!-- Subscription Form for Popup -->
23922                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
23923                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
23924                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
23925                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
23926
23927                                            <div class="flex flex-col gap-3">
23928                                                <div class="flex-grow grow">
23929                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
23930                                                        shadow-xs focus:outline-none focus:outline-hidden
23931                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
23932                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
23933                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
23934                                                </div>
23935                                                <input type="hidden" name="product_id" :value="currentProductId">
23936                                                <input type="hidden" name="type" value="email">
23937
23938                                                
23939                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
23940
23941                                                <div class="amxnotif_guest_action">
23942                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
23943                                                        rounded-md focus:outline-none
23944                                                        focus:outline-hidden focus:ring-2
23945                                                        focus:ring-offset-2 disabled:opacity-50
23946                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
23947                                                        Benachrichtigen                                                    </button>
23948                                                </div>
23949                                            </div>
23950
23951                                                                                            <div class="flex items-start pt-2">
23952                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
23953                                                        text-blue-600 border-gray-300 rounded-sm">
23954                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
23955                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
23956                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
23957                                                </div>
23958                                                                                    </form>
23959                                    </div>
23960
23961                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
23962                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
23963                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
23964  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
23965<title>x</title></svg>
23966                                    </button>
23967                                </div>
23968                            </div>
23969                        </template>
23970                    </template>
23971                </div>
23972                    </template>
23973    </div>
23974
23975<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_46708" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":46708,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46502":"1","46771":"1"},"childProductsAlertStatus":{"46502":"0","46771":"0"},"indexMapping":"{\u0022163:17\u0022:46502,\u0022163:8\u0022:46771}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":46708,"availabilityMessages":{"46502":"Lieferbar innerhalb von 3-5 Tagen","46771":"Download sofort  verf\u00fcgbar"},"openAccess":{"46708":{"status":0},"46502":{"status":0},"46771":{"status":0}}}'>
23976    
23977    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
23978        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
23979        <span x-html="optionsLabelText"></span>
23980    </p>
23981</div>                </div>
23982            
23983                                
23983<script>
23984        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
23985            try {
23986                const attributes = (config && config.attributes) ? config.attributes : null;
23987                if (!attributes) return [];
23988                let attr = null;
23989                if (Array.isArray(attributes)) {
23990                    for (let i = 0; i < attributes.length; i++) {
23991                        const a = attributes[i];
23992                        if (a && a.id == attrId) {
23993                            attr = a;
23994                            break;
23995                        }
23996                    }
23997                } else {
23998                    attr = attributes[attrId];
23999                }
24000                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
24001            } catch (e) {
24002                return [];
24003            }
24004        };
24005
24006        function initConfigurableSwatchOptions_46708() {
24007            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"17","label":"Leinen","products":["46502"]},{"id":"8","label":"PDF","products":["46771"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46502":{"baseOldPrice":{"amount":83.177569093458},"oldPrice":{"amount":89},"basePrice":{"amount":83.177569093458},"finalPrice":{"amount":89},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46771":{"baseOldPrice":{"amount":63.542055074766},"oldPrice":{"amount":67.99},"basePrice":{"amount":63.542055074766},"finalPrice":{"amount":67.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":63.542055074766},"oldPrice":{"amount":67.99},"basePrice":{"amount":57.134452781513},"finalPrice":{"amount":67.99},"isApproxPrice":null},"productId":"46708","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46502":{"163":"17"},"46771":{"163":"8"}},"salable":{"163":{"17":["46502"],"8":["46771"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"46502":"005105","46771":"005106"},"output":{"46502":"Leinen","46771":"PDF"},"original_name":{"46502":"","46771":""},"openaccess_license_link":{"46502":"","46771":""},"openaccess_license_name":{"46502":"","46771":""},"openaccess_external_link":{"46502":"","46771":""},"gpsr_safety_info":{"46502":"","46771":""},"description":{"46502":"Mit diesem Band liegt Descartes\u2019 umfangreicher Briefwechsel mit seinem langj\u00e4hrigen Freund Constantijn Huygens (1596\u20131687), dem Dichter, Musiker und vielseitig wissenschaftlich interessierten Diplomaten im Dienst des Hauses Oranien-Nassau, erstmals auf Deutsch vor.<br\/><br\/>Dieser Band in der Reihe der kongenialen Neu\u00fcbersetzungen des Descartes\u2019schen Werks durch Christian Wohlers enth\u00e4lt Briefe von und an Ren\u00e9 Descartes aus der Zeit von 1631 bis 1649, also \u00fcber fast die gesamte Zeit seines Aufenthalts in den Niederlanden bis kurz vor seinem Tod 1650 in Stockholm. Den gr\u00f6\u00dften Anteil daran macht der erhaltene Teil des Briefwechsels mit Huygens aus. Constantijn Huygens gilt als einer der bedeutendsten Dichter der Niederlande im 17. Jahrhundert, aber er spielte auch mehrere Instrumente, komponierte hunderte von St\u00fccken und war vielseitig wissenschaftlich interessiert, vor allem hinsichtlich der Optik. Der Briefwechsel dokumentiert u. a. seine vielf\u00e4ltigen Anregungen und Hilfestellungen in Bezug auf die ja auch von Descartes mit Nachdruck betriebenen Versuche einer Weiterentwicklung des Teleskops.<br\/><br\/>Hinzugenommen wurden weitere Korrespondenzen Descartes\u2019, u. a. mit David le Leu de Wilhelm, dem Mathematiker und Orientalisten Jacob Golius, einzelne St\u00fccke aus Descartes\u2019 Korrespondenz mit Alphonse Pollot und Briefe Descartes\u2019 an seinen langj\u00e4hrigen Freund Anton Studler van Surck.","46771":"Mit diesem Band liegt Descartes\u2019 umfangreicher Briefwechsel mit seinem langj\u00e4hrigen Freund Constantijn Huygens (1596\u20131687), dem Dichter, Musiker und vielseitig wissenschaftlich interessierten Diplomaten im Dienst des Hauses Oranien-Nassau, erstmals auf Deutsch vor.<br\/><br\/>Dieser Band in der Reihe der kongenialen Neu\u00fcbersetzungen des Descartes\u2019schen Werks durch Christian Wohlers enth\u00e4lt Briefe von und an Ren\u00e9 Descartes aus der Zeit von 1631 bis 1649, also \u00fcber fast die gesamte Zeit seines Aufenthalts in de
24007n Niederlanden bis kurz vor seinem Tod 1650 in Stockholm. Den gr\u00f6\u00dften Anteil daran macht der erhaltene Teil des Briefwechsels mit Huygens aus. Constantijn Huygens gilt als einer der bedeutendsten Dichter der Niederlande im 17. Jahrhundert, aber er spielte auch mehrere Instrumente, komponierte hunderte von St\u00fccken und war vielseitig wissenschaftlich interessiert, vor allem hinsichtlich der Optik. Der Briefwechsel dokumentiert u. a. seine vielf\u00e4ltigen Anregungen und Hilfestellungen in Bezug auf die ja auch von Descartes mit Nachdruck betriebenen Versuche einer Weiterentwicklung des Teleskops.<br\/><br\/>Hinzugenommen wurden weitere Korrespondenzen Descartes\u2019, u. a. mit David le Leu de Wilhelm, dem Mathematiker und Orientalisten Jacob Golius, einzelne St\u00fccke aus Descartes\u2019 Korrespondenz mit Alphonse Pollot und Briefe Descartes\u2019 an seinen langj\u00e4hrigen Freund Anton Studler van Surck."},"doi":{"46502":"","46771":"10.28937\/978-3-7873-5106-0"},"isbn":{"46502":"978-3-7873-5105-3","46771":"978-3-7873-5106-0"},"marketing_short_text":{"46502":"","46771":""},"recension_text":{"46502":"","46771":""},"language":{"46502":"","46771":""},"cover":{"46502":"Leinen","46771":""},"pages":{"46502":"XXXII, 442 Seiten.","46771":"XXXII, 442 Seiten."},"edition":{"46502":"","46771":"Unver\u00e4ndertes eBook der 1. Auflage von 2026"},"pod":{"46502":"Nein","46771":"Nein"},"copyright_year":{"46502":"","46771":""},"vlb_tix_link":{"46502":"https:\/\/neu.vlbtix.de\/products\/9783787351053?type=gtin","46771":""},"defaultValues":{"163":"17"}};
24008            const swatchConfig = {"163":{"17":{"type":"0","value":"Leinen","label":"Leinen"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
24009
24010            if (typeof window.amxnotif_wrap_attributes === 'function') {
24011                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
24012                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
24013            }
24014
24015            const configurableOptionsComponent = initConfigurableOptions(
24016                '46708',
24017                config
24018            );
24019            const swatchOptionsComponent = initSwatchOptions(
24020                swatchConfig
24021            );
24022
24023            // DWS - Configurable product preselect start
24024            const confProdPreSelect = () => {
24025                return {
24026                    preselectQuerystringItems() {
24027                        var data = {"id":"46502","output":"17"};
24028                        const urlQueryParams = new URLSearchParams(window.location.search);
24029
24030                                                this.$nextTick(() => {
24031                            setTimeout(() => {
24032                                const rootEl = this.$root || this.$el;
24033                                if (!rootEl) return;
24034
24035                                const applySelection = (attrCode, attrValue) => {
24036                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
24037
24038                                    const attributes = Object.values(this.optionConfig.attributes || {});
24039                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
24040
24041                                    if (targetAttr) {
24042                                        const attrId = String(targetAttr.id);
24043                                        const optionVal = String(attrValue);
24044
24045                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
24046
24047                                        if (inputEl) {
24048                                                                                        inputEl.click();
24049                                            inputEl.dispatchEvent(new Event('change', {
24050                                                bubbles: true
24051                                            }));
24052                                        } else {
24053                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
24054                                            if (selectEl) {
24055                                                selectEl.value = optionVal;
24056                                                selectEl.dispatchEvent(new Event('change', {
24057                                                    bubbles: true
24058                                                }));
24059                                            }
24060                                        }
24061
24062                                                                                this.changeOption(attrId, optionVal, false);
24063                                    }
24064                                };
24065
24066                                                                if (data && typeof data === 'object') {
24067                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
24068                                }
24069
24070                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
24071                                    if (attribute && attribute.code) {
24072                                        let optionValue = urlQueryParams.get(attribute.code);
24073                                        if (optionValue) {
24074                                            let optionId = false;
24075                                            const attributes = Object.values(this.optionConfig.attributes || {});
24076                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
24077
24078                                            let found = false;
24079                                            Object.values(targetAttr.options).map(option => {
24080                                                if (found === false && option.label === optionValue) {
24081                                                    optionId = option.id;
24082                                                    found = true;
24083                                                }
24084                                            });
24085
24086                                            const attrId = String(targetAttr.id);
24087                                            let optionVal = String(optionValue);
24088                                            if (found) {
24089                                                optionVal = String(optionId);
24090                                            }
24091
24092                                            applySelection(attribute.code, optionVal);
24093                                        }
24094                                    }
24095                                });
24096                            }, 100);
24097                        });
24098                    }
24099                }
24100            };
24101            // DWS - Configurable product preselect end
24102
24103            const result = Object.assign(
24104                configurableOptionsComponent,
24105                swatchOptionsComponent, {
24106                    productId: '46708',
24107                    productIndex: 0,
24108                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
24109                    showSwatches: false,
24110                    precalcOptions: {},
24111                    originalInit: configurableOptionsComponent.init,
24112                    init() {
24113                        try {
24114                            this.precalcOptions = {};
24115                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
24116                            this.preselectQuerystringItems();
24117                            if (Array.isArray(attrSource)) {
24118                                attrSource.forEach(attr => {
24119                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
24120                                });
24121                            } else if (attrSource && typeof attrSource === 'object') {
24122                                Object.keys(attrSource).forEach(id => {
24123                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
24124                                });
24125                            }
24126                        } catch (e) {
24127                            console.error('Pre-calc error:', e);
24128                        }
24129
24130                        if (typeof this.originalInit === 'function') {
24131                            this.originalInit();
24132                        }
24133
24134                        try {
24135                            this.initShowSwatchesIntersect();
24136                        } catch (e) {
24137                            console.error('intersect error:', e);
24138                        }
24139                    },
24140
24141                    updateGallery() {
24142                        if (!this.productIndex) return;
24143
24144                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
24145                                method: 'GET',
24146                                headers: {
24147                                    'Content-Type': 'application/json',
24148                                    'X-Requested-With': 'XMLHttpRequest'
24149                                }
24150                            })
24151                            .then(response => response.json())
24152                            .then(data => {
24153                                if (data && data.medium) {
24154                                    window.dispatchEvent(new CustomEvent("update-gallery-46708", {
24155                                        detail: data.medium
24156                                    }));
24157                                }
24158                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
24159                    },
24160
24161
24162                    initShowSwatchesIntersect() {
24163                        const observer = new IntersectionObserver(entries => {
24164                            if (entries[0].isIntersecting) {
24165                                this.showSwatches = true;
24166                                observer.disconnect();
24167                            }
24168                        }, {
24169                            rootMargin: '512px'
24170                        });
24171                        observer.observe(this.$el);
24172                    },
24173                    getOptions(attrId) {
24174                        return this.precalcOptions[attrId] || [];
24175                    },
24176                    getOptionsByAttrId() {
24177                        return this.getOptions(this.$el.dataset.attributeId);
24178                    },
24179                    _getItemId() {
24180                        if (this.item && this.item.id) return this.item.id;
24181                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
24182                    },
24183                    getSwatchOptionHtmlId() {
24184                        const itemId = this._getItemId();
24185                        return itemId ? this.$id(`attribute-option-46708-${itemId}`) : '';
24186                    },
24187                    getSwatchOptionHtmlIdGroup() {
24188                        const itemId = this._getItemId();
24189                        return itemId ? [`attribute-option-46708-${itemId}`] : [];
24190                    },
24191                    getAttributeSwatchData(attributeId) {
24192                        const data = Object.assign({}, this.swatchConfig[attributeId]);
24193                        if (data['additional_data']) {
24194                            try {
24195                                data['details'] = JSON.parse(data['additional_data']);
24196                            } catch (e) {
24197                                data['details'] = {};
24198                            }
24199                        }
24200                        return data;
24201                    },
24202                    getSwatchType(attributeId, optionId) {
24203                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
24204                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
24205                        }
24206                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
24207                            this.swatchConfig[attributeId].details.swatch_input_type :
24208                            "empty";
24209                        if (type === 'visual') {
24210                            const config = this.swatchConfig[attributeId];
24211                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
24212                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
24213                            }
24214                            // Fallback to first option type
24215                            for (const oId in config) {
24216                                if (config[oId] && typeof config[oId].type !== 'undefined') {
24217                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
24218                                }
24219                            }
24220                        }
24221                        return type;
24222                    },
24223                    mapSwatchTypeNumberToTypeCode(type) {
24224                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
24225                    },
24226                    isTextSwatch() {
24227                        const itemId = this._getItemId();
24228                        if (!this.$el || !itemId) return false;
24229                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
24230                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
24231                    },
24232
24233                    getSwatchText() {
24234                        const itemId = this._getItemId();
24235                        if (this.item) return this.item.label || '';
24236                        if (!this.$el || !itemId) return '';
24237                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
24238                        const options = attrId ? this.getOptions(attrId) : [];
24239                        const opt = options.find(o => o.id == itemId);
24240                        return opt ? opt.label : '';
24241                    },
24242                    getSwatchBackgroundStyle() {
24243                        const itemId = this._getItemId();
24244                        if (!this.$el || !itemId) return '';
24245                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
24246                        if (!attrId) return '';
24247                        const type = this.getSwatchType(attrId, itemId);
24248                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
24249                            this.swatchConfig[attrId][itemId] :
24250                            null;
24251                        if (!swatchData) return '';
24252                        if (type === "color") return 'background-color:' + swatchData.value;
24253                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
24254                        return '';
24255                    },
24256                    swatchOptionClasses() {
24257                        const itemId = this._getItemId();
24258                        if (!this.$el || !itemId) return {};
24259                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
24260                        return {
24261                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
24262                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
24263                            'w-6 h-6': !this.isTextSwatch()
24264                        }
24265                    },
24266
24267                    onFocusSwatchItem() {
24268                        const itemId = this._getItemId();
24269                        if (itemId) this.focusedLabel = itemId;
24270                    },
24271                    onChangeOption() {
24272                        const itemId = this._getItemId();
24273                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
24274                        if (attrId && itemId) this.changeOption(attrId, itemId);
24275                    },
24276                    changeOption(attributeId, value) {
24277                        if (value === '') {
24278                            return;
24279                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
24280                        } else {
24281                            this.selectedValues[attributeId] = value;
24282                        }
24283
24284                        this.findSimpleIndex();
24285                        this.findAllowedAttributeOptions();
24286                        this.updatePrices();
24287                        this.updateGallery();
24288
24289                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
24290                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
24291
24292                        const eventDetail = {
24293                            productId: this.productId,
24294                            optionId: attributeId,
24295                            value: value,
24296                            productIndex: this.productIndex || 0,
24297                            selectedValues: this.selectedValues,
24298                            candidates: candidates,
24299                            sourceElement: this.$el
24300                        };
24301
24302                        // Dispatch for Amasty
24303                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
24304                            detail: eventDetail
24305                        }));
24306
24307                        // Dispatch for Hyva listing
24308                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
24309                            detail: eventDetail
24310                        }));
24311                    },
24312
24313
24314                    clearOptionIfActive() {
24315                        const itemId = this._getItemId();
24316                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
24317                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
24318                            this.changeOption(attrId, '');
24319
24320                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
24321                            if (!input && this.$el?.querySelector) {
24322                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
24323                            }
24324                            if (!input && this.$el?.closest) {
24325                                const root = this.$el.closest('[data-product-id]') || this.$el;
24326                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
24327                            }
24328                            if (input) {
24329                                input.checked = false;
24330                            }
24331                        }
24332                    },
24333                    get optionIsEnabled() {
24334                        const itemId = this._getItemId();
24335                        if (!this.$el || !itemId) return true;
24336                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
24337                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
24338                        return !!allowedOptions.find(opt => opt.id == itemId);
24339                    },
24340                    get isSelected() {
24341                        const itemId = this._getItemId();
24342                        if (!this.$el || !itemId) return false;
24343                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
24344                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
24345                    },
24346                    get isSwatchRequired() {
24347                        if (!this.$el) return false;
24348                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
24349                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
24350                    },
24351                    focusedLabel: false,
24352                    activeTooltipItem: false,
24353                    tooltipPositionElement: false,
24354                    setActiveTooltipItem() {
24355                        const itemId = this._getItemId();
24356                        if (!this.$el || !itemId) return;
24357                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
24358                        this.activeTooltipItem = {
24359                            attribute: attrId,
24360                            item: itemId,
24361                            index: 0
24362                        };
24363                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
24364                    },
24365                    unsetActiveTooltipItem() {
24366                        this.activeTooltipItem = false;
24367                    }
24368                },
24369                confProdPreSelect()
24370            );
24371
24372            if (result.optionConfig && result.optionConfig.attributes) {
24373                const attributes = result.optionConfig.attributes;
24374                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
24375                    let source = attributes;
24376                    if (Array.isArray(attributes)) {
24377                        source = {};
24378                        attributes.forEach(attr => {
24379                            if (attr && attr.id) source[attr.id] = attr;
24380                        });
24381                    }
24382                    const values = Object.values(source);
24383                    const wrapper = Object.assign(values, source);
24384                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
24385                        value: true,
24386                        enumerable: false
24387                    });
24388                    result.optionConfig.attributes = wrapper;
24389                }
24390            }
24391
24392            return result;
24393        }
24394
24395        window.addEventListener('alpine:init', () => {
24396            Alpine.data('initConfigurableSwatchOptions_46708', initConfigurableSwatchOptions_46708);
24397        }, {
24398            once: true
24399        });
24400    </script>
24400
24401    
24402    <div x-data="initConfigurableSwatchOptions_46708" x-defer="intersect">
24403        <div class="pagebuilder-home-hidden">
24404                                            
24405                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
24406                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
24407                        <template x-if="showSwatches">
24408                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-46708-163" role="radiogroup" aria-label="Einband">
24409                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
24410                                    <div :data-option-id="item.id" style="display: contents">
24411                                        <div x-id="getSwatchOptionHtmlIdGroup">
24412    <template x-if="optionIsEnabled">
24413        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
24413self="unsetActiveTooltipItem">
24414            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-46708-163">
24415            <div>
24416                <template x-if="isTextSwatch">
24417                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
24418                </template>
24419                <template x-if="!optionIsActive(163, item.id)">
24420                    <div>
24421                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
24422                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
24423                        </svg>
24424                    </div>
24425                </template>
24426            </div>
24427        </label>
24428    </template>
24429</div>                                    </div>
24430                                </template>
24431                            </div>
24432                        </template>
24433                    </div>
24434                </div>
24435                    </div>
24436    </div>
24437            
24438                                                <div class="meta py-4 pagebuilder-home-hidden">
24439                <div x-data="initMarketingShortText_46708()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
24440                    <!-- Marketing short text -->
24441                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
24442                    </div>
24443
24444                    <!-- Short description -->
24445                                                                <div class="short-description">
24446                            Mit diesem Band liegt Descartes&rsquo; umfangreicher Briefwechsel mit seinem langj&auml;hrigen Freund Constantijn Huygens (1596&ndash;1687), dem Dichter, Musiker und vielseitig wissenschaftlich interessierten ...                            <a href="https://meiner.de/fmv_de/der-briefwechsel-mit-constantijn-huygens-21370" class="underline">mehr</a>
24447                        </div>
24448                                    </div>
24449
24450                <!-- Series  -->
24451                                    <div class="mb-1">
24452                        <span class="sr-only">Reihe:</span>
24453                        <a href="https://meiner.de/fmv_de/programm/reihen/philosophische-bibliothek">
24454                            <span>Philosophische Bibliothek</span>
24455                        </a>
24456                                                    789                                            </div>
24457                
24458                
24459                                                    <div class="mb-1">
24460                        <span x-data="initEditionText_46708()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
24461                            <!-- Marketing short text -->
24462                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, XXXII, 442 Seiten.                        </span>
24463                    </div>
24464                
24465                            </div>
24466            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
24467                
24468                <div class="justify-end" x-data="initPriceBox()" @update-prices-46708.window="updatePrice($event.detail);">
24469                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="46708" data-price-box="product-id-46708"><span class="normal-price">
24470    <span x-data x-id="['product\u002Dprice\u002D46708']" class="price-container price-final_price tax weee">
24471            <span class="price-label">Ab</span>
24472                <span class="approx-price">ca. </span>
24473        <span :id="$id('product\u002Dprice\u002D46708')" data-price-amount="67.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">67,99&nbsp;&euro;</span></span>
24474        </span>
24475</span>
24476
24477
24478</div>                </div>
24479
24480                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
24481                                            <div class="open-access-container open-access-container-46708                    flex mt-4 ml-auto sm:mt-0 hidden">
24482                            <div class="text-gray-700">
24483                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
24484                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
24485                                        Kostenlos online lesen                                    </a>
24486                                </button>
24487                            </div>
24488                        </div>
24489                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Der Briefwechsel mit Constantijn Huygens" aria-label="In den Warenkorb Der Briefwechsel mit Constantijn Huygens" data-addto="cart">
24490                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
24491  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
24492</svg>
24493                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
24494                                        In den Warenkorb                                    </span>
24495                                </button>
24496                                                                                                                    
24497<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(46708)" aria-label="Zur Wunschliste hinzuf&uuml;gen Der Briefwechsel mit Constantijn Huygens" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
24498    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
24499  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
24500</svg>
24501</button>
24502                                    </div>
24503            </div>
24504        </div>
24505        
24505<script>
24506            function initMarketingShortText_46708() {
24507                var marketingShortTextConfig = {};
24508                if (typeof window.initConfigurableSwatchOptions_46708 === "function") {
24509                    var fullConfig = window.initConfigurableSwatchOptions_46708().optionConfig
24510                    var marketingShortTextConfig = fullConfig.marketing_short_text;
24511                }
24512                return {
24513                    marketingShortText: '',
24514                    config: marketingShortTextConfig,
24515                    productId: '46708',
24516                    getMarketingShortText(detail) {
24517                        this.marketingShortText = detail.productIndex ?
24518                            this.config[detail.productIndex] :
24519                            null;
24520                    },
24521                    eventListeners: {
24522                        ['@listing-configurable-selection-changed.window'](event) {
24523                            if (this.productId == event.detail.productId) {
24524                                this.getMarketingShortText(event.detail);
24525                            }
24526
24527                        }
24528                    }
24529                }
24530            }
24531
24532            function initEditionText_46708() {
24533                var editionTextConfig = {};
24534                if (typeof window.initConfigurableSwatchOptions_46708 === "function") {
24535                    var fullConfig = window.initConfigurableSwatchOptions_46708().optionConfig
24536                    var editionTextConfig = fullConfig.edition;
24537                }
24538                return {
24539                    editionText: '',
24540                    config: editionTextConfig,
24541                    productId: '46708',
24542                    getEditionText(detail) {
24543                        this.editionText = detail.productIndex ?
24544                            this.config[detail.productIndex] :
24545                            null;
24546                    },
24547                    eventListeners: {
24548                        ['@listing-configurable-selection-changed.window'](event) {
24549                            if (this.productId == event.detail.productId) {
24550                                this.getEditionText(event.detail);
24551                            }
24552
24553                        }
24554                    }
24555                }
24556            }
24557        </script>
24557
24558                    </form>
24559                            
24560    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/46706/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21359">
24561        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="46706">
24562                                    <a href="https://meiner.de/fmv_de/vorlesung-a-ber-die-philosophie-der-weltgeschichte-21359" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
24563            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-46706.window="$el.src = $event.detail" alt="Vorlesung &uuml;ber die Philosophie der Weltgeschichte" title="Vorlesung &uuml;ber die Philosophie der Weltgeschichte" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787350940_1.jpg" :style="{
24564                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
24565                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
24566            }">
24567                    </a>
24568        <div class="product-info flex flex-col flex-grow ">
24569                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
24570                                    <div class="mb-2 text-sm text-gray-500 font-medium">
24571                                                                                    <a href="https://meiner.de/fmv_de/person/Georg-Wilhelm-Friedrich-Hegel-3139/" class="mb-2">
24572                                    Georg Wilhelm Friedrich Hegel                                                                    </a>
24573                                                                                                                                    </div>
24574                                <a class="product-item-link" href="https://meiner.de/fmv_de/vorlesung-a-ber-die-philosophie-der-weltgeschichte-21359">
24575                    Vorlesung &uuml;ber die Philosophie der Weltgeschichte                </a>
24576                            </div>
24577
24578            <div x-data="initEditionText_46706()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
24579                <!-- Marketing short text -->
24580                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
24581                </div>
24582            </div>
24583
24584                            <div class="py-1 grid  mb-4 ">
24585                    
24586                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":46706,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":46706,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46500":"1","46770":"1"},"childProductsAlertStatus":{"46500":"0","46770":"0"},"indexMapping":{"163:15":46500,"163:8":46770},"availabilityMessages":{"46500":"Lieferbar innerhalb von 3-5 Tagen","46770":"Download sofort  verf\u00fcgbar"},"openAccess":{"46706":{"status":0},"46500":{"status":0},"46770":{"status":0}}},"availabilityMessages":{"46500":"Lieferbar innerhalb von 3-5 Tagen","46770":"Download sofort  verf\u00fcgbar"},"openAccess":{"46706":{"status":0},"46500":{"status":0},"46770":{"status":0}}}'>
24587        <template x-if="containerVisible">
24588                            <!-- Popup Trigger -->
24589                <div>
24590                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
24591                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
24592                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
24593  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
24594<title>bell</title></svg>
24595</span>
24596                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
24597
24598                    <!-- Popup Modal -->
24599                    <template x-if="showModal">
24600                        <template x-teleport=".page-wrapper">
24601                            <div x-cloak class="fixed inset-0 flex items-center justify-center
24602                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
24603                                <div class="relative bg-white rounded-lg shadow-xl
24604                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
24605                                    <div class="p-6">
24606                                        <!-- Subscription Form for Popup -->
24607                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
24608                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
24609                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
24610                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
24611
24612                                            <div class="flex flex-col gap-3">
24613                                                <div class="flex-grow grow">
24614                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
24615                                                        shadow-xs focus:outline-none focus:outline-hidden
24616                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
24617                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
24618                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
24619                                                </div>
24620                                                <input type="hidden" name="product_id" :value="currentProductId">
24621                                                <input type="hidden" name="type" value="email">
24622
24623                                                
24624                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
24625
24626                                                <div class="amxnotif_guest_action">
24627                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
24628                                                        rounded-md focus:outline-none
24629                                                        focus:outline-hidden focus:ring-2
24630                                                        focus:ring-offset-2 disabled:opacity-50
24631                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
24632                                                        Benachrichtigen                                                    </button>
24633                                                </div>
24634                                            </div>
24635
24636                                                                                            <div class="flex items-start pt-2">
24637                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
24638                                                        text-blue-600 border-gray-300 rounded-sm">
24639                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
24640                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
24641                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
24642                                                </div>
24643                                                                                    </form>
24644                                    </div>
24645
24646                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
24647                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
24648                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
24649  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
24650<title>x</title></svg>
24651                                    </button>
24652                                </div>
24653                            </div>
24654                        </template>
24655                    </template>
24656                </div>
24657                    </template>
24658    </div>
24659
24660<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_46706" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":46706,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46500":"1","46770":"1"}
24660,"childProductsAlertStatus":{"46500":"0","46770":"0"},"indexMapping":"{\u0022163:15\u0022:46500,\u0022163:8\u0022:46770}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":46706,"availabilityMessages":{"46500":"Lieferbar innerhalb von 3-5 Tagen","46770":"Download sofort  verf\u00fcgbar"},"openAccess":{"46706":{"status":0},"46500":{"status":0},"46770":{"status":0}}}'>
24661    
24662    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
24663        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
24664        <span x-html="optionsLabelText"></span>
24665    </p>
24666</div>                </div>
24667            
24668                                
24668<script>
24669        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
24670            try {
24671                const attributes = (config && config.attributes) ? config.attributes : null;
24672                if (!attributes) return [];
24673                let attr = null;
24674                if (Array.isArray(attributes)) {
24675                    for (let i = 0; i < attributes.length; i++) {
24676                        const a = attributes[i];
24677                        if (a && a.id == attrId) {
24678                            attr = a;
24679                            break;
24680                        }
24681                    }
24682                } else {
24683                    attr = attributes[attrId];
24684                }
24685                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
24686            } catch (e) {
24687                return [];
24688            }
24689        };
24690
24691        function initConfigurableSwatchOptions_46706() {
24692            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46500"]},{"id":"8","label":"PDF","products":["46770"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46500":{"baseOldPrice":{"amount":27.943924233645},"oldPrice":{"amount":29.9},"basePrice":{"amount":27.943924233645},"finalPrice":{"amount":29.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46770":{"baseOldPrice":{"amount":18.682241990654},"oldPrice":{"amount":19.99},"basePrice":{"amount":18.682241990654},"finalPrice":{"amount":19.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":18.682241990654},"oldPrice":{"amount":19.99},"basePrice":{"amount":16.798318327731},"finalPrice":{"amount":19.99},"isApproxPrice":null},"productId":"46706","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46500":{"163":"15"},"46770":{"163":"8"}},"salable":{"163":{"15":["46500"],"8":["46770"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"46500":"005093","46770":"005094"},"output":{"46500":"Kartoniert","46770":"PDF"},"original_name":{"46500":"","46770":""},"openaccess_license_link":{"46500":"","46770":""},"openaccess_license_name":{"46500":"","46770":""},"openaccess_external_link":{"46500":"","46770":""},"gpsr_safety_info":{"46500":"","46770":""},"description":{"46500":"Hegels geschichtsphilosophische Vorlesungen sind fast nur durch die Mit- und Nachschriften seiner Sch\u00fcler und H\u00f6rer zug\u00e4nglich \u2013 ein Faktum, das fr\u00fchere Ausgaben, die aus verschiedenen Nachschriften und einigen unver\u00f6ffentlichten Manuskripten kompiliert wurden, \u00fcberdeckt haben. Dieser Band gibt hingegen eine einzelne authentische Nachschrift wieder, n\u00e4mlich die von Hegels Sohn Karl Hegel von 1830\/31 \u2013 aus dem letzten Semester, in dem Hegel noch lehren konnte.<br\/><br\/>Karl Hegels Nachschrift dokumentiert damit die reifste Gestalt von Hegels Geschichtsphilosophie. In seiner Vorlesung skizzierte Hegel die politische, gesellschaftliche und religi\u00f6se Entwicklung eines einheitlichen Weltethos und des zugeh\u00f6rigen Personseins, wobei erst in Persien, u. a. von Zarathustra, die Idee der Wahrheit und des Guten allgemein gefasst und erst im Laufe der Geschichte des Christentums die W\u00fcrde des einzelnen Menschen und seine basalen Rechte erfasst werden.<br\/><br\/>Diese Ausgabe k\u00f6nnte, so der Herausgeber, \u00bbzu einer Art Game-Changer f\u00fcr die Lekt\u00fcre Hegels insgesamt werden, weil es auf Kants dogmatische Rede von einem moralischen Gesetz a priori in uns antwortet\u00ab. Bis auf leichte Korrekturen und behutsame Anpassungen an heutige Schreibweisen folgt der Text Band 27,4 der historisch-kritischen Ausgabe \u00bbG.W.F. Hegel: Gesammelte Werke\u00ab.","46770":"Hegels geschichtsphilosophische Vorlesungen sind fast nur durch die Mit- und Nachschriften seiner Sch\u00fcler und H\u00f6rer zug\u00e4nglich \u2013 ein Faktum, das fr\u00fchere Ausgaben, die aus verschiedenen Nachschriften und einigen unver\u00f6ffentlichten Manuskripten kompiliert wurden, \u00fcberdeckt haben. Dieser Band gibt hingegen eine einzelne authentische Nachschrift wieder, n\u00e4mlich die von Hegels Sohn Karl Hegel von 1830\/31 \u2013 aus dem letzten Semester, in dem Hegel noch lehren konnte.<br\/><br\/>Karl Hegels Nachschrift dokumentiert damit die reifste Gestalt von Hegels Geschichtsphilosophie. In seiner Vorlesung skizzierte Hegel die politische, gesellschaftliche und religi\u00f6se Entwicklung eines einheitlichen Weltethos und des zugeh\u00f6rigen Personseins, wobei erst in Persien, u. a. von Zarathustra, die Idee der Wahrheit und des Guten allgemein gefasst und erst im Laufe der Geschichte des Christentums die W\u00fcrde des einzelnen Menschen und seine basalen Rechte erfasst werden.<br\/><br\/>Diese Ausgabe k\u00f6nnte, so der Herausgeber, \u00bbzu einer Art Game-Changer f\u00fcr die Lekt\u00fcre Hegels insgesamt werden, weil es auf Kants dogmatische Rede von einem moralischen Gesetz a priori in uns antwortet\u00ab. Bis auf leichte Korrekturen und behutsame Anpassungen an heutige Schreibweisen folgt der Text Band 27,4 der historisch-kritischen Ausgabe \u00bbG.W.F. Hegel: Gesammelte Werke\u00ab."},"doi":{"46500":"","46770":"10.28937\/978-3-7873-5094-0"},"isbn":{"46500":"978-3-7873-5093-3","46770":"978-3-7873-5094-0"},"marketing_short_text":{"46500":"","46770":""},"recension_text":{"46500":"","46770":""},"language":{"46500":"","46770":""},"cover":{"46500":"Kartoniert","46770":""},"pages":{"46500":"LXII, 366 Seiten.","46770":"LXII, 366 Seiten."},"edition":{"46500":"","46770":"Unver\u00e4ndertes eBook der 1. Auflage von 2026"},"pod":{"46500":"Nein","46770":"Nein"},"copyright_year":{"46500":"","46770":""},"vlb_tix_link":{"46500":"https:\/\/neu.vlbtix.de\/products\/9783787350933?type=gtin","46770":""},"defaultValues":{"163":"15"}};
24693            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
24694
24695            if (typeof window.amxnotif_wrap_attributes === 'function') {
24696                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
24697                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
24698            }
24699
24700            const configurableOptionsComponent = initConfigurableOptions(
24701                '46706',
24702                config
24703            );
24704            const swatchOptionsComponent = initSwatchOptions(
24705                swatchConfig
24706            );
24707
24708            // DWS - Configurable product preselect start
24709            const confProdPreSelect = () => {
24710                return {
24711                    preselectQuerystringItems() {
24712                        var data = {"id":"46500","output":"15"};
24713                        const urlQueryParams = new URLSearchParams(window.location.search);
24714
24715                                                this.$nextTick(() => {
24716                            setTimeout(() => {
24717                                const rootEl = this.$root || this.$el;
24718                                if (!rootEl) return;
24719
24720                                const applySelection = (attrCode, attrValue) => {
24721                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
24722
24723                                    const attributes = Object.values(this.optionConfig.attributes || {});
24724                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
24725
24726                                    if (targetAttr) {
24727                                        const attrId = String(targetAttr.id);
24728                                        const optionVal = String(attrValue);
24729
24730                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
24731
24732                                        if (inputEl) {
24733                                                                                        inputEl.click();
24734                                            inputEl.dispatchEvent(new Event('change', {
24735                                                bubbles: true
24736                                            }));
24737                                        } else {
24738                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
24739                                            if (selectEl) {
24740                                                selectEl.value = optionVal;
24741                                                selectEl.dispatchEvent(new Event('change', {
24742                                                    bubbles: true
24743                                                }));
24744                                            }
24745                                        }
24746
24747                                                                                this.changeOption(attrId, optionVal, false);
24748                                    }
24749                                };
24750
24751                                                                if (data && typeof data === 'object') {
24752                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
24753                                }
24754
24755                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
24756                                    if (attribute && attribute.code) {
24757                                        let optionValue = urlQueryParams.get(attribute.code);
24758                                        if (optionValue) {
24759                                            let optionId = false;
24760                                            const attributes = Object.values(this.optionConfig.attributes || {});
24761                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
24762
24763                                            let found = false;
24764                                            Object.values(targetAttr.options).map(option => {
24765                                                if (found === false && option.label === optionValue) {
24766                                                    optionId = option.id;
24767                                                    found = true;
24768                                                }
24769                                            });
24770
24771                                            const attrId = String(targetAttr.id);
24772                                            let optionVal = String(optionValue);
24773                                            if (found) {
24774                                                optionVal = String(optionId);
24775                                            }
24776
24777                                            applySelection(attribute.code, optionVal);
24778                                        }
24779                                    }
24780                                });
24781                            }, 100);
24782                        });
24783                    }
24784                }
24785            };
24786            // DWS - Configurable product preselect end
24787
24788            const result = Object.assign(
24789                configurableOptionsComponent,
24790                swatchOptionsComponent, {
24791                    productId: '46706',
24792                    productIndex: 0,
24793                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
24794                    showSwatches: false,
24795                    precalcOptions: {},
24796                    originalInit: configurableOptionsComponent.init,
24797                    init() {
24798                        try {
24799                            this.precalcOptions = {};
24800                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
24801                            this.preselectQuerystringItems();
24802                            if (Array.isArray(attrSource)) {
24803                                attrSource.forEach(attr => {
24804                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
24805                                });
24806                            } else if (attrSource && typeof attrSource === 'object') {
24807                                Object.keys(attrSource).forEach(id => {
24808                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
24809                                });
24810                            }
24811                        } catch (e) {
24812                            console.error('Pre-calc error:', e);
24813                        }
24814
24815                        if (typeof this.originalInit === 'function') {
24816                            this.originalInit();
24817                        }
24818
24819                        try {
24820                            this.initShowSwatchesIntersect();
24821                        } catch (e) {
24822                            console.error('intersect error:', e);
24823                        }
24824                    },
24825
24826                    updateGallery() {
24827                        if (!this.productIndex) return;
24828
24829                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
24830                                method: 'GET',
24831                                headers: {
24832                                    'Content-Type': 'application/json',
24833                                    'X-Requested-With': 'XMLHttpRequest'
24834                                }
24835                            })
24836                            .then(response => response.json())
24837                            .then(data => {
24838                                if (data && data.medium) {
24839                                    window.dispatchEvent(new CustomEvent("update-gallery-46706", {
24840                                        detail: data.medium
24841                                    }));
24842                                }
24843                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
24844                    },
24845
24846
24847                    initShowSwatchesIntersect() {
24848                        const observer = new IntersectionObserver(entries => {
24849                            if (entries[0].isIntersecting) {
24850                                this.showSwatches = true;
24851                                observer.disconnect();
24852                            }
24853                        }, {
24854                            rootMargin: '512px'
24855                        });
24856                        observer.observe(this.$el);
24857                    },
24858                    getOptions(attrId) {
24859                        return this.precalcOptions[attrId] || [];
24860                    },
24861                    getOptionsByAttrId() {
24862                        return this.getOptions(this.$el.dataset.attributeId);
24863                    },
24864                    _getItemId() {
24865                        if (this.item && this.item.id) return this.item.id;
24866                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
24867                    },
24868                    getSwatchOptionHtmlId() {
24869                        const itemId = this._getItemId();
24870                        return itemId ? this.$id(`attribute-option-46706-${itemId}`) : '';
24871                    },
24872                    getSwatchOptionHtmlIdGroup() {
24873                        const itemId = this._getItemId();
24874                        return itemId ? [`attribute-option-46706-${itemId}`] : [];
24875                    },
24876                    getAttributeSwatchData(attributeId) {
24877                        const data = Object.assign({}, this.swatchConfig[attributeId]);
24878                        if (data['additional_data']) {
24879                            try {
24880                                data['details'] = JSON.parse(data['additional_data']);
24881                            } catch (e) {
24882                                data['details'] = {};
24883                            }
24884                        }
24885                        return data;
24886                    },
24887                    getSwatchType(attributeId, optionId) {
24888                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
24889                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
24890                        }
24891                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
24892                            this.swatchConfig[attributeId].details.swatch_input_type :
24893                            "empty";
24894                        if (type === 'visual') {
24895                            const config = this.swatchConfig[attributeId];
24896                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
24897                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
24898                            }
24899                            // Fallback to first option type
24900                            for (const oId in config) {
24901                                if (config[oId] && typeof config[oId].type !== 'undefined') {
24902                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
24903                                }
24904                            }
24905                        }
24906                        return type;
24907                    },
24908                    mapSwatchTypeNumberToTypeCode(type) {
24909                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
24910                    },
24911                    isTextSwatch() {
24912                        const itemId = this._getItemId();
24913                        if (!this.$el || !itemId) return false;
24914                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
24915                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
24916                    },
24917
24918                    getSwatchText() {
24919                        const itemId = this._getItemId();
24920                        if (this.item) return this.item.label || '';
24921                        if (!this.$el || !itemId) return '';
24922                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
24923                        const options = attrId ? this.getOptions(attrId) : [];
24924                        const opt = options.find(o => o.id == itemId);
24925                        return opt ? opt.label : '';
24926                    },
24927                    getSwatchBackgroundStyle() {
24928                        const itemId = this._getItemId();
24929                        if (!this.$el || !itemId) return '';
24930                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
24931                        if (!attrId) return '';
24932                        const type = this.getSwatchType(attrId, itemId);
24933                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
24934                            this.swatchConfig[attrId][itemId] :
24935                            null;
24936                        if (!swatchData) return '';
24937                        if (type === "color") return 'background-color:' + swatchData.value;
24938                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
24939                        return '';
24940                    },
24941                    swatchOptionClasses() {
24942                        const itemId = this._getItemId();
24943                        if (!this.$el || !itemId) return {};
24944                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
24945                        return {
24946                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
24947                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
24948                            'w-6 h-6': !this.isTextSwatch()
24949                        }
24950                    },
24951
24952                    onFocusSwatchItem() {
24953                        const itemId = this._getItemId();
24954                        if (itemId) this.focusedLabel = itemId;
24955                    },
24956                    onChangeOption() {
24957                        const itemId = this._getItemId();
24958                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
24959                        if (attrId && itemId) this.changeOption(attrId, itemId);
24960                    },
24961                    changeOption(attributeId, value) {
24962                        if (value === '') {
24963                            return;
24964                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
24965                        } else {
24966                            this.selectedValues[attributeId] = value;
24967                        }
24968
24969                        this.findSimpleIndex();
24970                        this.findAllowedAttributeOptions();
24971                        this.updatePrices();
24972                        this.updateGallery();
24973
24974                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
24975                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
24976
24977                        const eventDetail = {
24978                            productId: this.productId,
24979                            optionId: attributeId,
24980                            value: value,
24981                            productIndex: this.productIndex || 0,
24982                            selectedValues: this.selectedValues,
24983                            candidates: candidates,
24984                            sourceElement: this.$el
24985                        };
24986
24987                        // Dispatch for Amasty
24988                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
24989                            detail: eventDetail
24990                        }));
24991
24992                        // Dispatch for Hyva listing
24993                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
24994                            detail: eventDetail
24995                        }));
24996                    },
24997
24998
24999                    clearOptionIfActive() {
25000                        const itemId = this._getItemId();
25001                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
25002                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
25003                            this.changeOption(attrId, '');
25004
25005                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
25006                            if (!input && this.$el?.querySelector) {
25007                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
25008                            }
25009                            if (!input && this.$el?.closest) {
25010                                const root = this.$el.closest('[data-product-id]') || this.$el;
25011                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
25012                            }
25013                            if (input) {
25014                                input.checked = false;
25015                            }
25016                        }
25017                    },
25018                    get optionIsEnabled() {
25019                        const itemId = this._getItemId();
25020                        if (!this.$el || !itemId) return true;
25021                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
25022                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
25023                        return !!allowedOptions.find(opt => opt.id == itemId);
25024                    },
25025                    get isSelected() {
25026                        const itemId = this._getItemId();
25027                        if (!this.$el || !itemId) return false;
25028                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
25029                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
25030                    },
25031                    get isSwatchRequired() {
25032                        if (!this.$el) return false;
25033                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
25034                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
25035                    },
25036                    focusedLabel: false,
25037                    activeTooltipItem: false,
25038                    tooltipPositionElement: false,
25039                    setActiveTooltipItem() {
25040                        const itemId = this._getItemId();
25041                        if (!this.$el || !itemId) return;
25042                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
25043                        this.activeTooltipItem = {
25044                            attribute: attrId,
25045                            item: itemId,
25046                            index: 0
25047                        };
25048                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
25049                    },
25050                    unsetActiveTooltipItem() {
25051                        this.activeTooltipItem = false;
25052                    }
25053                },
25054                confProdPreSelect()
25055            );
25056
25057            if (result.optionConfig && result.optionConfig.attributes) {
25058                const attributes = result.optionConfig.attributes;
25059                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
25060                    let source = attributes;
25061                    if (Array.isArray(attributes)) {
25062                        source = {};
25063                        attributes.forEach(attr => {
25064                            if (attr && attr.id) source[attr.id] = attr;
25065                        });
25066                    }
25067                    const values = Object.values(source);
25068                    const wrapper = Object.assign(values, source);
25069                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
25070                        value: true,
25071                        enumerable: false
25072                    });
25073                    result.optionConfig.attributes = wrapper;
25074                }
25075            }
25076
25077            return result;
25078        }
25079
25080        window.addEventListener('alpine:init', () => {
25081            Alpine.data('initConfigurableSwatchOptions_46706', initConfigurableSwatchOptions_46706);
25082        }, {
25083            once: true
25084        });
25085    </script>
25085
25086    
25087    <div x-data="initConfigurableSwatchOptions_46706" x-defer="intersect">
25088        <div class="pagebuilder-home-hidden">
25089                                            
25090                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
25091                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
25092                        <template x-if="showSwatches">
25093                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-46706-163" role="radiogroup" aria-label="Einband">
25094                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
25095                                    <div :data-option-id="item.id" style="display: contents">
25096                                        <div x-id="getSwatchOptionHtmlIdGroup">
25097    <template x-if="optionIsEnabled">
25098        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
25098self="unsetActiveTooltipItem">
25099            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-46706-163">
25100            <div>
25101                <template x-if="isTextSwatch">
25102                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
25103                </template>
25104                <template x-if="!optionIsActive(163, item.id)">
25105                    <div>
25106                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
25107                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
25108                        </svg>
25109                    </div>
25110                </template>
25111            </div>
25112        </label>
25113    </template>
25114</div>                                    </div>
25115                                </template>
25116                            </div>
25117                        </template>
25118                    </div>
25119                </div>
25120                    </div>
25121    </div>
25122            
25123                                                <div class="meta py-4 pagebuilder-home-hidden">
25124                <div x-data="initMarketingShortText_46706()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
25125                    <!-- Marketing short text -->
25126                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
25127                    </div>
25128
25129                    <!-- Short description -->
25130                                                                <div class="short-description">
25131                            Hegels geschichtsphilosophische Vorlesungen sind fast nur durch die Mit- und Nachschriften seiner Sch&uuml;ler und H&ouml;rer zug&auml;nglich &ndash; ein Faktum, das fr&uuml;here Ausgaben, die aus verschiedenen ...                            <a href="https://meiner.de/fmv_de/vorlesung-a-ber-die-philosophie-der-weltgeschichte-21359" class="underline">mehr</a>
25132                        </div>
25133                                    </div>
25134
25135                <!-- Series  -->
25136                                    <div class="mb-1">
25137                        <span class="sr-only">Reihe:</span>
25138                        <a href="https://meiner.de/fmv_de/programm/reihen/philosophische-bibliothek">
25139                            <span>Philosophische Bibliothek</span>
25140                        </a>
25141                                                    797                                            </div>
25142                
25143                
25144                                                    <div class="mb-1">
25145                        <span x-data="initEditionText_46706()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
25146                            <!-- Marketing short text -->
25147                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, LXII, 366 Seiten.                        </span>
25148                    </div>
25149                
25150                            </div>
25151            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
25152                
25153                <div class="justify-end" x-data="initPriceBox()" @update-prices-46706.window="updatePrice($event.detail);">
25154                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="46706" data-price-box="product-id-46706"><span class="normal-price">
25155    <span x-data x-id="['product\u002Dprice\u002D46706']" class="price-container price-final_price tax weee">
25156            <span class="price-label">Ab</span>
25157                <span class="approx-price">ca. </span>
25158        <span :id="$id('product\u002Dprice\u002D46706')" data-price-amount="19.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">19,99&nbsp;&euro;</span></span>
25159        </span>
25160</span>
25161
25162
25163</div>                </div>
25164
25165                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
25166                                            <div class="open-access-container open-access-container-46706                    flex mt-4 ml-auto sm:mt-0 hidden">
25167                            <div class="text-gray-700">
25168                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
25169                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
25170                                        Kostenlos online lesen                                    </a>
25171                                </button>
25172                            </div>
25173                        </div>
25174                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Vorlesung &uuml;ber die Philosophie der Weltgeschichte" aria-label="In den Warenkorb Vorlesung &uuml;ber die Philosophie der Weltgeschichte" data-addto="cart">
25175                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
25176  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
25177</svg>
25178                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
25179                                        In den Warenkorb                                    </span>
25180                                </button>
25181                                                                                                                    
25182<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(46706)" aria-label="Zur Wunschliste hinzuf&uuml;gen Vorlesung &uuml;ber die Philosophie der Weltgeschichte" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
25183    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
25184  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
25185</svg>
25186</button>
25187                                    </div>
25188            </div>
25189        </div>
25190        
25190<script>
25191            function initMarketingShortText_46706() {
25192                var marketingShortTextConfig = {};
25193                if (typeof window.initConfigurableSwatchOptions_46706 === "function") {
25194                    var fullConfig = window.initConfigurableSwatchOptions_46706().optionConfig
25195                    var marketingShortTextConfig = fullConfig.marketing_short_text;
25196                }
25197                return {
25198                    marketingShortText: '',
25199                    config: marketingShortTextConfig,
25200                    productId: '46706',
25201                    getMarketingShortText(detail) {
25202                        this.marketingShortText = detail.productIndex ?
25203                            this.config[detail.productIndex] :
25204                            null;
25205                    },
25206                    eventListeners: {
25207                        ['@listing-configurable-selection-changed.window'](event) {
25208                            if (this.productId == event.detail.productId) {
25209                                this.getMarketingShortText(event.detail);
25210                            }
25211
25212                        }
25213                    }
25214                }
25215            }
25216
25217            function initEditionText_46706() {
25218                var editionTextConfig = {};
25219                if (typeof window.initConfigurableSwatchOptions_46706 === "function") {
25220                    var fullConfig = window.initConfigurableSwatchOptions_46706().optionConfig
25221                    var editionTextConfig = fullConfig.edition;
25222                }
25223                return {
25224                    editionText: '',
25225                    config: editionTextConfig,
25226                    productId: '46706',
25227                    getEditionText(detail) {
25228                        this.editionText = detail.productIndex ?
25229                            this.config[detail.productIndex] :
25230                            null;
25231                    },
25232                    eventListeners: {
25233                        ['@listing-configurable-selection-changed.window'](event) {
25234                            if (this.productId == event.detail.productId) {
25235                                this.getEditionText(event.detail);
25236                            }
25237
25238                        }
25239                    }
25240                }
25241            }
25242        </script>
25242
25243                    </form>
25244                            
25245    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/4150/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk13216">
25246        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="4150">
25247                                    <a href="https://meiner.de/fmv_de/a-ber-das-recht-des-volks-zu-einer-revolution-13216" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
25248            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-4150.window="$el.src = $event.detail" alt="&Uuml;ber das Recht des Volks zu einer Revolution" title="&Uuml;ber das Recht des Volks zu einer Revolution" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787344505_4.jpg" :style="{
25249                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
25250                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
25251            }">
25252                    </a>
25253        <div class="product-info flex flex-col flex-grow ">
25254                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
25255                                    <div class="mb-2 text-sm text-gray-500 font-medium">
25256                                                                                    <a href="https://meiner.de/fmv_de/person/Johann-Benjamin-Erhard-13217/" class="mb-2">
25257                                    Johann Benjamin Erhard                                                                    </a>
25258                                                                                                                                    </div>
25259                                <a class="product-item-link" href="https://meiner.de/fmv_de/a-ber-das-recht-des-volks-zu-einer-revolution-13216">
25260                    &Uuml;ber das Recht des Volks zu einer Revolution                </a>
25261                            </div>
25262
25263            <div x-data="initEditionText_4150()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
25264                <!-- Marketing short text -->
25265                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
25266                </div>
25267            </div>
25268
25269                            <div class="py-1 grid  mb-4 ">
25270                    
25271                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":4150,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":4150,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"9909":"1","15378":"1"},"childProductsAlertStatus":{"9909":"0","15378":"0"},"indexMapping":{"163:15":9909,"163:8":15378},"availabilityMessages":{"9909":"Lieferbar innerhalb von 3-5 Tagen","15378":"Download sofort  verf\u00fcgbar"},"openAccess":{"4150":{"status":0},"9909":{"status":0},"15378":{"status":0}}},"availabilityMessages":{"9909":"Lieferbar innerhalb von 3-5 Tagen","15378":"Download sofort  verf\u00fcgbar"},"openAccess":{"4150":{"status":0},"9909":{"status":0},"15378":{"status":0}}}'>
25272        <template x-if="containerVisible">
25273                            <!-- Popup Trigger -->
25274                <div>
25275                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
25276                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
25277                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
25278  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
25279<title>bell</title></svg>
25280</span>
25281                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
25282
25283                    <!-- Popup Modal -->
25284                    <template x-if="showModal">
25285                        <template x-teleport=".page-wrapper">
25286                            <div x-cloak class="fixed inset-0 flex items-center justify-center
25287                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
25288                                <div class="relative bg-white rounded-lg shadow-xl
25289                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
25290                                    <div class="p-6">
25291                                        <!-- Subscription Form for Popup -->
25292                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
25293                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
25294                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
25295                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
25296
25297                                            <div class="flex flex-col gap-3">
25298                                                <div class="flex-grow grow">
25299                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
25300                                                        shadow-xs focus:outline-none focus:outline-hidden
25301                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
25302                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
25303                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
25304                                                </div>
25305                                                <input type="hidden" name="product_id" :value="currentProductId">
25306                                                <input type="hidden" name="type" value="email">
25307
25308                                                
25309                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
25310
25311                                                <div class="amxnotif_guest_action">
25312                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
25313                                                        rounded-md focus:outline-none
25314                                                        focus:outline-hidden focus:ring-2
25315                                                        focus:ring-offset-2 disabled:opacity-50
25316                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
25317                                                        Benachrichtigen                                                    </button>
25318                                                </div>
25319                                            </div>
25320
25321                                                                                            <div class="flex items-start pt-2">
25322                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
25323                                                        text-blue-600 border-gray-300 rounded-sm">
25324                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
25325                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
25326                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
25327                                                </div>
25328                                                                                    </form>
25329                                    </div>
25330
25331                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
25332                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
25333                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
25334  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
25335<title>x</title></svg>
25336                                    </button>
25337                                </div>
25338                            </div>
25339                        </template>
25340                    </template>
25341                </div>
25342                    </template>
25343    </div>
25344
25345<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_4150" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":4150,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"9909":"1","15378":"1"},"childProductsAlertStatus":{"9909":"0","15378":"0"},"indexMapping":"{\u0022163:15\u0022:9909,\u0022163:8\u0022:15378}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":4150,"availabilityMessages":{"9909":"Lieferbar innerhalb von 3-5 Tagen","15378":"Download sofort  verf\u00fcgbar"},"openAccess":{"4150":{"status":0},"9909":{"status":0},"15378":{"status":0}}}'>
25346    
25347    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
25348        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
25349        <span x-html="optionsLabelText"></span>
25350    </p>
25351</div>                </div>
25352            
25353                                
25353<script>
25354        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
25355            try {
25356                const attributes = (config && config.attributes) ? config.attributes : null;
25357                if (!attributes) return [];
25358                let attr = null;
25359                if (Array.isArray(attributes)) {
25360                    for (let i = 0; i < attributes.length; i++) {
25361                        const a = attributes[i];
25362                        if (a && a.id == attrId) {
25363                            attr = a;
25364                            break;
25365                        }
25366                    }
25367                } else {
25368                    attr = attributes[attrId];
25369                }
25370                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
25371            } catch (e) {
25372                return [];
25373            }
25374        };
25375
25376        function initConfigurableSwatchOptions_4150() {
25377            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["9909"]},{"id":"8","label":"PDF","products":["15378"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"9909":{"baseOldPrice":{"amount":23.271027037383},"oldPrice":{"amount":24.9},"basePrice":{"amount":23.271027037383},"finalPrice":{"amount":24.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"15378":{"baseOldPrice":{"amount":17.747662551402},"oldPrice":{"amount":18.99},"basePrice":{"amount":17.747662551402},"finalPrice":{"amount":18.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":17.747662551402},"oldPrice":{"amount":18.99},"basePrice":{"amount":17.747662551402},"finalPrice":{"amount":18.99},"isApproxPrice":null},"productId":"4150","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"9909":{"163":"15"},"15378":{"163":"8"}},"salable":{"163":{"15":["9909"],"8":["15378"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"9909":"004277","15378":"004450"},"output":{"9909":"Kartoniert","15378":"PDF"},"original_name":{"9909":"","15378":""},"openaccess_license_link":{"9909":"","15378":""},"openaccess_license_name":{"9909":"","15378":""},"openaccess_external_link":{"9909":"","15378":""},"gpsr_safety_info":{"9909":"","15378":""},"description":{"9909":"\u00bbUeber das Recht des Volks zu einer Revolution\u00ab des N\u00fcrnberger Arztes und Kantianers Johann Benjamin Erhard ist ein Schl\u00fcsseltext der deutschen Revolutionstheorie um 1800 und ein Werk von besonderer ideengeschichtlicher Bedeutung. Als Klassiker im Feld der Menschenrechtstheorie ist das Buch unver\u00e4ndert diskussionsw\u00fcrdig.<br\/><br\/>Erhard z\u00e4hlt zu den Denkern der nachkantischen Philosophie, die ihre theoretischen \u00dcberlegungen nicht in einem systematischen Hauptwerk zusammengefasst haben. Seine wichtigsten Beitr\u00e4ge liegen in Briefen und Rezensionen vor. Seine politische Theorie hat er allerdings in der Revolutions-Schrift ausf\u00fchrlicher entwickelt. Nach der \u00dcbersetzung von \u00c9tienne de La Bo\u00e9ties Abhandlung \u00bbFreiwillige Knechtschaft\u00ab arbeitete Erhard 1793 zun\u00e4chst als Entgegnung auf La Bo\u00e9tie eine \u00bbPr\u00fcfung der Alleinherrschaft nach moralischen Prinzipien\u00ab f\u00fcr Wielands \u00bbNeuen Teutschen Merkur\u00ab aus. Sein Verleger Friedrich Carl Forberg urteilte dar\u00fcber: \u00bbIch kenne niemanden, der \u00fcber Gegenst\u00e4nde des Staatsrechts mit dem Tiefsinne, und dem mutigen Blicke philosophirt h\u00e4tte [\u2026].\u00ab <br\/>Die Revolutionsschrift setzt diese \u00dcberlegungen fort. Sie wurde nach ihrem Erscheinen 1795 in mehreren Staaten verboten und hat dennoch eine gr\u00f6\u00dfere Wirkung entfalten k\u00f6nnen: In Fichtes Rechtstheorie, Schillers Dramenwerk oder der politischen Philosophie der Fr\u00fchromantik finden sich Reaktionen auf Erhards Ausf\u00fchrungen.","15378":"\u00bbUeber das Recht des Volks zu einer Revolution\u00ab des N\u00fcrnberger Arztes und Kantianers Johann Benjamin Erhard ist ein Schl\u00fcsseltext der deutschen Revolutionstheorie um 1800 und ein Werk von besonderer ideengeschichtlicher Bedeutung. Als Klassiker im Feld der Menschenrechtstheorie ist das Buch unver\u00e4ndert diskussionsw\u00fcrdig.<br\/><br\/>Erhard z\u00e4hlt zu den Denkern der nachkantischen Philosophie, die ihre theoretischen \u00dcberlegungen nicht in einem systematischen Hauptwerk zusammengefasst haben. Seine wichtigsten Beitr\u00e4ge liegen in Briefen und Rezensionen vor. Seine politische Theorie hat er allerdings in der Revolutions-Schrift ausf\u00fchrlicher entwickelt. Nach der \u00dcbersetzung von \u00c9tienne de La Bo\u00e9ties Abhandlung \u00bbFreiwillige Knechtschaft\u00ab arbeitete Erhard 1793 zun\u00e4chst als Entgegnung auf La Bo\u00e9tie eine \u00bbPr\u00fcfung der Alleinherrschaft nach moralischen Prinzipien\u00ab f\u00fcr Wielands \u00bbNeuen Teutschen Merkur\u00ab aus. Sein Verleger Friedrich Carl Forberg urteilte dar\u00fcber: \u00bbIch kenne niemanden, der \u00fcber Gegenst\u00e4nde des Staatsrechts mit dem Tiefsinne, und dem mutigen Blicke philosophirt h\u00e4tte [\u2026].\u00ab <br\/>Die Revolutionsschrift setzt diese \u00dcberlegungen fort. Sie wurde nach ihrem Erscheinen 1795 in mehreren Staaten verboten und hat dennoch eine gr\u00f6\u00dfere Wirkung entfalten k\u00f6nnen: In Fichtes Rechtstheorie, Schillers Dramenwerk oder der politischen Philosophie der Fr\u00fchromantik finden sich Reaktionen auf Erhards Ausf\u00fchrungen."},"doi":{"9909":"","15378":"10.28937\/978-3-7873-4450-5"},"isbn":{"9909":"978-3-7873-4277-8","15378":"978-3-7873-4450-5"},"marketing_short_text":{"9909":"","15378":""},"recension_text":{"9909":"","15378":""},"language":{"9909":"","15378":""},"cover":{"9909":"Kartoniert","15378":""},"pages":{"9909":"XCVIII, 140 Seiten","15378":"172 Seiten"},"edition":{"9909":"","15378":"Unver\u00e4ndertes eBook der 1. Auflage von 2026"},"pod":{"9909":"Nein","15378":"Nein"},"copyright_year":{"9909":"","15378":""},"vlb_tix_link":{"9909":"https:\/\/neu.vlbtix.de\/products\/9783787342778?type=gtin","15378":""},"defaultValues":{"163":"15"}};
25378            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
25379
25380            if (typeof window.amxnotif_wrap_attributes === 'function') {
25381                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
25382                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
25383            }
25384
25385            const configurableOptionsComponent = initConfigurableOptions(
25386                '4150',
25387                config
25388            );
25389            const swatchOptionsComponent = initSwatchOptions(
25390                swatchConfig
25391            );
25392
25393            // DWS - Configurable product preselect start
25394            const confProdPreSelect = () => {
25395                return {
25396                    preselectQuerystringItems() {
25397                        var data = {"id":"9909","output":"15"};
25398                        const urlQueryParams = new URLSearchParams(window.location.search);
25399
25400                                                this.$nextTick(() => {
25401                            setTimeout(() => {
25402                                const rootEl = this.$root || this.$el;
25403                                if (!rootEl) return;
25404
25405                                const applySelection = (attrCode, attrValue) => {
25406                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
25407
25408                                    const attributes = Object.values(this.optionConfig.attributes || {});
25409                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
25410
25411                                    if (targetAttr) {
25412                                        const attrId = String(targetAttr.id);
25413                                        const optionVal = String(attrValue);
25414
25415                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
25416
25417                                        if (inputEl) {
25418                                                                                        inputEl.click();
25419                                            inputEl.dispatchEvent(new Event('change', {
25420                                                bubbles: true
25421                                            }));
25422                                        } else {
25423                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
25424                                            if (selectEl) {
25425                                                selectEl.value = optionVal;
25426                                                selectEl.dispatchEvent(new Event('change', {
25427                                                    bubbles: true
25428                                                }));
25429                                            }
25430                                        }
25431
25432                                                                                this.changeOption(attrId, optionVal, false);
25433                                    }
25434                                };
25435
25436                                                                if (data && typeof data === 'object') {
25437                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
25438                                }
25439
25440                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
25441                                    if (attribute && attribute.code) {
25442                                        let optionValue = urlQueryParams.get(attribute.code);
25443                                        if (optionValue) {
25444                                            let optionId = false;
25445                                            const attributes = Object.values(this.optionConfig.attributes || {});
25446                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
25447
25448                                            let found = false;
25449                                            Object.values(targetAttr.options).map(option => {
25450                                                if (found === false && option.label === optionValue) {
25451                                                    optionId = option.id;
25452                                                    found = true;
25453                                                }
25454                                            });
25455
25456                                            const attrId = String(targetAttr.id);
25457                                            let optionVal = String(optionValue);
25458                                            if (found) {
25459                                                optionVal = String(optionId);
25460                                            }
25461
25462                                            applySelection(attribute.code, optionVal);
25463                                        }
25464                                    }
25465                                });
25466                            }, 100);
25467                        });
25468                    }
25469                }
25470            };
25471            // DWS - Configurable product preselect end
25472
25473            const result = Object.assign(
25474                configurableOptionsComponent,
25475                swatchOptionsComponent, {
25476                    productId: '4150',
25477                    productIndex: 0,
25478                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
25479                    showSwatches: false,
25480                    precalcOptions: {},
25481                    originalInit: configurableOptionsComponent.init,
25482                    init() {
25483                        try {
25484                            this.precalcOptions = {};
25485                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
25486                            this.preselectQuerystringItems();
25487                            if (Array.isArray(attrSource)) {
25488                                attrSource.forEach(attr => {
25489                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
25490                                });
25491                            } else if (attrSource && typeof attrSource === 'object') {
25492                                Object.keys(attrSource).forEach(id => {
25493                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
25494                                });
25495                            }
25496                        } catch (e) {
25497                            console.error('Pre-calc error:', e);
25498                        }
25499
25500                        if (typeof this.originalInit === 'function') {
25501                            this.originalInit();
25502                        }
25503
25504                        try {
25505                            this.initShowSwatchesIntersect();
25506                        } catch (e) {
25507                            console.error('intersect error:', e);
25508                        }
25509                    },
25510
25511                    updateGallery() {
25512                        if (!this.productIndex) return;
25513
25514                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
25515                                method: 'GET',
25516                                headers: {
25517                                    'Content-Type': 'application/json',
25518                                    'X-Requested-With': 'XMLHttpRequest'
25519                                }
25520                            })
25521                            .then(response => response.json())
25522                            .then(data => {
25523                                if (data && data.medium) {
25524                                    window.dispatchEvent(new CustomEvent("update-gallery-4150", {
25525                                        detail: data.medium
25526                                    }));
25527                                }
25528                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
25529                    },
25530
25531
25532                    initShowSwatchesIntersect() {
25533                        const observer = new IntersectionObserver(entries => {
25534                            if (entries[0].isIntersecting) {
25535                                this.showSwatches = true;
25536                                observer.disconnect();
25537                            }
25538                        }, {
25539                            rootMargin: '512px'
25540                        });
25541                        observer.observe(this.$el);
25542                    },
25543                    getOptions(attrId) {
25544                        return this.precalcOptions[attrId] || [];
25545                    },
25546                    getOptionsByAttrId() {
25547                        return this.getOptions(this.$el.dataset.attributeId);
25548                    },
25549                    _getItemId() {
25550                        if (this.item && this.item.id) return this.item.id;
25551                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
25552                    },
25553                    getSwatchOptionHtmlId() {
25554                        const itemId = this._getItemId();
25555                        return itemId ? this.$id(`attribute-option-4150-${itemId}`) : '';
25556                    },
25557                    getSwatchOptionHtmlIdGroup() {
25558                        const itemId = this._getItemId();
25559                        return itemId ? [`attribute-option-4150-${itemId}`] : [];
25560                    },
25561                    getAttributeSwatchData(attributeId) {
25562                        const data = Object.assign({}, this.swatchConfig[attributeId]);
25563                        if (data['additional_data']) {
25564                            try {
25565                                data['details'] = JSON.parse(data['additional_data']);
25566                            } catch (e) {
25567                                data['details'] = {};
25568                            }
25569                        }
25570                        return data;
25571                    },
25572                    getSwatchType(attributeId, optionId) {
25573                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
25574                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
25575                        }
25576                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
25577                            this.swatchConfig[attributeId].details.swatch_input_type :
25578                            "empty";
25579                        if (type === 'visual') {
25580                            const config = this.swatchConfig[attributeId];
25581                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
25582                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
25583                            }
25584                            // Fallback to first option type
25585                            for (const oId in config) {
25586                                if (config[oId] && typeof config[oId].type !== 'undefined') {
25587                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
25588                                }
25589                            }
25590                        }
25591                        return type;
25592                    },
25593                    mapSwatchTypeNumberToTypeCode(type) {
25594                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
25595                    },
25596                    isTextSwatch() {
25597                        const itemId = this._getItemId();
25598                        if (!this.$el || !itemId) return false;
25599                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
25600                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
25601                    },
25602
25603                    getSwatchText() {
25604                        const itemId = this._getItemId();
25605                        if (this.item) return this.item.label || '';
25606                        if (!this.$el || !itemId) return '';
25607                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
25608                        const options = attrId ? this.getOptions(attrId) : [];
25609                        const opt = options.find(o => o.id == itemId);
25610                        return opt ? opt.label : '';
25611                    },
25612                    getSwatchBackgroundStyle() {
25613                        const itemId = this._getItemId();
25614                        if (!this.$el || !itemId) return '';
25615                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
25616                        if (!attrId) return '';
25617                        const type = this.getSwatchType(attrId, itemId);
25618                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
25619                            this.swatchConfig[attrId][itemId] :
25620                            null;
25621                        if (!swatchData) return '';
25622                        if (type === "color") return 'background-color:' + swatchData.value;
25623                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
25624                        return '';
25625                    },
25626                    swatchOptionClasses() {
25627                        const itemId = this._getItemId();
25628                        if (!this.$el || !itemId) return {};
25629                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
25630                        return {
25631                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
25632                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
25633                            'w-6 h-6': !this.isTextSwatch()
25634                        }
25635                    },
25636
25637                    onFocusSwatchItem() {
25638                        const itemId = this._getItemId();
25639                        if (itemId) this.focusedLabel = itemId;
25640                    },
25641                    onChangeOption() {
25642                        const itemId = this._getItemId();
25643                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
25644                        if (attrId && itemId) this.changeOption(attrId, itemId);
25645                    },
25646                    changeOption(attributeId, value) {
25647                        if (value === '') {
25648                            return;
25649                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
25650                        } else {
25651                            this.selectedValues[attributeId] = value;
25652                        }
25653
25654                        this.findSimpleIndex();
25655                        this.findAllowedAttributeOptions();
25656                        this.updatePrices();
25657                        this.updateGallery();
25658
25659                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
25660                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
25661
25662                        const eventDetail = {
25663                            productId: this.productId,
25664                            optionId: attributeId,
25665                            value: value,
25666                            productIndex: this.productIndex || 0,
25667                            selectedValues: this.selectedValues,
25668                            candidates: candidates,
25669                            sourceElement: this.$el
25670                        };
25671
25672                        // Dispatch for Amasty
25673                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
25674                            detail: eventDetail
25675                        }));
25676
25677                        // Dispatch for Hyva listing
25678                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
25679                            detail: eventDetail
25680                        }));
25681                    },
25682
25683
25684                    clearOptionIfActive() {
25685                        const itemId = this._getItemId();
25686                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
25687                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
25688                            this.changeOption(attrId, '');
25689
25690                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
25691                            if (!input && this.$el?.querySelector) {
25692                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
25693                            }
25694                            if (!input && this.$el?.closest) {
25695                                const root = this.$el.closest('[data-product-id]') || this.$el;
25696                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
25697                            }
25698                            if (input) {
25699                                input.checked = false;
25700                            }
25701                        }
25702                    },
25703                    get optionIsEnabled() {
25704                        const itemId = this._getItemId();
25705                        if (!this.$el || !itemId) return true;
25706                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
25707                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
25708                        return !!allowedOptions.find(opt => opt.id == itemId);
25709                    },
25710                    get isSelected() {
25711                        const itemId = this._getItemId();
25712                        if (!this.$el || !itemId) return false;
25713                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
25714                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
25715                    },
25716                    get isSwatchRequired() {
25717                        if (!this.$el) return false;
25718                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
25719                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
25720                    },
25721                    focusedLabel: false,
25722                    activeTooltipItem: false,
25723                    tooltipPositionElement: false,
25724                    setActiveTooltipItem() {
25725                        const itemId = this._getItemId();
25726                        if (!this.$el || !itemId) return;
25727                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
25728                        this.activeTooltipItem = {
25729                            attribute: attrId,
25730                            item: itemId,
25731                            index: 0
25732                        };
25733                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
25734                    },
25735                    unsetActiveTooltipItem() {
25736                        this.activeTooltipItem = false;
25737                    }
25738                },
25739                confProdPreSelect()
25740            );
25741
25742            if (result.optionConfig && result.optionConfig.attributes) {
25743                const attributes = result.optionConfig.attributes;
25744                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
25745                    let source = attributes;
25746                    if (Array.isArray(attributes)) {
25747                        source = {};
25748                        attributes.forEach(attr => {
25749                            if (attr && attr.id) source[attr.id] = attr;
25750                        });
25751                    }
25752                    const values = Object.values(source);
25753                    const wrapper = Object.assign(values, source);
25754                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
25755                        value: true,
25756                        enumerable: false
25757                    });
25758                    result.optionConfig.attributes = wrapper;
25759                }
25760            }
25761
25762            return result;
25763        }
25764
25765        window.addEventListener('alpine:init', () => {
25766            Alpine.data('initConfigurableSwatchOptions_4150', initConfigurableSwatchOptions_4150);
25767        }, {
25768            once: true
25769        });
25770    </script>
25770
25771    
25772    <div x-data="initConfigurableSwatchOptions_4150" x-defer="intersect">
25773        <div class="pagebuilder-home-hidden">
25774                                            
25775                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
25776                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
25777                        <template x-if="showSwatches">
25778                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-4150-163" role="radiogroup" aria-label="Einband">
25779                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
25780                                    <div :data-option-id="item.id" style="display: contents">
25781                                        <div x-id="getSwatchOptionHtmlIdGroup">
25782    <template x-if="optionIsEnabled">
25783        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
25783self="unsetActiveTooltipItem">
25784            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-4150-163">
25785            <div>
25786                <template x-if="isTextSwatch">
25787                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
25788                </template>
25789                <template x-if="!optionIsActive(163, item.id)">
25790                    <div>
25791                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
25792                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
25793                        </svg>
25794                    </div>
25795                </template>
25796            </div>
25797        </label>
25798    </template>
25799</div>                                    </div>
25800                                </template>
25801                            </div>
25802                        </template>
25803                    </div>
25804                </div>
25805                    </div>
25806    </div>
25807            
25808                                                <div class="meta py-4 pagebuilder-home-hidden">
25809                <div x-data="initMarketingShortText_4150()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
25810                    <!-- Marketing short text -->
25811                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
25812                    </div>
25813
25814                    <!-- Short description -->
25815                                                                <div class="short-description">
25816                            &raquo;Ueber das Recht des Volks zu einer Revolution&laquo; des N&uuml;rnberger Arztes und Kantianers Johann Benjamin Erhard ist ein Schl&uuml;sseltext der deutschen Revolutionstheorie um 1800 und ein Werk von ...                            <a href="https://meiner.de/fmv_de/a-ber-das-recht-des-volks-zu-einer-revolution-13216" class="underline">mehr</a>
25817                        </div>
25818                                    </div>
25819
25820                <!-- Series  -->
25821                                    <div class="mb-1">
25822                        <span class="sr-only">Reihe:</span>
25823                        <a href="https://meiner.de/fmv_de/programm/reihen/philosophische-bibliothek">
25824                            <span>Philosophische Bibliothek</span>
25825                        </a>
25826                                                    771                                            </div>
25827                
25828                
25829                                                    <div class="mb-1">
25830                        <span x-data="initEditionText_4150()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
25831                            <!-- Marketing short text -->
25832                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, XCVIII, 140 Seiten                        </span>
25833                    </div>
25834                
25835                            </div>
25836            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
25837                
25838                <div class="justify-end" x-data="initPriceBox()" @update-prices-4150.window="updatePrice($event.detail);">
25839                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="4150" data-price-box="product-id-4150"><span class="normal-price">
25840    <span x-data x-id="['product\u002Dprice\u002D4150']" class="price-container price-final_price tax weee">
25841            <span class="price-label">Ab</span>
25842                <span class="approx-price">ca. </span>
25843        <span :id="$id('product\u002Dprice\u002D4150')" data-price-amount="18.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">18,99&nbsp;&euro;</span></span>
25844        </span>
25845</span>
25846
25847
25848</div>                </div>
25849
25850                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
25851                                            <div class="open-access-container open-access-container-4150                    flex mt-4 ml-auto sm:mt-0 hidden">
25852                            <div class="text-gray-700">
25853                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
25854                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
25855                                        Kostenlos online lesen                                    </a>
25856                                </button>
25857                            </div>
25858                        </div>
25859                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb &Uuml;ber das Recht des Volks zu einer Revolution" aria-label="In den Warenkorb &Uuml;ber das Recht des Volks zu einer Revolution" data-addto="cart">
25860                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
25861  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
25862</svg>
25863                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
25864                                        In den Warenkorb                                    </span>
25865                                </button>
25866                                                                                                                    
25867<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(4150)" aria-label="Zur Wunschliste hinzuf&uuml;gen &Uuml;ber das Recht des Volks zu einer Revolution" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
25868    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
25869  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
25870</svg>
25871</button>
25872                                    </div>
25873            </div>
25874        </div>
25875        
25875<script>
25876            function initMarketingShortText_4150() {
25877                var marketingShortTextConfig = {};
25878                if (typeof window.initConfigurableSwatchOptions_4150 === "function") {
25879                    var fullConfig = window.initConfigurableSwatchOptions_4150().optionConfig
25880                    var marketingShortTextConfig = fullConfig.marketing_short_text;
25881                }
25882                return {
25883                    marketingShortText: '',
25884                    config: marketingShortTextConfig,
25885                    productId: '4150',
25886                    getMarketingShortText(detail) {
25887                        this.marketingShortText = detail.productIndex ?
25888                            this.config[detail.productIndex] :
25889                            null;
25890                    },
25891                    eventListeners: {
25892                        ['@listing-configurable-selection-changed.window'](event) {
25893                            if (this.productId == event.detail.productId) {
25894                                this.getMarketingShortText(event.detail);
25895                            }
25896
25897                        }
25898                    }
25899                }
25900            }
25901
25902            function initEditionText_4150() {
25903                var editionTextConfig = {};
25904                if (typeof window.initConfigurableSwatchOptions_4150 === "function") {
25905                    var fullConfig = window.initConfigurableSwatchOptions_4150().optionConfig
25906                    var editionTextConfig = fullConfig.edition;
25907                }
25908                return {
25909                    editionText: '',
25910                    config: editionTextConfig,
25911                    productId: '4150',
25912                    getEditionText(detail) {
25913                        this.editionText = detail.productIndex ?
25914                            this.config[detail.productIndex] :
25915                            null;
25916                    },
25917                    eventListeners: {
25918                        ['@listing-configurable-selection-changed.window'](event) {
25919                            if (this.productId == event.detail.productId) {
25920                                this.getEditionText(event.detail);
25921                            }
25922
25923                        }
25924                    }
25925                }
25926            }
25927        </script>
25927
25928                    </form>
25929                            
25930    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/46712/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21550">
25931        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="46712">
25932                                    <a href="https://meiner.de/fmv_de/von-den-heroischen-leidenschaften-21550" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
25933            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-46712.window="$el.src = $event.detail" alt="Von den heroischen Leidenschaften" title="Von den heroischen Leidenschaften" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351411_1.jpg" :style="{
25934                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
25935                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
25936            }">
25937                    </a>
25938        <div class="product-info flex flex-col flex-grow ">
25939                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
25940                                    <div class="mb-2 text-sm text-gray-500 font-medium">
25941                                                                                    <a href="https://meiner.de/fmv_de/person/Giordano-Bruno-3772/" class="mb-2">
25942                                    Giordano Bruno                                                                    </a>
25943                                                                                                                                    </div>
25944                                <a class="product-item-link" href="https://meiner.de/fmv_de/von-den-heroischen-leidenschaften-21550">
25945                    Von den heroischen Leidenschaften                </a>
25946                            </div>
25947
25948            <div x-data="initEditionText_46712()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
25949                <!-- Marketing short text -->
25950                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
25951                </div>
25952            </div>
25953
25954                            <div class="py-1 grid  mb-4 ">
25955                    
25956                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":46712,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":46712,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46694":"1"},"childProductsAlertStatus":{"46694":"0"},"indexMapping":{"163:11":46694},"availabilityMessages":{"46694":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"46712":{"status":0},"46694":{"status":0}}},"availabilityMessages":{"46694":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"46712":{"status":0},"46694":{"status":0}}}'>
25957        <template x-if="containerVisible">
25958                            <!-- Popup Trigger -->
25959                <div>
25960                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
25961                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
25962                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
25963  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
25964<title>bell</title></svg>
25965</span>
25966                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
25967
25968                    <!-- Popup Modal -->
25969                    <template x-if="showModal">
25970                        <template x-teleport=".page-wrapper">
25971                            <div x-cloak class="fixed inset-0 flex items-center justify-center
25972                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
25973                                <div class="relative bg-white rounded-lg shadow-xl
25974                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
25975                                    <div class="p-6">
25976                                        <!-- Subscription Form for Popup -->
25977                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
25978                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
25979                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
25980                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
25981
25982                                            <div class="flex flex-col gap-3">
25983                                                <div class="flex-grow grow">
25984                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
25985                                                        shadow-xs focus:outline-none focus:outline-hidden
25986                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
25987                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
25988                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
25989                                                </div>
25990                                                <input type="hidden" name="product_id" :value="currentProductId">
25991                                                <input type="hidden" name="type" value="email">
25992
25993                                                
25994                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
25995
25996                                                <div class="amxnotif_guest_action">
25997                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
25998                                                        rounded-md focus:outline-none
25999                                                        focus:outline-hidden focus:ring-2
26000                                                        focus:ring-offset-2 disabled:opacity-50
26001                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
26002                                                        Benachrichtigen                                                    </button>
26003                                                </div>
26004                                            </div>
26005
26006                                                                                            <div class="flex items-start pt-2">
26007                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
26008                                                        text-blue-600 border-gray-300 rounded-sm">
26009                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
26010                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
26011                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
26012                                                </div>
26013                                                                                    </form>
26014                                    </div>
26015
26016                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
26017                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
26018                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
26019  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
26020<title>x</title></svg>
26021                                    </button>
26022                                </div>
26023                            </div>
26024                        </template>
26025                    </template>
26026                </div>
26027                    </template>
26028    </div>
26029
26030<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_46712" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":46712,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46694":"1"},"childProductsAlertStatus":{"46694":"0"},"indexMapping":"{\u0022163:11\u0022:46694}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":46712,"availabilityMessages":{"46694":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"46712":{"status":0}
26030,"46694":{"status":0}}}'>
26031    
26032    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
26033        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
26034        <span x-html="optionsLabelText"></span>
26035    </p>
26036</div>                </div>
26037            
26038                                
26038<script>
26039        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
26040            try {
26041                const attributes = (config && config.attributes) ? config.attributes : null;
26042                if (!attributes) return [];
26043                let attr = null;
26044                if (Array.isArray(attributes)) {
26045                    for (let i = 0; i < attributes.length; i++) {
26046                        const a = attributes[i];
26047                        if (a && a.id == attrId) {
26048                            attr = a;
26049                            break;
26050                        }
26051                    }
26052                } else {
26053                    attr = attributes[attrId];
26054                }
26055                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
26056            } catch (e) {
26057                return [];
26058            }
26059        };
26060
26061        function initConfigurableSwatchOptions_46712() {
26062            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"11","label":"Gebunden","products":["46694"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46694":{"baseOldPrice":{"amount":91.588784046729},"oldPrice":{"amount":98},"basePrice":{"amount":91.588784046729},"finalPrice":{"amount":98},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":91.588784046729},"oldPrice":{"amount":98},"basePrice":{"amount":82.352940176471},"finalPrice":{"amount":98},"isApproxPrice":null},"productId":"46712","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46694":{"163":"11"}},"salable":{"163":{"11":["46694"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"46694":"005141"},"output":{"46694":"Gebunden"},"original_name":{"46694":"De gl\u2019heroici furori"},"openaccess_license_link":{"46694":""},"openaccess_license_name":{"46694":""},"openaccess_external_link":{"46694":""},"gpsr_safety_info":{"46694":""},"description":{"46694":"Die Heroischen Leidenschaften, \u00bbDe gl\u2019heroici furori\u00ab, sind der letzte der in italienischer Sprache geschriebenen Dialoge Brunos, die s\u00e4mtlich zwischen 1583 und 1585 in England verfasst wurden. Sie k\u00f6nnen nicht nur als H\u00f6he- und Kulminationspunkt des brunianischen \u0152uvres insgesamt gelten, sondern zugleich als ein Werk, in dem sich wie in einem Brennspiegel Philosopheme des ausgehenden Mittelalters und der Fr\u00fchen Neuzeit b\u00fcndeln und in neue Konstellationen treten.<br\/><br\/>Der Text dieses Bandes folgt seitenidentisch Bd. 7 der Ausgabe \u00bbGiordano Bruno Werke\u00ab, herausgegeben von Thomas Leinkauf."},"doi":{"46694":""},"isbn":{"46694":"978-3-7873-5141-1"},"marketing_short_text":{"46694":""},"recension_text":{"46694":""},"language":{"46694":""},"cover":{"46694":"Gebunden"},"pages":{"46694":"CXL, 711 Seiten."},"edition":{"46694":""},"pod":{"46694":"Nein"},"copyright_year":{"46694":""},"vlb_tix_link":{"46694":"https:\/\/neu.vlbtix.de\/products\/9783787351411?type=gtin"},"defaultValues":{"163":"11"}};
26063            const swatchConfig = {"163":{"11":{"type":"0","value":"Gebunden","label":"Gebunden"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
26064
26065            if (typeof window.amxnotif_wrap_attributes === 'function') {
26066                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
26067                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
26068            }
26069
26070            const configurableOptionsComponent = initConfigurableOptions(
26071                '46712',
26072                config
26073            );
26074            const swatchOptionsComponent = initSwatchOptions(
26075                swatchConfig
26076            );
26077
26078            // DWS - Configurable product preselect start
26079            const confProdPreSelect = () => {
26080                return {
26081                    preselectQuerystringItems() {
26082                        var data = {"id":"46694","output":"11"};
26083                        const urlQueryParams = new URLSearchParams(window.location.search);
26084
26085                                                this.$nextTick(() => {
26086                            setTimeout(() => {
26087                                const rootEl = this.$root || this.$el;
26088                                if (!rootEl) return;
26089
26090                                const applySelection = (attrCode, attrValue) => {
26091                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
26092
26093                                    const attributes = Object.values(this.optionConfig.attributes || {});
26094                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
26095
26096                                    if (targetAttr) {
26097                                        const attrId = String(targetAttr.id);
26098                                        const optionVal = String(attrValue);
26099
26100                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
26101
26102                                        if (inputEl) {
26103                                                                                        inputEl.click();
26104                                            inputEl.dispatchEvent(new Event('change', {
26105                                                bubbles: true
26106                                            }));
26107                                        } else {
26108                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
26109                                            if (selectEl) {
26110                                                selectEl.value = optionVal;
26111                                                selectEl.dispatchEvent(new Event('change', {
26112                                                    bubbles: true
26113                                                }));
26114                                            }
26115                                        }
26116
26117                                                                                this.changeOption(attrId, optionVal, false);
26118                                    }
26119                                };
26120
26121                                                                if (data && typeof data === 'object') {
26122                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
26123                                }
26124
26125                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
26126                                    if (attribute && attribute.code) {
26127                                        let optionValue = urlQueryParams.get(attribute.code);
26128                                        if (optionValue) {
26129                                            let optionId = false;
26130                                            const attributes = Object.values(this.optionConfig.attributes || {});
26131                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
26132
26133                                            let found = false;
26134                                            Object.values(targetAttr.options).map(option => {
26135                                                if (found === false && option.label === optionValue) {
26136                                                    optionId = option.id;
26137                                                    found = true;
26138                                                }
26139                                            });
26140
26141                                            const attrId = String(targetAttr.id);
26142                                            let optionVal = String(optionValue);
26143                                            if (found) {
26144                                                optionVal = String(optionId);
26145                                            }
26146
26147                                            applySelection(attribute.code, optionVal);
26148                                        }
26149                                    }
26150                                });
26151                            }, 100);
26152                        });
26153                    }
26154                }
26155            };
26156            // DWS - Configurable product preselect end
26157
26158            const result = Object.assign(
26159                configurableOptionsComponent,
26160                swatchOptionsComponent, {
26161                    productId: '46712',
26162                    productIndex: 0,
26163                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
26164                    showSwatches: false,
26165                    precalcOptions: {},
26166                    originalInit: configurableOptionsComponent.init,
26167                    init() {
26168                        try {
26169                            this.precalcOptions = {};
26170                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
26171                            this.preselectQuerystringItems();
26172                            if (Array.isArray(attrSource)) {
26173                                attrSource.forEach(attr => {
26174                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
26175                                });
26176                            } else if (attrSource && typeof attrSource === 'object') {
26177                                Object.keys(attrSource).forEach(id => {
26178                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
26179                                });
26180                            }
26181                        } catch (e) {
26182                            console.error('Pre-calc error:', e);
26183                        }
26184
26185                        if (typeof this.originalInit === 'function') {
26186                            this.originalInit();
26187                        }
26188
26189                        try {
26190                            this.initShowSwatchesIntersect();
26191                        } catch (e) {
26192                            console.error('intersect error:', e);
26193                        }
26194                    },
26195
26196                    updateGallery() {
26197                        if (!this.productIndex) return;
26198
26199                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
26200                                method: 'GET',
26201                                headers: {
26202                                    'Content-Type': 'application/json',
26203                                    'X-Requested-With': 'XMLHttpRequest'
26204                                }
26205                            })
26206                            .then(response => response.json())
26207                            .then(data => {
26208                                if (data && data.medium) {
26209                                    window.dispatchEvent(new CustomEvent("update-gallery-46712", {
26210                                        detail: data.medium
26211                                    }));
26212                                }
26213                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
26214                    },
26215
26216
26217                    initShowSwatchesIntersect() {
26218                        const observer = new IntersectionObserver(entries => {
26219                            if (entries[0].isIntersecting) {
26220                                this.showSwatches = true;
26221                                observer.disconnect();
26222                            }
26223                        }, {
26224                            rootMargin: '512px'
26225                        });
26226                        observer.observe(this.$el);
26227                    },
26228                    getOptions(attrId) {
26229                        return this.precalcOptions[attrId] || [];
26230                    },
26231                    getOptionsByAttrId() {
26232                        return this.getOptions(this.$el.dataset.attributeId);
26233                    },
26234                    _getItemId() {
26235                        if (this.item && this.item.id) return this.item.id;
26236                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
26237                    },
26238                    getSwatchOptionHtmlId() {
26239                        const itemId = this._getItemId();
26240                        return itemId ? this.$id(`attribute-option-46712-${itemId}`) : '';
26241                    },
26242                    getSwatchOptionHtmlIdGroup() {
26243                        const itemId = this._getItemId();
26244                        return itemId ? [`attribute-option-46712-${itemId}`] : [];
26245                    },
26246                    getAttributeSwatchData(attributeId) {
26247                        const data = Object.assign({}, this.swatchConfig[attributeId]);
26248                        if (data['additional_data']) {
26249                            try {
26250                                data['details'] = JSON.parse(data['additional_data']);
26251                            } catch (e) {
26252                                data['details'] = {};
26253                            }
26254                        }
26255                        return data;
26256                    },
26257                    getSwatchType(attributeId, optionId) {
26258                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
26259                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
26260                        }
26261                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
26262                            this.swatchConfig[attributeId].details.swatch_input_type :
26263                            "empty";
26264                        if (type === 'visual') {
26265                            const config = this.swatchConfig[attributeId];
26266                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
26267                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
26268                            }
26269                            // Fallback to first option type
26270                            for (const oId in config) {
26271                                if (config[oId] && typeof config[oId].type !== 'undefined') {
26272                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
26273                                }
26274                            }
26275                        }
26276                        return type;
26277                    },
26278                    mapSwatchTypeNumberToTypeCode(type) {
26279                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
26280                    },
26281                    isTextSwatch() {
26282                        const itemId = this._getItemId();
26283                        if (!this.$el || !itemId) return false;
26284                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
26285                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
26286                    },
26287
26288                    getSwatchText() {
26289                        const itemId = this._getItemId();
26290                        if (this.item) return this.item.label || '';
26291                        if (!this.$el || !itemId) return '';
26292                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
26293                        const options = attrId ? this.getOptions(attrId) : [];
26294                        const opt = options.find(o => o.id == itemId);
26295                        return opt ? opt.label : '';
26296                    },
26297                    getSwatchBackgroundStyle() {
26298                        const itemId = this._getItemId();
26299                        if (!this.$el || !itemId) return '';
26300                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
26301                        if (!attrId) return '';
26302                        const type = this.getSwatchType(attrId, itemId);
26303                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
26304                            this.swatchConfig[attrId][itemId] :
26305                            null;
26306                        if (!swatchData) return '';
26307                        if (type === "color") return 'background-color:' + swatchData.value;
26308                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
26309                        return '';
26310                    },
26311                    swatchOptionClasses() {
26312                        const itemId = this._getItemId();
26313                        if (!this.$el || !itemId) return {};
26314                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
26315                        return {
26316                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
26317                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
26318                            'w-6 h-6': !this.isTextSwatch()
26319                        }
26320                    },
26321
26322                    onFocusSwatchItem() {
26323                        const itemId = this._getItemId();
26324                        if (itemId) this.focusedLabel = itemId;
26325                    },
26326                    onChangeOption() {
26327                        const itemId = this._getItemId();
26328                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
26329                        if (attrId && itemId) this.changeOption(attrId, itemId);
26330                    },
26331                    changeOption(attributeId, value) {
26332                        if (value === '') {
26333                            return;
26334                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
26335                        } else {
26336                            this.selectedValues[attributeId] = value;
26337                        }
26338
26339                        this.findSimpleIndex();
26340                        this.findAllowedAttributeOptions();
26341                        this.updatePrices();
26342                        this.updateGallery();
26343
26344                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
26345                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
26346
26347                        const eventDetail = {
26348                            productId: this.productId,
26349                            optionId: attributeId,
26350                            value: value,
26351                            productIndex: this.productIndex || 0,
26352                            selectedValues: this.selectedValues,
26353                            candidates: candidates,
26354                            sourceElement: this.$el
26355                        };
26356
26357                        // Dispatch for Amasty
26358                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
26359                            detail: eventDetail
26360                        }));
26361
26362                        // Dispatch for Hyva listing
26363                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
26364                            detail: eventDetail
26365                        }));
26366                    },
26367
26368
26369                    clearOptionIfActive() {
26370                        const itemId = this._getItemId();
26371                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
26372                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
26373                            this.changeOption(attrId, '');
26374
26375                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
26376                            if (!input && this.$el?.querySelector) {
26377                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
26378                            }
26379                            if (!input && this.$el?.closest) {
26380                                const root = this.$el.closest('[data-product-id]') || this.$el;
26381                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
26382                            }
26383                            if (input) {
26384                                input.checked = false;
26385                            }
26386                        }
26387                    },
26388                    get optionIsEnabled() {
26389                        const itemId = this._getItemId();
26390                        if (!this.$el || !itemId) return true;
26391                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
26392                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
26393                        return !!allowedOptions.find(opt => opt.id == itemId);
26394                    },
26395                    get isSelected() {
26396                        const itemId = this._getItemId();
26397                        if (!this.$el || !itemId) return false;
26398                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
26399                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
26400                    },
26401                    get isSwatchRequired() {
26402                        if (!this.$el) return false;
26403                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
26404                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
26405                    },
26406                    focusedLabel: false,
26407                    activeTooltipItem: false,
26408                    tooltipPositionElement: false,
26409                    setActiveTooltipItem() {
26410                        const itemId = this._getItemId();
26411                        if (!this.$el || !itemId) return;
26412                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
26413                        this.activeTooltipItem = {
26414                            attribute: attrId,
26415                            item: itemId,
26416                            index: 0
26417                        };
26418                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
26419                    },
26420                    unsetActiveTooltipItem() {
26421                        this.activeTooltipItem = false;
26422                    }
26423                },
26424                confProdPreSelect()
26425            );
26426
26427            if (result.optionConfig && result.optionConfig.attributes) {
26428                const attributes = result.optionConfig.attributes;
26429                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
26430                    let source = attributes;
26431                    if (Array.isArray(attributes)) {
26432                        source = {};
26433                        attributes.forEach(attr => {
26434                            if (attr && attr.id) source[attr.id] = attr;
26435                        });
26436                    }
26437                    const values = Object.values(source);
26438                    const wrapper = Object.assign(values, source);
26439                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
26440                        value: true,
26441                        enumerable: false
26442                    });
26443                    result.optionConfig.attributes = wrapper;
26444                }
26445            }
26446
26447            return result;
26448        }
26449
26450        window.addEventListener('alpine:init', () => {
26451            Alpine.data('initConfigurableSwatchOptions_46712', initConfigurableSwatchOptions_46712);
26452        }, {
26453            once: true
26454        });
26455    </script>
26455
26456    
26457    <div x-data="initConfigurableSwatchOptions_46712" x-defer="intersect">
26458        <div class="pagebuilder-home-hidden">
26459                                            
26460                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
26461                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
26462                        <template x-if="showSwatches">
26463                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-46712-163" role="radiogroup" aria-label="Einband">
26464                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
26465                                    <div :data-option-id="item.id" style="display: contents">
26466                                        <div x-id="getSwatchOptionHtmlIdGroup">
26467    <template x-if="optionIsEnabled">
26468        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
26468self="unsetActiveTooltipItem">
26469            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-46712-163">
26470            <div>
26471                <template x-if="isTextSwatch">
26472                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
26473                </template>
26474                <template x-if="!optionIsActive(163, item.id)">
26475                    <div>
26476                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
26477                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
26478                        </svg>
26479                    </div>
26480                </template>
26481            </div>
26482        </label>
26483    </template>
26484</div>                                    </div>
26485                                </template>
26486                            </div>
26487                        </template>
26488                    </div>
26489                </div>
26490                    </div>
26491    </div>
26492            
26493                                                <div class="meta py-4 pagebuilder-home-hidden">
26494                <div x-data="initMarketingShortText_46712()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
26495                    <!-- Marketing short text -->
26496                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
26497                    </div>
26498
26499                    <!-- Short description -->
26500                                                                <div class="short-description">
26501                            Die Heroischen Leidenschaften, &raquo;De gl&rsquo;heroici furori&laquo;, sind der letzte der in italienischer Sprache geschriebenen Dialoge Brunos, die s&auml;mtlich zwischen 1583 und 1585 in England verfasst wurden. ...                            <a href="https://meiner.de/fmv_de/von-den-heroischen-leidenschaften-21550" class="underline">mehr</a>
26502                        </div>
26503                                    </div>
26504
26505                <!-- Series  -->
26506                                    <div class="mb-1">
26507                        <span class="sr-only">Reihe:</span>
26508                        <a href="https://meiner.de/fmv_de/programm/reihen/philosophische-bibliothek">
26509                            <span>Philosophische Bibliothek</span>
26510                        </a>
26511                                                    796                                            </div>
26512                
26513                
26514                                                    <div class="mb-1">
26515                        <span x-data="initEditionText_46712()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
26516                            <!-- Marketing short text -->
26517                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, CXL, 711 Seiten.                        </span>
26518                    </div>
26519                
26520                            </div>
26521            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
26522                
26523                <div class="justify-end" x-data="initPriceBox()" @update-prices-46712.window="updatePrice($event.detail);">
26524                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="46712" data-price-box="product-id-46712"><span class="normal-price">
26525    <span x-data x-id="['product\u002Dprice\u002D46712']" class="price-container price-final_price tax weee">
26526            <span class="price-label">Ab</span>
26527                <span class="approx-price">ca. </span>
26528        <span :id="$id('product\u002Dprice\u002D46712')" data-price-amount="98" data-price-type="finalPrice" class="price-wrapper "><span class="price">98,00&nbsp;&euro;</span></span>
26529        </span>
26530</span>
26531
26532
26533</div>                </div>
26534
26535                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
26536                                            <div class="open-access-container open-access-container-46712                    flex mt-4 ml-auto sm:mt-0 hidden">
26537                            <div class="text-gray-700">
26538                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
26539                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
26540                                        Kostenlos online lesen                                    </a>
26541                                </button>
26542                            </div>
26543                        </div>
26544                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Von den heroischen Leidenschaften" aria-label="In den Warenkorb Von den heroischen Leidenschaften" data-addto="cart">
26545                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
26546  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
26547</svg>
26548                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
26549                                        In den Warenkorb                                    </span>
26550                                </button>
26551                                                                                                                    
26552<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(46712)" aria-label="Zur Wunschliste hinzuf&uuml;gen Von den heroischen Leidenschaften" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
26553    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
26554  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
26555</svg>
26556</button>
26557                                    </div>
26558            </div>
26559        </div>
26560        
26560<script>
26561            function initMarketingShortText_46712() {
26562                var marketingShortTextConfig = {};
26563                if (typeof window.initConfigurableSwatchOptions_46712 === "function") {
26564                    var fullConfig = window.initConfigurableSwatchOptions_46712().optionConfig
26565                    var marketingShortTextConfig = fullConfig.marketing_short_text;
26566                }
26567                return {
26568                    marketingShortText: '',
26569                    config: marketingShortTextConfig,
26570                    productId: '46712',
26571                    getMarketingShortText(detail) {
26572                        this.marketingShortText = detail.productIndex ?
26573                            this.config[detail.productIndex] :
26574                            null;
26575                    },
26576                    eventListeners: {
26577                        ['@listing-configurable-selection-changed.window'](event) {
26578                            if (this.productId == event.detail.productId) {
26579                                this.getMarketingShortText(event.detail);
26580                            }
26581
26582                        }
26583                    }
26584                }
26585            }
26586
26587            function initEditionText_46712() {
26588                var editionTextConfig = {};
26589                if (typeof window.initConfigurableSwatchOptions_46712 === "function") {
26590                    var fullConfig = window.initConfigurableSwatchOptions_46712().optionConfig
26591                    var editionTextConfig = fullConfig.edition;
26592                }
26593                return {
26594                    editionText: '',
26595                    config: editionTextConfig,
26596                    productId: '46712',
26597                    getEditionText(detail) {
26598                        this.editionText = detail.productIndex ?
26599                            this.config[detail.productIndex] :
26600                            null;
26601                    },
26602                    eventListeners: {
26603                        ['@listing-configurable-selection-changed.window'](event) {
26604                            if (this.productId == event.detail.productId) {
26605                                this.getEditionText(event.detail);
26606                            }
26607
26608                        }
26609                    }
26610                }
26611            }
26612        </script>
26612
26613                    </form>
26614                            
26615    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/46711/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21548">
26616        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="46711">
26617                                    <a href="https://meiner.de/fmv_de/das-aschermittwochsmahl-21548" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
26618            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-46711.window="$el.src = $event.detail" alt="Das Aschermittwochsmahl" title="Das Aschermittwochsmahl" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351404_1.jpg" :style="{
26619                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
26620                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
26621            }">
26622                    </a>
26623        <div class="product-info flex flex-col flex-grow ">
26624                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
26625                                    <div class="mb-2 text-sm text-gray-500 font-medium">
26626                                                                                    <a href="https://meiner.de/fmv_de/person/Giordano-Bruno-3772/" class="mb-2">
26627                                    Giordano Bruno                                                                    </a>
26628                                                                                                                                    </div>
26629                                <a class="product-item-link" href="https://meiner.de/fmv_de/das-aschermittwochsmahl-21548">
26630                    Das Aschermittwochsmahl                </a>
26631                            </div>
26632
26633            <div x-data="initEditionText_46711()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
26634                <!-- Marketing short text -->
26635                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
26636                </div>
26637            </div>
26638
26639                            <div class="py-1 grid  mb-4 ">
26640                    
26641                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":46711,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":46711,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46693":"1"},"childProductsAlertStatus":{"46693":"0"},"indexMapping":{"163:11":46693},"availabilityMessages":{"46693":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"46711":{"status":0},"46693":{"status":0}}},"availabilityMessages":{"46693":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"46711":{"status":0},"46693":{"status":0}}}'>
26642        <template x-if="containerVisible">
26643                            <!-- Popup Trigger -->
26644                <div>
26645                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
26646                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
26647                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
26648  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
26649<title>bell</title></svg>
26650</span>
26651                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
26652
26653                    <!-- Popup Modal -->
26654                    <template x-if="showModal">
26655                        <template x-teleport=".page-wrapper">
26656                            <div x-cloak class="fixed inset-0 flex items-center justify-center
26657                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
26658                                <div class="relative bg-white rounded-lg shadow-xl
26659                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
26660                                    <div class="p-6">
26661                                        <!-- Subscription Form for Popup -->
26662                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
26663                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
26664                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
26665                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
26666
26667                                            <div class="flex flex-col gap-3">
26668                                                <div class="flex-grow grow">
26669                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
26670                                                        shadow-xs focus:outline-none focus:outline-hidden
26671                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
26672                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
26673                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
26674                                                </div>
26675                                                <input type="hidden" name="product_id" :value="currentProductId">
26676                                                <input type="hidden" name="type" value="email">
26677
26678                                                
26679                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
26680
26681                                                <div class="amxnotif_guest_action">
26682                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
26683                                                        rounded-md focus:outline-none
26684                                                        focus:outline-hidden focus:ring-2
26685                                                        focus:ring-offset-2 disabled:opacity-50
26686                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
26687                                                        Benachrichtigen                                                    </button>
26688                                                </div>
26689                                            </div>
26690
26691                                                                                            <div class="flex items-start pt-2">
26692                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
26693                                                        text-blue-600 border-gray-300 rounded-sm">
26694                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
26695                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
26696                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
26697                                                </div>
26698                                                                                    </form>
26699                                    </div>
26700
26701                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
26702                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
26703                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
26704  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
26705<title>x</title></svg>
26706                                    </button>
26707                                </div>
26708                            </div>
26709                        </template>
26710                    </template>
26711                </div>
26712                    </template>
26713    </div>
26714
26715<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_46711" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":46711,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46693":"1"},"childProductsAlertStatus":{"46693":"0"},"indexMapping":"{\u0022163:11\u0022:46693}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":46711,"availabilityMessages":{"46693":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"46711":{"status":0},"46693":{"status":0}}}'>
26716    
26717    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
26718        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
26719        <span x-html="optionsLabelText"></span>
26720    </p>
26721</div>                </div>
26722            
26723                                
26723<script>
26724        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
26725            try {
26726                const attributes = (config && config.attributes) ? config.attributes : null;
26727                if (!attributes) return [];
26728                let attr = null;
26729                if (Array.isArray(attributes)) {
26730                    for (let i = 0; i < attributes.length; i++) {
26731                        const a = attributes[i];
26732                        if (a && a.id == attrId) {
26733                            attr = a;
26734                            break;
26735                        }
26736                    }
26737                } else {
26738                    attr = attributes[attrId];
26739                }
26740                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
26741            } catch (e) {
26742                return [];
26743            }
26744        };
26745
26746        function initConfigurableSwatchOptions_46711() {
26747            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"11","label":"Gebunden","products":["46693"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46693":{"baseOldPrice":{"amount":91.588784046729},"oldPrice":{"amount":98},"basePrice":{"amount":91.588784046729},"finalPrice":{"amount":98},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":91.588784046729},"oldPrice":{"amount":98},"basePrice":{"amount":82.352940176471},"finalPrice":{"amount":98},"isApproxPrice":"0"},"productId":"46711","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46693":{"163":"11"}},"salable":{"163":{"11":["46693"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"46693":"005140"},"output":{"46693":"Gebunden"},"original_name":{"46693":"La cena de le ceneri"},"openaccess_license_link":{"46693":""},"openaccess_license_name":{"46693":""},"openaccess_external_link":{"46693":""},"gpsr_safety_info":{"46693":""},"description":{"46693":"Giordano Brunos Schrift \u00bbDas Aschermittwochsmahl\u00ab, verfasst in London im Jahr 1584, gilt als Meilenstein der Wissenschaftsgeschichte. Das seit Jahrhunderten fraglos akzeptierte Weltbild eines endlichen Kosmos weicht der Vorstellung eines unendlichen Universums mit unz\u00e4hligen feurigen Sonnen und w\u00e4ssrigen Erden. Die kopernikanische Revolution wird vollendet, ein irreversibler Schritt in die Neuzeit ist vollzogen. <br\/><br\/>Freilich gl\u00e4nzt das \u00bbAschermittwochsmahl\u00ab auch literarisch. Mit Bedacht verlegt der Autor die Handlung auf den ersten Tag nach dem Karneval. Im Spiel mit den M\u00f6glichkeiten der Satire und im Vertrauen auf die subversive Kraft des Lachens wird eine Gesellschaft angeprangert, die \u00fcber die Fastnachtszeit hinaus weiterhin n\u00e4rrisch ist. Pedantische Gelehrte und falsche Lehren sind Teil dieser nach wie vor \u00bbverkehrten Welt\u00ab, die es zu demaskieren gilt und die der geistigen Umkehr bedarf. <br\/><br\/>Doch das \u00bbAschermittwochsmahl\u00ab ist mehr als kosmologische Spekulation oder Gesellschaftskritik. Betroffen von den erbitterten theologischen Kontroversen seiner Zeit versteht Bruno sein Programm auch als Erneuerung einer richtig verstandenen Philosophie und Religion. Im R\u00fcckgriff auf die \u00bbwahre alte Philosophie\u00ab der Antike, Quellen des Christentums sowie bisher kaum beachtete Traditionen des Judaismus begreift Bruno das Universum als unendliche beseelte Einheit und als physikalischen Ausdruck g\u00f6ttlicher Friedensstiftung, welche die widerstreitenden Elemente der Himmelsk\u00f6rper zu einem harmonischen Organismus f\u00fcgt. Schlie\u00dflich ist das \u00bbAschermittwochsmahl\u00ab kirchengeschichtlich von Bedeutung, erregten die darin enthaltenen Theorien doch die Aufmerksamkeit der Inquisition. So wird Brunos Text ob seines Reichtums an Ans\u00e4tzen und Material zu einer lohnenden Lekt\u00fcre f\u00fcr Wissenschaftshistoriker, Literatur- und Religionswissenschaftler, Philosophen und Theologen.<br\/><br\/>Der Text dieses Bandes folgt seitenidentisch Bd. 2 der Ausgabe \u00bbGiordano Bruno Werke\u00ab, herausgegeben von Thomas Leinkauf."},"doi":{"46693":""},"isbn":{"46693":"978-3-7873-5140-4"},"marketing_short_text":{"46693":""},"recension_text":{"46693":""},"language":{"46693":""},"cover":{"46693":"Gebunden"},"pages":{"46693":"CCCXXI, 546 Seiten."},"edition":{"46693":""},"pod":{"46693":"Nein"},"copyright_year":{"46693":""},"vlb_tix_link":{"46693":"https:\/\/neu.vlbtix.de\/products\/9783787351404?type=gtin"},"defaultValues":{"163":"11"}};
26748            const swatchConfig = {"163":{"11":{"type":"0","value":"Gebunden","label":"Gebunden"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
26749
26750            if (typeof window.amxnotif_wrap_attributes === 'function') {
26751                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
26752                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
26753            }
26754
26755            const configurableOptionsComponent = initConfigurableOptions(
26756                '46711',
26757                config
26758            );
26759            const swatchOptionsComponent = initSwatchOptions(
26760                swatchConfig
26761            );
26762
26763            // DWS - Configurable product preselect start
26764            const confProdPreSelect = () => {
26765                return {
26766                    preselectQuerystringItems() {
26767                        var data = {"id":"46693","output":"11"};
26768                        const urlQueryParams = new URLSearchParams(window.location.search);
26769
26770                                                this.$nextTick(() => {
26771                            setTimeout(() => {
26772                                const rootEl = this.$root || this.$el;
26773                                if (!rootEl) return;
26774
26775                                const applySelection = (attrCode, attrValue) => {
26776                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
26777
26778                                    const attributes = Object.values(this.optionConfig.attributes || {});
26779                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
26780
26781                                    if (targetAttr) {
26782                                        const attrId = String(targetAttr.id);
26783                                        const optionVal = String(attrValue);
26784
26785                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
26786
26787                                        if (inputEl) {
26788                                                                                        inputEl.click();
26789                                            inputEl.dispatchEvent(new Event('change', {
26790                                                bubbles: true
26791                                            }));
26792                                        } else {
26793                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
26794                                            if (selectEl) {
26795                                                selectEl.value = optionVal;
26796                                                selectEl.dispatchEvent(new Event('change', {
26797                                                    bubbles: true
26798                                                }));
26799                                            }
26800                                        }
26801
26802                                                                                this.changeOption(attrId, optionVal, false);
26803                                    }
26804                                };
26805
26806                                                                if (data && typeof data === 'object') {
26807                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
26808                                }
26809
26810                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
26811                                    if (attribute && attribute.code) {
26812                                        let optionValue = urlQueryParams.get(attribute.code);
26813                                        if (optionValue) {
26814                                            let optionId = false;
26815                                            const attributes = Object.values(this.optionConfig.attributes || {});
26816                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
26817
26818                                            let found = false;
26819                                            Object.values(targetAttr.options).map(option => {
26820                                                if (found === false && option.label === optionValue) {
26821                                                    optionId = option.id;
26822                                                    found = true;
26823                                                }
26824                                            });
26825
26826                                            const attrId = String(targetAttr.id);
26827                                            let optionVal = String(optionValue);
26828                                            if (found) {
26829                                                optionVal = String(optionId);
26830                                            }
26831
26832                                            applySelection(attribute.code, optionVal);
26833                                        }
26834                                    }
26835                                });
26836                            }, 100);
26837                        });
26838                    }
26839                }
26840            };
26841            // DWS - Configurable product preselect end
26842
26843            const result = Object.assign(
26844                configurableOptionsComponent,
26845                swatchOptionsComponent, {
26846                    productId: '46711',
26847                    productIndex: 0,
26848                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
26849                    showSwatches: false,
26850                    precalcOptions: {},
26851                    originalInit: configurableOptionsComponent.init,
26852                    init() {
26853                        try {
26854                            this.precalcOptions = {};
26855                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
26856                            this.preselectQuerystringItems();
26857                            if (Array.isArray(attrSource)) {
26858                                attrSource.forEach(attr => {
26859                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
26860                                });
26861                            } else if (attrSource && typeof attrSource === 'object') {
26862                                Object.keys(attrSource).forEach(id => {
26863                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
26864                                });
26865                            }
26866                        } catch (e) {
26867                            console.error('Pre-calc error:', e);
26868                        }
26869
26870                        if (typeof this.originalInit === 'function') {
26871                            this.originalInit();
26872                        }
26873
26874                        try {
26875                            this.initShowSwatchesIntersect();
26876                        } catch (e) {
26877                            console.error('intersect error:', e);
26878                        }
26879                    },
26880
26881                    updateGallery() {
26882                        if (!this.productIndex) return;
26883
26884                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
26885                                method: 'GET',
26886                                headers: {
26887                                    'Content-Type': 'application/json',
26888                                    'X-Requested-With': 'XMLHttpRequest'
26889                                }
26890                            })
26891                            .then(response => response.json())
26892                            .then(data => {
26893                                if (data && data.medium) {
26894                                    window.dispatchEvent(new CustomEvent("update-gallery-46711", {
26895                                        detail: data.medium
26896                                    }));
26897                                }
26898                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
26899                    },
26900
26901
26902                    initShowSwatchesIntersect() {
26903                        const observer = new IntersectionObserver(entries => {
26904                            if (entries[0].isIntersecting) {
26905                                this.showSwatches = true;
26906                                observer.disconnect();
26907                            }
26908                        }, {
26909                            rootMargin: '512px'
26910                        });
26911                        observer.observe(this.$el);
26912                    },
26913                    getOptions(attrId) {
26914                        return this.precalcOptions[attrId] || [];
26915                    },
26916                    getOptionsByAttrId() {
26917                        return this.getOptions(this.$el.dataset.attributeId);
26918                    },
26919                    _getItemId() {
26920                        if (this.item && this.item.id) return this.item.id;
26921                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
26922                    },
26923                    getSwatchOptionHtmlId() {
26924                        const itemId = this._getItemId();
26925                        return itemId ? this.$id(`attribute-option-46711-${itemId}`) : '';
26926                    },
26927                    getSwatchOptionHtmlIdGroup() {
26928                        const itemId = this._getItemId();
26929                        return itemId ? [`attribute-option-46711-${itemId}`] : [];
26930                    },
26931                    getAttributeSwatchData(attributeId) {
26932                        const data = Object.assign({}, this.swatchConfig[attributeId]);
26933                        if (data['additional_data']) {
26934                            try {
26935                                data['details'] = JSON.parse(data['additional_data']);
26936                            } catch (e) {
26937                                data['details'] = {};
26938                            }
26939                        }
26940                        return data;
26941                    },
26942                    getSwatchType(attributeId, optionId) {
26943                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
26944                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
26945                        }
26946                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
26947                            this.swatchConfig[attributeId].details.swatch_input_type :
26948                            "empty";
26949                        if (type === 'visual') {
26950                            const config = this.swatchConfig[attributeId];
26951                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
26952                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
26953                            }
26954                            // Fallback to first option type
26955                            for (const oId in config) {
26956                                if (config[oId] && typeof config[oId].type !== 'undefined') {
26957                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
26958                                }
26959                            }
26960                        }
26961                        return type;
26962                    },
26963                    mapSwatchTypeNumberToTypeCode(type) {
26964                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
26965                    },
26966                    isTextSwatch() {
26967                        const itemId = this._getItemId();
26968                        if (!this.$el || !itemId) return false;
26969                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
26970                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
26971                    },
26972
26973                    getSwatchText() {
26974                        const itemId = this._getItemId();
26975                        if (this.item) return this.item.label || '';
26976                        if (!this.$el || !itemId) return '';
26977                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
26978                        const options = attrId ? this.getOptions(attrId) : [];
26979                        const opt = options.find(o => o.id == itemId);
26980                        return opt ? opt.label : '';
26981                    },
26982                    getSwatchBackgroundStyle() {
26983                        const itemId = this._getItemId();
26984                        if (!this.$el || !itemId) return '';
26985                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
26986                        if (!attrId) return '';
26987                        const type = this.getSwatchType(attrId, itemId);
26988                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
26989                            this.swatchConfig[attrId][itemId] :
26990                            null;
26991                        if (!swatchData) return '';
26992                        if (type === "color") return 'background-color:' + swatchData.value;
26993                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
26994                        return '';
26995                    },
26996                    swatchOptionClasses() {
26997                        const itemId = this._getItemId();
26998                        if (!this.$el || !itemId) return {};
26999                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
27000                        return {
27001                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
27002                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
27003                            'w-6 h-6': !this.isTextSwatch()
27004                        }
27005                    },
27006
27007                    onFocusSwatchItem() {
27008                        const itemId = this._getItemId();
27009                        if (itemId) this.focusedLabel = itemId;
27010                    },
27011                    onChangeOption() {
27012                        const itemId = this._getItemId();
27013                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
27014                        if (attrId && itemId) this.changeOption(attrId, itemId);
27015                    },
27016                    changeOption(attributeId, value) {
27017                        if (value === '') {
27018                            return;
27019                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
27020                        } else {
27021                            this.selectedValues[attributeId] = value;
27022                        }
27023
27024                        this.findSimpleIndex();
27025                        this.findAllowedAttributeOptions();
27026                        this.updatePrices();
27027                        this.updateGallery();
27028
27029                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
27030                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
27031
27032                        const eventDetail = {
27033                            productId: this.productId,
27034                            optionId: attributeId,
27035                            value: value,
27036                            productIndex: this.productIndex || 0,
27037                            selectedValues: this.selectedValues,
27038                            candidates: candidates,
27039                            sourceElement: this.$el
27040                        };
27041
27042                        // Dispatch for Amasty
27043                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
27044                            detail: eventDetail
27045                        }));
27046
27047                        // Dispatch for Hyva listing
27048                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
27049                            detail: eventDetail
27050                        }));
27051                    },
27052
27053
27054                    clearOptionIfActive() {
27055                        const itemId = this._getItemId();
27056                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
27057                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
27058                            this.changeOption(attrId, '');
27059
27060                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
27061                            if (!input && this.$el?.querySelector) {
27062                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
27063                            }
27064                            if (!input && this.$el?.closest) {
27065                                const root = this.$el.closest('[data-product-id]') || this.$el;
27066                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
27067                            }
27068                            if (input) {
27069                                input.checked = false;
27070                            }
27071                        }
27072                    },
27073                    get optionIsEnabled() {
27074                        const itemId = this._getItemId();
27075                        if (!this.$el || !itemId) return true;
27076                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
27077                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
27078                        return !!allowedOptions.find(opt => opt.id == itemId);
27079                    },
27080                    get isSelected() {
27081                        const itemId = this._getItemId();
27082                        if (!this.$el || !itemId) return false;
27083                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
27084                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
27085                    },
27086                    get isSwatchRequired() {
27087                        if (!this.$el) return false;
27088                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
27089                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
27090                    },
27091                    focusedLabel: false,
27092                    activeTooltipItem: false,
27093                    tooltipPositionElement: false,
27094                    setActiveTooltipItem() {
27095                        const itemId = this._getItemId();
27096                        if (!this.$el || !itemId) return;
27097                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
27098                        this.activeTooltipItem = {
27099                            attribute: attrId,
27100                            item: itemId,
27101                            index: 0
27102                        };
27103                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
27104                    },
27105                    unsetActiveTooltipItem() {
27106                        this.activeTooltipItem = false;
27107                    }
27108                },
27109                confProdPreSelect()
27110            );
27111
27112            if (result.optionConfig && result.optionConfig.attributes) {
27113                const attributes = result.optionConfig.attributes;
27114                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
27115                    let source = attributes;
27116                    if (Array.isArray(attributes)) {
27117                        source = {};
27118                        attributes.forEach(attr => {
27119                            if (attr && attr.id) source[attr.id] = attr;
27120                        });
27121                    }
27122                    const values = Object.values(source);
27123                    const wrapper = Object.assign(values, source);
27124                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
27125                        value: true,
27126                        enumerable: false
27127                    });
27128                    result.optionConfig.attributes = wrapper;
27129                }
27130            }
27131
27132            return result;
27133        }
27134
27135        window.addEventListener('alpine:init', () => {
27136            Alpine.data('initConfigurableSwatchOptions_46711', initConfigurableSwatchOptions_46711);
27137        }, {
27138            once: true
27139        });
27140    </script>
27140
27141    
27142    <div x-data="initConfigurableSwatchOptions_46711" x-defer="intersect">
27143        <div class="pagebuilder-home-hidden">
27144                                            
27145                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
27146                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
27147                        <template x-if="showSwatches">
27148                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-46711-163" role="radiogroup" aria-label="Einband">
27149                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
27150                                    <div :data-option-id="item.id" style="display: contents">
27151                                        <div x-id="getSwatchOptionHtmlIdGroup">
27152    <template x-if="optionIsEnabled">
27153        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
27153self="unsetActiveTooltipItem">
27154            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-46711-163">
27155            <div>
27156                <template x-if="isTextSwatch">
27157                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
27158                </template>
27159                <template x-if="!optionIsActive(163, item.id)">
27160                    <div>
27161                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
27162                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
27163                        </svg>
27164                    </div>
27165                </template>
27166            </div>
27167        </label>
27168    </template>
27169</div>                                    </div>
27170                                </template>
27171                            </div>
27172                        </template>
27173                    </div>
27174                </div>
27175                    </div>
27176    </div>
27177            
27178                                                <div class="meta py-4 pagebuilder-home-hidden">
27179                <div x-data="initMarketingShortText_46711()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
27180                    <!-- Marketing short text -->
27181                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
27182                    </div>
27183
27184                    <!-- Short description -->
27185                                                                <div class="short-description">
27186                            Giordano Brunos Schrift &raquo;Das Aschermittwochsmahl&laquo;, verfasst in London im Jahr 1584, gilt als Meilenstein der Wissenschaftsgeschichte. Das seit Jahrhunderten fraglos akzeptierte Weltbild eines ...                            <a href="https://meiner.de/fmv_de/das-aschermittwochsmahl-21548" class="underline">mehr</a>
27187                        </div>
27188                                    </div>
27189
27190                <!-- Series  -->
27191                                    <div class="mb-1">
27192                        <span class="sr-only">Reihe:</span>
27193                        <a href="https://meiner.de/fmv_de/programm/reihen/philosophische-bibliothek">
27194                            <span>Philosophische Bibliothek</span>
27195                        </a>
27196                                                    791                                            </div>
27197                
27198                
27199                                                    <div class="mb-1">
27200                        <span x-data="initEditionText_46711()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
27201                            <!-- Marketing short text -->
27202                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, CCCXXI, 546 Seiten.                        </span>
27203                    </div>
27204                
27205                            </div>
27206            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
27207                
27208                <div class="justify-end" x-data="initPriceBox()" @update-prices-46711.window="updatePrice($event.detail);">
27209                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="46711" data-price-box="product-id-46711"><span class="normal-price">
27210    <span x-data x-id="['product\u002Dprice\u002D46711']" class="price-container price-final_price tax weee">
27211            <span class="price-label">Ab</span>
27212                <span class="approx-price">ca. </span>
27213        <span :id="$id('product\u002Dprice\u002D46711')" data-price-amount="98" data-price-type="finalPrice" class="price-wrapper "><span class="price">98,00&nbsp;&euro;</span></span>
27214        </span>
27215</span>
27216
27217
27218</div>                </div>
27219
27220                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
27221                                            <div class="open-access-container open-access-container-46711                    flex mt-4 ml-auto sm:mt-0 hidden">
27222                            <div class="text-gray-700">
27223                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
27224                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
27225                                        Kostenlos online lesen                                    </a>
27226                                </button>
27227                            </div>
27228                        </div>
27229                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Das Aschermittwochsmahl" aria-label="In den Warenkorb Das Aschermittwochsmahl" data-addto="cart">
27230                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
27231  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
27232</svg>
27233                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
27234                                        In den Warenkorb                                    </span>
27235                                </button>
27236                                                                                                                    
27237<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(46711)" aria-label="Zur Wunschliste hinzuf&uuml;gen Das Aschermittwochsmahl" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
27238    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
27239  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
27240</svg>
27241</button>
27242                                    </div>
27243            </div>
27244        </div>
27245        
27245<script>
27246            function initMarketingShortText_46711() {
27247                var marketingShortTextConfig = {};
27248                if (typeof window.initConfigurableSwatchOptions_46711 === "function") {
27249                    var fullConfig = window.initConfigurableSwatchOptions_46711().optionConfig
27250                    var marketingShortTextConfig = fullConfig.marketing_short_text;
27251                }
27252                return {
27253                    marketingShortText: '',
27254                    config: marketingShortTextConfig,
27255                    productId: '46711',
27256                    getMarketingShortText(detail) {
27257                        this.marketingShortText = detail.productIndex ?
27258                            this.config[detail.productIndex] :
27259                            null;
27260                    },
27261                    eventListeners: {
27262                        ['@listing-configurable-selection-changed.window'](event) {
27263                            if (this.productId == event.detail.productId) {
27264                                this.getMarketingShortText(event.detail);
27265                            }
27266
27267                        }
27268                    }
27269                }
27270            }
27271
27272            function initEditionText_46711() {
27273                var editionTextConfig = {};
27274                if (typeof window.initConfigurableSwatchOptions_46711 === "function") {
27275                    var fullConfig = window.initConfigurableSwatchOptions_46711().optionConfig
27276                    var editionTextConfig = fullConfig.edition;
27277                }
27278                return {
27279                    editionText: '',
27280                    config: editionTextConfig,
27281                    productId: '46711',
27282                    getEditionText(detail) {
27283                        this.editionText = detail.productIndex ?
27284                            this.config[detail.productIndex] :
27285                            null;
27286                    },
27287                    eventListeners: {
27288                        ['@listing-configurable-selection-changed.window'](event) {
27289                            if (this.productId == event.detail.productId) {
27290                                this.getEditionText(event.detail);
27291                            }
27292
27293                        }
27294                    }
27295                }
27296            }
27297        </script>
27297
27298                    </form>
27299                            
27300    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/46710/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21415">
27301        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="46710">
27302                                    <a href="https://meiner.de/fmv_de/der-kerzenzieher-21415" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
27303            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-46710.window="$el.src = $event.detail" alt="Der Kerzenzieher" title="Der Kerzenzieher" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351251_1.jpg" :style="{
27304                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
27305                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
27306            }">
27307                    </a>
27308        <div class="product-info flex flex-col flex-grow ">
27309                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
27310                                    <div class="mb-2 text-sm text-gray-500 font-medium">
27311                                                                                    <a href="https://meiner.de/fmv_de/person/Giordano-Bruno-3772/" class="mb-2">
27312                                    Giordano Bruno                                                                    </a>
27313                                                                                                                                    </div>
27314                                <a class="product-item-link" href="https://meiner.de/fmv_de/der-kerzenzieher-21415">
27315                    Der Kerzenzieher                </a>
27316                            </div>
27317
27318            <div x-data="initEditionText_46710()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
27319                <!-- Marketing short text -->
27320                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
27321                </div>
27322            </div>
27323
27324                            <div class="py-1 grid  mb-4 ">
27325                    
27326                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":46710,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":46710,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46692":"1","6977":"1"},"childProductsAlertStatus":{"46692":"0","6977":"0"},"indexMapping":{"163:11":46692,"163:8":6977},"availabilityMessages":{"46692":"Lieferbar innerhalb von 3-5 Tagen","6977":"Download sofort  verf\u00fcgbar"},"openAccess":{"46710":{"status":0},"46692":{"status":0},"6977":{"status":0}}},"availabilityMessages":{"46692":"Lieferbar innerhalb von 3-5 Tagen","6977":"Download sofort  verf\u00fcgbar"},"openAccess":{"46710":{"status":0},"46692":{"status":0},"6977":{"status":0}}}'>
27327        <template x-if="containerVisible">
27328                            <!-- Popup Trigger -->
27329                <div>
27330                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
27331                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
27332                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
27333  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
27334<title>bell</title></svg>
27335</span>
27336                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
27337
27338                    <!-- Popup Modal -->
27339                    <template x-if="showModal">
27340                        <template x-teleport=".page-wrapper">
27341                            <div x-cloak class="fixed inset-0 flex items-center justify-center
27342                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
27343                                <div class="relative bg-white rounded-lg shadow-xl
27344                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
27345                                    <div class="p-6">
27346                                        <!-- Subscription Form for Popup -->
27347                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
27348                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
27349                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
27350                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
27351
27352                                            <div class="flex flex-col gap-3">
27353                                                <div class="flex-grow grow">
27354                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
27355                                                        shadow-xs focus:outline-none focus:outline-hidden
27356                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
27357                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
27358                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
27359                                                </div>
27360                                                <input type="hidden" name="product_id" :value="currentProductId">
27361                                                <input type="hidden" name="type" value="email">
27362
27363                                                
27364                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
27365
27366                                                <div class="amxnotif_guest_action">
27367                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
27368                                                        rounded-md focus:outline-none
27369                                                        focus:outline-hidden focus:ring-2
27370                                                        focus:ring-offset-2 disabled:opacity-50
27371                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
27372                                                        Benachrichtigen                                                    </button>
27373                                                </div>
27374                                            </div>
27375
27376                                                                                            <div class="flex items-start pt-2">
27377                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
27378                                                        text-blue-600 border-gray-300 rounded-sm">
27379                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
27380                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
27381                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
27382                                                </div>
27383                                                                                    </form>
27384                                    </div>
27385
27386                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
27387                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
27388                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
27389  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
27390<title>x</title></svg>
27391                                    </button>
27392                                </div>
27393                            </div>
27394                        </template>
27395                    </template>
27396                </div>
27397                    </template>
27398    </div>
27399
27400<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_46710" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":46710,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46692":"1","6977":"1"},"childProductsAlertStatus":{"46692":"0","6977":"0"},"indexMapping":"{\u0022163:11\u0022:46692,\u0022163:8\u0022:6977}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":46710,"availabilityMessages":{"46692":"Lieferbar innerhalb von 3-5 Tagen","6977":"Download sofort  verf\u00fcgbar"},"openAccess":{"46710":{"status":0},"46692":{"status":0},"6977":{"status":0}}}'>
27401    
27402    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
27403        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
27404        <span x-html="optionsLabelText"></span>
27405    </p>
27406</div>                </div>
27407            
27408                                
27408<script>
27409        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
27410            try {
27411                const attributes = (config && config.attributes) ? config.attributes : null;
27412                if (!attributes) return [];
27413                let attr = null;
27414                if (Array.isArray(attributes)) {
27415                    for (let i = 0; i < attributes.length; i++) {
27416                        const a = attributes[i];
27417                        if (a && a.id == attrId) {
27418                            attr = a;
27419                            break;
27420                        }
27421                    }
27422                } else {
27423                    attr = attributes[attrId];
27424                }
27425                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
27426            } catch (e) {
27427                return [];
27428            }
27429        };
27430
27431        function initConfigurableSwatchOptions_46710() {
27432            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"11","label":"Gebunden","products":["46692"]},{"id":"8","label":"PDF","products":["6977"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46692":{"baseOldPrice":{"amount":63.551400869159},"oldPrice":{"amount":68},"basePrice":{"amount":63.551400869159},"finalPrice":{"amount":68},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"6977":{"baseOldPrice":{"amount":46.719625168224},"oldPrice":{"amount":49.99},"basePrice":{"amount":46.719625168224},"finalPrice":{"amount":49.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":46.719625168224},"oldPrice":{"amount":49.99},"basePrice":{"amount":42.008402361345},"finalPrice":{"amount":49.99},"isApproxPrice":null},"productId":"46710","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46692":{"163":"11"},"6977":{"163":"8"}},"salable":{"163":{"11":["46692"],"8":["6977"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"46692":"005125","6977":"003515"},"output":{"6977":"PDF","46692":"Gebunden"},"original_name":{"6977":"Candelaio","46692":"Candelaio"},"openaccess_license_link":{"6977":"","46692":""},"openaccess_license_name":{"6977":"","46692":""},"openaccess_external_link":{"6977":"","46692":""},"gpsr_safety_info":{"6977":"","46692":""},"description":{"6977":"Diese turbulente, im zeitgen\u00f6ssischen Neapel angesiedelte Kom\u00f6die ver\u00f6ffentlichte Bruno 1582 in Paris als sein erstes Werk in italienischer Sprache. Die drei Hauptfiguren in diesem sprachlich und soziologisch erstaunlich detailgetreuen Notturno sind ein geldgieriger Alchemist, ein ehebrecherischer P\u00e4derast (nach diesem \u00bbKerzenzieher\u00ab ist das St\u00fcck benannt) und ein hochm\u00fctiger Schulmeister. Bestraft werden die negativen Protagonisten durch Intrigen, die der Maler und Meisterillusion\u00e4r Gioan Bernardo zusammen mit der Kupplerin Lucia ausheckt.<br\/><br\/>Der \u00bbCandelaio\u00ab ist mehr als ein literarisches Bravourst\u00fcck mit mehreren ineinander verwobenen Handlungsstr\u00e4ngen sowie einer Liebeserkl\u00e4rung des Autors an seine Heimat Neapel. Dass hier zentrale Positionen angelegt sind, die Bruno in seinen philosophischen Schriften ausf\u00fchrt, ist bislang zu wenig beachtet worden: Themen wie die Dialektik von Sein und Schein, das Wirken der Fortuna in einem zyklischen Weltbild und Kommentare zur gleichzeitig in den lateinischen Schriften des Autors entwickelten Ged\u00e4chtniskunst sind in die Handlung eingebettet. So betrachtet erschlie\u00dft sich das St\u00fcck als literarisches Experiment, in welchem Bruno versucht, das neue Denken in neuem Gewand auf der B\u00fchne zu pr\u00e4sentieren. <br\/><br\/>Zahlreiche intertextuelle Verweise auf Klassiker der italienischen und der antiken Literatur machen den Candelaio nicht nur f\u00fcr die Literatur- und Theaterwissenschaft, sondern auch f\u00fcr die Kulturwissenschaft zu einem beachtenswerten Quellentext. Der Text dieses Bandes folgt seitenidentisch Bd. 1 der Ausgabe \u00bbGiordano Bruno Werke\u00ab, herausgegeben von Thomas Leinkauf.","46692":"Diese turbulente, im zeitgen\u00f6ssischen Neapel angesiedelte Kom\u00f6die ver\u00f6ffentlichte Bruno 1582 in Paris als sein erstes Werk in italienischer Sprache. Die drei Hauptfiguren in diesem sprachlich und soziologisch erstaunlich detailgetreuen Notturno sind ein geldgieriger Alchemist, ein ehebrecherischer P\u00e4derast (nach diesem \u00bbKerzenzieher\u00ab ist das St\u00fcck benannt) und ein hochm\u00fctiger Schulmeister. Bestraft werden die negativen Protagonisten durch Intrigen, die der Maler und Meisterillusion\u00e4r Gioan Bernardo zusammen mit der Kupplerin Lucia ausheckt.<br\/><br\/>Der \u00bbCandelaio\u00ab ist mehr als ein literarisches Bravourst\u00fcck mit mehreren ineinander verwobenen Handlungsstr\u00e4ngen sowie einer Liebeserkl\u00e4rung des Autors an seine Heimat Neapel. Dass hier zentrale Positionen angelegt sind, die Bruno in seinen philosophischen Schriften ausf\u00fchrt, ist bislang zu wenig beachtet worden: Themen wie die Dialektik von Sein und Schein, das Wirken der Fortuna in einem zyklischen Weltbild und Kommentare zur gleichzeitig in den lateinischen Schriften des Autors entwickelten Ged\u00e4chtniskunst sind in die Handlung eingebettet. So betrachtet erschlie\u00dft sich das St\u00fcck als literarisches Experiment, in welchem Bruno versucht, das neue Denken in neuem Gewand auf der B\u00fchne zu pr\u00e4sentieren. <br\/><br\/>Zahlreiche intertextuelle Verweise auf Klassiker der italienischen und der antiken Literatur machen den Candelaio nicht nur f\u00fcr die Literatur- und Theaterwissenschaft, sondern auch f\u00fcr die Kulturwissenschaft zu einem beachtenswerten Quellentext. Der Text dieses Bandes folgt seitenidentisch Bd. 1 der Ausgabe \u00bbGiordano Bruno Werke\u00ab, herausgegeben von Thomas Leinkauf."},"doi":{"6977":"10.28937\/978-3-7873-3515-2","46692":""},"isbn":{"6977":"978-3-7873-3515-2","46692":"978-3-7873-5125-1"},"marketing_short_text":{"6977":"","46692":""},"recension_text":{"6977":"<div class=\"reviews\">\r\n<div class=\"review\">... an excellent example of Europe\u2019s continuing celebration of western speculative thought. New research especially in early German Idealism, but also in Renaissance and early modern thought in many disciplines mandated a 
27432new, authoritative Bruno edition. [...] But Leinkauf\u2019s edition is primarily the first philologically sound edition of Bruno\u2019s works. [...] So those \u2039introductions\u201d to the seven volumes are essentially expositions of the content of the work, constantly referring to and quoting Bruno\u2019s work itself with precise page references. The reader finds him- or herself reading the book forward and backward at the same time, not only reading the text itself, but also making use of the helpful notes and indices for further orientation.<\/div>\r\n<div class=\"source\">Rolf Ahlers, Bochumer Philosophisches Jahrbuch f\u00fcr Antike und Mittelalter, Volume 20, 2017.<\/div>\r\n<\/div>","46692":""},"language":{"6977":"Italienisch-Deutsch","46692":""},"cover":{"6977":"","46692":"Gebunden"},"pages":{"6977":"CXXVIII, 343 Seiten","46692":"CXXVIII, 343 Seiten."},"edition":{"6977":"Unver\u00e4ndertes eBook der 1. Auflage von 2013","46692":""},"pod":{"6977":"Nein","46692":"Nein"},"copyright_year":{"6977":"","46692":""},"vlb_tix_link":{"6977":"","46692":"https:\/\/neu.vlbtix.de\/products\/9783787351251?type=gtin"},"defaultValues":{"163":"11"}};
27433            const swatchConfig = {"163":{"11":{"type":"0","value":"Gebunden","label":"Gebunden"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
27434
27435            if (typeof window.amxnotif_wrap_attributes === 'function') {
27436                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
27437                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
27438            }
27439
27440            const configurableOptionsComponent = initConfigurableOptions(
27441                '46710',
27442                config
27443            );
27444            const swatchOptionsComponent = initSwatchOptions(
27445                swatchConfig
27446            );
27447
27448            // DWS - Configurable product preselect start
27449            const confProdPreSelect = () => {
27450                return {
27451                    preselectQuerystringItems() {
27452                        var data = {"id":"46692","output":"11"};
27453                        const urlQueryParams = new URLSearchParams(window.location.search);
27454
27455                                                this.$nextTick(() => {
27456                            setTimeout(() => {
27457                                const rootEl = this.$root || this.$el;
27458                                if (!rootEl) return;
27459
27460                                const applySelection = (attrCode, attrValue) => {
27461                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
27462
27463                                    const attributes = Object.values(this.optionConfig.attributes || {});
27464                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
27465
27466                                    if (targetAttr) {
27467                                        const attrId = String(targetAttr.id);
27468                                        const optionVal = String(attrValue);
27469
27470                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
27471
27472                                        if (inputEl) {
27473                                                                                        inputEl.click();
27474                                            inputEl.dispatchEvent(new Event('change', {
27475                                                bubbles: true
27476                                            }));
27477                                        } else {
27478                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
27479                                            if (selectEl) {
27480                                                selectEl.value = optionVal;
27481                                                selectEl.dispatchEvent(new Event('change', {
27482                                                    bubbles: true
27483                                                }));
27484                                            }
27485                                        }
27486
27487                                                                                this.changeOption(attrId, optionVal, false);
27488                                    }
27489                                };
27490
27491                                                                if (data && typeof data === 'object') {
27492                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
27493                                }
27494
27495                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
27496                                    if (attribute && attribute.code) {
27497                                        let optionValue = urlQueryParams.get(attribute.code);
27498                                        if (optionValue) {
27499                                            let optionId = false;
27500                                            const attributes = Object.values(this.optionConfig.attributes || {});
27501                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
27502
27503                                            let found = false;
27504                                            Object.values(targetAttr.options).map(option => {
27505                                                if (found === false && option.label === optionValue) {
27506                                                    optionId = option.id;
27507                                                    found = true;
27508                                                }
27509                                            });
27510
27511                                            const attrId = String(targetAttr.id);
27512                                            let optionVal = String(optionValue);
27513                                            if (found) {
27514                                                optionVal = String(optionId);
27515                                            }
27516
27517                                            applySelection(attribute.code, optionVal);
27518                                        }
27519                                    }
27520                                });
27521                            }, 100);
27522                        });
27523                    }
27524                }
27525            };
27526            // DWS - Configurable product preselect end
27527
27528            const result = Object.assign(
27529                configurableOptionsComponent,
27530                swatchOptionsComponent, {
27531                    productId: '46710',
27532                    productIndex: 0,
27533                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
27534                    showSwatches: false,
27535                    precalcOptions: {},
27536                    originalInit: configurableOptionsComponent.init,
27537                    init() {
27538                        try {
27539                            this.precalcOptions = {};
27540                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
27541                            this.preselectQuerystringItems();
27542                            if (Array.isArray(attrSource)) {
27543                                attrSource.forEach(attr => {
27544                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
27545                                });
27546                            } else if (attrSource && typeof attrSource === 'object') {
27547                                Object.keys(attrSource).forEach(id => {
27548                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
27549                                });
27550                            }
27551                        } catch (e) {
27552                            console.error('Pre-calc error:', e);
27553                        }
27554
27555                        if (typeof this.originalInit === 'function') {
27556                            this.originalInit();
27557                        }
27558
27559                        try {
27560                            this.initShowSwatchesIntersect();
27561                        } catch (e) {
27562                            console.error('intersect error:', e);
27563                        }
27564                    },
27565
27566                    updateGallery() {
27567                        if (!this.productIndex) return;
27568
27569                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
27570                                method: 'GET',
27571                                headers: {
27572                                    'Content-Type': 'application/json',
27573                                    'X-Requested-With': 'XMLHttpRequest'
27574                                }
27575                            })
27576                            .then(response => response.json())
27577                            .then(data => {
27578                                if (data && data.medium) {
27579                                    window.dispatchEvent(new CustomEvent("update-gallery-46710", {
27580                                        detail: data.medium
27581                                    }));
27582                                }
27583                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
27584                    },
27585
27586
27587                    initShowSwatchesIntersect() {
27588                        const observer = new IntersectionObserver(entries => {
27589                            if (entries[0].isIntersecting) {
27590                                this.showSwatches = true;
27591                                observer.disconnect();
27592                            }
27593                        }, {
27594                            rootMargin: '512px'
27595                        });
27596                        observer.observe(this.$el);
27597                    },
27598                    getOptions(attrId) {
27599                        return this.precalcOptions[attrId] || [];
27600                    },
27601                    getOptionsByAttrId() {
27602                        return this.getOptions(this.$el.dataset.attributeId);
27603                    },
27604                    _getItemId() {
27605                        if (this.item && this.item.id) return this.item.id;
27606                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
27607                    },
27608                    getSwatchOptionHtmlId() {
27609                        const itemId = this._getItemId();
27610                        return itemId ? this.$id(`attribute-option-46710-${itemId}`) : '';
27611                    },
27612                    getSwatchOptionHtmlIdGroup() {
27613                        const itemId = this._getItemId();
27614                        return itemId ? [`attribute-option-46710-${itemId}`] : [];
27615                    },
27616                    getAttributeSwatchData(attributeId) {
27617                        const data = Object.assign({}, this.swatchConfig[attributeId]);
27618                        if (data['additional_data']) {
27619                            try {
27620                                data['details'] = JSON.parse(data['additional_data']);
27621                            } catch (e) {
27622                                data['details'] = {};
27623                            }
27624                        }
27625                        return data;
27626                    },
27627                    getSwatchType(attributeId, optionId) {
27628                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
27629                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
27630                        }
27631                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
27632                            this.swatchConfig[attributeId].details.swatch_input_type :
27633                            "empty";
27634                        if (type === 'visual') {
27635                            const config = this.swatchConfig[attributeId];
27636                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
27637                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
27638                            }
27639                            // Fallback to first option type
27640                            for (const oId in config) {
27641                                if (config[oId] && typeof config[oId].type !== 'undefined') {
27642                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
27643                                }
27644                            }
27645                        }
27646                        return type;
27647                    },
27648                    mapSwatchTypeNumberToTypeCode(type) {
27649                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
27650                    },
27651                    isTextSwatch() {
27652                        const itemId = this._getItemId();
27653                        if (!this.$el || !itemId) return false;
27654                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
27655                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
27656                    },
27657
27658                    getSwatchText() {
27659                        const itemId = this._getItemId();
27660                        if (this.item) return this.item.label || '';
27661                        if (!this.$el || !itemId) return '';
27662                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
27663                        const options = attrId ? this.getOptions(attrId) : [];
27664                        const opt = options.find(o => o.id == itemId);
27665                        return opt ? opt.label : '';
27666                    },
27667                    getSwatchBackgroundStyle() {
27668                        const itemId = this._getItemId();
27669                        if (!this.$el || !itemId) return '';
27670                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
27671                        if (!attrId) return '';
27672                        const type = this.getSwatchType(attrId, itemId);
27673                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
27674                            this.swatchConfig[attrId][itemId] :
27675                            null;
27676                        if (!swatchData) return '';
27677                        if (type === "color") return 'background-color:' + swatchData.value;
27678                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
27679                        return '';
27680                    },
27681                    swatchOptionClasses() {
27682                        const itemId = this._getItemId();
27683                        if (!this.$el || !itemId) return {};
27684                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
27685                        return {
27686                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
27687                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
27688                            'w-6 h-6': !this.isTextSwatch()
27689                        }
27690                    },
27691
27692                    onFocusSwatchItem() {
27693                        const itemId = this._getItemId();
27694                        if (itemId) this.focusedLabel = itemId;
27695                    },
27696                    onChangeOption() {
27697                        const itemId = this._getItemId();
27698                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
27699                        if (attrId && itemId) this.changeOption(attrId, itemId);
27700                    },
27701                    changeOption(attributeId, value) {
27702                        if (value === '') {
27703                            return;
27704                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
27705                        } else {
27706                            this.selectedValues[attributeId] = value;
27707                        }
27708
27709                        this.findSimpleIndex();
27710                        this.findAllowedAttributeOptions();
27711                        this.updatePrices();
27712                        this.updateGallery();
27713
27714                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
27715                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
27716
27717                        const eventDetail = {
27718                            productId: this.productId,
27719                            optionId: attributeId,
27720                            value: value,
27721                            productIndex: this.productIndex || 0,
27722                            selectedValues: this.selectedValues,
27723                            candidates: candidates,
27724                            sourceElement: this.$el
27725                        };
27726
27727                        // Dispatch for Amasty
27728                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
27729                            detail: eventDetail
27730                        }));
27731
27732                        // Dispatch for Hyva listing
27733                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
27734                            detail: eventDetail
27735                        }));
27736                    },
27737
27738
27739                    clearOptionIfActive() {
27740                        const itemId = this._getItemId();
27741                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
27742                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
27743                            this.changeOption(attrId, '');
27744
27745                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
27746                            if (!input && this.$el?.querySelector) {
27747                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
27748                            }
27749                            if (!input && this.$el?.closest) {
27750                                const root = this.$el.closest('[data-product-id]') || this.$el;
27751                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
27752                            }
27753                            if (input) {
27754                                input.checked = false;
27755                            }
27756                        }
27757                    },
27758                    get optionIsEnabled() {
27759                        const itemId = this._getItemId();
27760                        if (!this.$el || !itemId) return true;
27761                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
27762                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
27763                        return !!allowedOptions.find(opt => opt.id == itemId);
27764                    },
27765                    get isSelected() {
27766                        const itemId = this._getItemId();
27767                        if (!this.$el || !itemId) return false;
27768                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
27769                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
27770                    },
27771                    get isSwatchRequired() {
27772                        if (!this.$el) return false;
27773                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
27774                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
27775                    },
27776                    focusedLabel: false,
27777                    activeTooltipItem: false,
27778                    tooltipPositionElement: false,
27779                    setActiveTooltipItem() {
27780                        const itemId = this._getItemId();
27781                        if (!this.$el || !itemId) return;
27782                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
27783                        this.activeTooltipItem = {
27784                            attribute: attrId,
27785                            item: itemId,
27786                            index: 0
27787                        };
27788                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
27789                    },
27790                    unsetActiveTooltipItem() {
27791                        this.activeTooltipItem = false;
27792                    }
27793                },
27794                confProdPreSelect()
27795            );
27796
27797            if (result.optionConfig && result.optionConfig.attributes) {
27798                const attributes = result.optionConfig.attributes;
27799                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
27800                    let source = attributes;
27801                    if (Array.isArray(attributes)) {
27802                        source = {};
27803                        attributes.forEach(attr => {
27804                            if (attr && attr.id) source[attr.id] = attr;
27805                        });
27806                    }
27807                    const values = Object.values(source);
27808                    const wrapper = Object.assign(values, source);
27809                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
27810                        value: true,
27811                        enumerable: false
27812                    });
27813                    result.optionConfig.attributes = wrapper;
27814                }
27815            }
27816
27817            return result;
27818        }
27819
27820        window.addEventListener('alpine:init', () => {
27821            Alpine.data('initConfigurableSwatchOptions_46710', initConfigurableSwatchOptions_46710);
27822        }, {
27823            once: true
27824        });
27825    </script>
27825
27826    
27827    <div x-data="initConfigurableSwatchOptions_46710" x-defer="intersect">
27828        <div class="pagebuilder-home-hidden">
27829                                            
27830                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
27831                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
27832                        <template x-if="showSwatches">
27833                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-46710-163" role="radiogroup" aria-label="Einband">
27834                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
27835                                    <div :data-option-id="item.id" style="display: contents">
27836                                        <div x-id="getSwatchOptionHtmlIdGroup">
27837    <template x-if="optionIsEnabled">
27838        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
27838self="unsetActiveTooltipItem">
27839            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-46710-163">
27840            <div>
27841                <template x-if="isTextSwatch">
27842                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
27843                </template>
27844                <template x-if="!optionIsActive(163, item.id)">
27845                    <div>
27846                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
27847                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
27848                        </svg>
27849                    </div>
27850                </template>
27851            </div>
27852        </label>
27853    </template>
27854</div>                                    </div>
27855                                </template>
27856                            </div>
27857                        </template>
27858                    </div>
27859                </div>
27860                    </div>
27861    </div>
27862            
27863                                                <div class="meta py-4 pagebuilder-home-hidden">
27864                <div x-data="initMarketingShortText_46710()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
27865                    <!-- Marketing short text -->
27866                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
27867                    </div>
27868
27869                    <!-- Short description -->
27870                                                                <div class="short-description">
27871                            Diese turbulente, im zeitgen&ouml;ssischen Neapel angesiedelte Kom&ouml;die ver&ouml;ffentlichte Bruno 1582 in Paris als sein erstes Werk in italienischer Sprache. Die drei Hauptfiguren in diesem sprachlich und ...                            <a href="https://meiner.de/fmv_de/der-kerzenzieher-21415" class="underline">mehr</a>
27872                        </div>
27873                                    </div>
27874
27875                <!-- Series  -->
27876                                    <div class="mb-1">
27877                        <span class="sr-only">Reihe:</span>
27878                        <a href="https://meiner.de/fmv_de/programm/reihen/philosophische-bibliothek">
27879                            <span>Philosophische Bibliothek</span>
27880                        </a>
27881                                                    790                                            </div>
27882                
27883                
27884                                                    <div class="mb-1">
27885                        <span x-data="initEditionText_46710()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
27886                            <!-- Marketing short text -->
27887                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, CXXVIII, 343 Seiten.                        </span>
27888                    </div>
27889                
27890                            </div>
27891            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
27892                
27893                <div class="justify-end" x-data="initPriceBox()" @update-prices-46710.window="updatePrice($event.detail);">
27894                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="46710" data-price-box="product-id-46710"><span class="normal-price">
27895    <span x-data x-id="['product\u002Dprice\u002D46710']" class="price-container price-final_price tax weee">
27896            <span class="price-label">Ab</span>
27897                <span class="approx-price">ca. </span>
27898        <span :id="$id('product\u002Dprice\u002D46710')" data-price-amount="49.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">49,99&nbsp;&euro;</span></span>
27899        </span>
27900</span>
27901
27902
27903</div>                </div>
27904
27905                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
27906                                            <div class="open-access-container open-access-container-46710                    flex mt-4 ml-auto sm:mt-0 hidden">
27907                            <div class="text-gray-700">
27908                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
27909                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
27910                                        Kostenlos online lesen                                    </a>
27911                                </button>
27912                            </div>
27913                        </div>
27914                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Der Kerzenzieher" aria-label="In den Warenkorb Der Kerzenzieher" data-addto="cart">
27915                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
27916  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
27917</svg>
27918                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
27919                                        In den Warenkorb                                    </span>
27920                                </button>
27921                                                                                                                    
27922<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(46710)" aria-label="Zur Wunschliste hinzuf&uuml;gen Der Kerzenzieher" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
27923    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
27924  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
27925</svg>
27926</button>
27927                                    </div>
27928            </div>
27929        </div>
27930        
27930<script>
27931            function initMarketingShortText_46710() {
27932                var marketingShortTextConfig = {};
27933                if (typeof window.initConfigurableSwatchOptions_46710 === "function") {
27934                    var fullConfig = window.initConfigurableSwatchOptions_46710().optionConfig
27935                    var marketingShortTextConfig = fullConfig.marketing_short_text;
27936                }
27937                return {
27938                    marketingShortText: '',
27939                    config: marketingShortTextConfig,
27940                    productId: '46710',
27941                    getMarketingShortText(detail) {
27942                        this.marketingShortText = detail.productIndex ?
27943                            this.config[detail.productIndex] :
27944                            null;
27945                    },
27946                    eventListeners: {
27947                        ['@listing-configurable-selection-changed.window'](event) {
27948                            if (this.productId == event.detail.productId) {
27949                                this.getMarketingShortText(event.detail);
27950                            }
27951
27952                        }
27953                    }
27954                }
27955            }
27956
27957            function initEditionText_46710() {
27958                var editionTextConfig = {};
27959                if (typeof window.initConfigurableSwatchOptions_46710 === "function") {
27960                    var fullConfig = window.initConfigurableSwatchOptions_46710().optionConfig
27961                    var editionTextConfig = fullConfig.edition;
27962                }
27963                return {
27964                    editionText: '',
27965                    config: editionTextConfig,
27966                    productId: '46710',
27967                    getEditionText(detail) {
27968                        this.editionText = detail.productIndex ?
27969                            this.config[detail.productIndex] :
27970                            null;
27971                    },
27972                    eventListeners: {
27973                        ['@listing-configurable-selection-changed.window'](event) {
27974                            if (this.productId == event.detail.productId) {
27975                                this.getEditionText(event.detail);
27976                            }
27977
27978                        }
27979                    }
27980                }
27981            }
27982        </script>
27982
27983                    </form>
27984                            
27985    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/46709/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21391">
27986        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="46709">
27987                                    <a href="https://meiner.de/fmv_de/die-whig-interpretation-der-geschichte-21391" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
27988            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-46709.window="$el.src = $event.detail" alt="Die Whig-Interpretation der Geschichte" title="Die Whig-Interpretation der Geschichte" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351084_1.jpg" :style="{
27989                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
27990                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
27991            }">
27992                    </a>
27993        <div class="product-info flex flex-col flex-grow ">
27994                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
27995                                    <div class="mb-2 text-sm text-gray-500 font-medium">
27996                                                                                    <a href="https://meiner.de/fmv_de/person/Herbert-Butterfield-21392/" class="mb-2">
27997                                    Herbert Butterfield                                                                    </a>
27998                                                                                                                                    </div>
27999                                <a class="product-item-link" href="https://meiner.de/fmv_de/die-whig-interpretation-der-geschichte-21391">
28000                    Die Whig-Interpretation der Geschichte                </a>
28001                            </div>
28002
28003            <div x-data="initEditionText_46709()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
28004                <!-- Marketing short text -->
28005                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
28006                </div>
28007            </div>
28008
28009                            <div class="py-1 grid  mb-4 ">
28010                    
28011                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":46709,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":46709,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46492":"1","46768":"1"},"childProductsAlertStatus":{"46492":"0","46768":"0"},"indexMapping":{"163:15":46492,"163:8":46768},"availabilityMessages":{"46492":"Lieferbar innerhalb von 3-5 Tagen","46768":"Download sofort  verf\u00fcgbar"},"openAccess":{"46709":{"status":0},"46492":{"status":0},"46768":{"status":0}}},"availabilityMessages":{"46492":"Lieferbar innerhalb von 3-5 Tagen","46768":"Download sofort  verf\u00fcgbar"}
28011,"openAccess":{"46709":{"status":0},"46492":{"status":0},"46768":{"status":0}}}'>
28012        <template x-if="containerVisible">
28013                            <!-- Popup Trigger -->
28014                <div>
28015                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
28016                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
28017                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
28018  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
28019<title>bell</title></svg>
28020</span>
28021                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
28022
28023                    <!-- Popup Modal -->
28024                    <template x-if="showModal">
28025                        <template x-teleport=".page-wrapper">
28026                            <div x-cloak class="fixed inset-0 flex items-center justify-center
28027                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
28028                                <div class="relative bg-white rounded-lg shadow-xl
28029                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
28030                                    <div class="p-6">
28031                                        <!-- Subscription Form for Popup -->
28032                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
28033                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
28034                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
28035                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
28036
28037                                            <div class="flex flex-col gap-3">
28038                                                <div class="flex-grow grow">
28039                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
28040                                                        shadow-xs focus:outline-none focus:outline-hidden
28041                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
28042                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
28043                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
28044                                                </div>
28045                                                <input type="hidden" name="product_id" :value="currentProductId">
28046                                                <input type="hidden" name="type" value="email">
28047
28048                                                
28049                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
28050
28051                                                <div class="amxnotif_guest_action">
28052                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
28053                                                        rounded-md focus:outline-none
28054                                                        focus:outline-hidden focu
28054s:ring-2
28055                                                        focus:ring-offset-2 disabled:opacity-50
28056                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
28057                                                        Benachrichtigen                                                    </button>
28058                                                </div>
28059                                            </div>
28060
28061                                                                                            <div class="flex items-start pt-2">
28062                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
28063                                                        text-blue-600 border-gray-300 rounded-sm">
28064                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
28065                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
28066                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
28067                                                </div>
28068                                                                                    </form>
28069                                    </div>
28070
28071                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
28072                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
28073                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
28074  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
28075<title>x</title></svg>
28076                                    </button>
28077                                </div>
28078                            </div>
28079                        </template>
28080                    </template>
28081                </div>
28082                    </template>
28083    </div>
28084
28085<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_46709" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":46709,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46492":"1","46768":"1"},"childProductsAlertStatus":{"46492":"0","46768":"0"},"indexMapping":"{\u0022163:15\u0022:46492,\u0022163:8\u0022:46768}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":46709,"availabilityMessages":{"46492":"Lieferbar innerhalb von 3-5 Tagen","46768":"Download sofort  verf\u00fcgbar"},"openAccess":{"46709":{"status":0},"46492":{"status":0},"46768":{"status":0}}}'>
28086    
28087    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
28088        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
28089        <span x-html="optionsLabelText"></span>
28090    </p>
28091</div>                </div>
28092            
28093                                
28093<script>
28094        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
28095            try {
28096                const attributes = (config && config.attributes) ? config.attributes : null;
28097                if (!attributes) return [];
28098                let attr = null;
28099                if (Array.isArray(attributes)) {
28100                    for (let i = 0; i < attributes.length; i++) {
28101                        const a = attributes[i];
28102                        if (a && a.id == attrId) {
28103                            attr = a;
28104                            break;
28105                        }
28106                    }
28107                } else {
28108                    attr = attributes[attrId];
28109                }
28110                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
28111            } catch (e) {
28112                return [];
28113            }
28114        };
28115
28116        function initConfigurableSwatchOptions_46709() {
28117            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46492"]},{"id":"8","label":"PDF","products":["46768"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46492":{"baseOldPrice":{"amount":18.598129841121},"oldPrice":{"amount":19.9},"basePrice":{"amount":18.598129841121},"finalPrice":{"amount":19.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46768":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":14.009344794393},"finalPrice":{"amount":14.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":12.596637655462},"finalPrice":{"amount":14.99},"isApproxPrice":null},"productId":"46709","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46492":{"163":"15"},"46768":{"163":"8"}},"salable":{"163":{"15":["46492"],"8":["46768"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"46492":"005107","46768":"005108"},"output":{"46492":"Kartoniert","46768":"PDF"},"original_name":{"46492":"The Whig Interpretation of History","46768":"The Whig Interpretation of History"},"openaccess_license_link":{"46492":"","46768":""},"openaccess_license_name":{"46492":"","46768":""},"openaccess_external_link":{"46492":"","46768":""},"gpsr_safety_info":{"46492":"","46768":""},"description":{"46492":"Herbert Butterfield hat mit seinen Thesen zur Geschichtstheorie bleibende Aufmerksamkeit erregt. Sein Essay \u00bbThe Whig Interpretation of History\u00ab (1931) avancierte in der angels\u00e4chsischen Welt zu einem Klassiker und pr\u00e4gte die stehenden Begriffe \u00bbWhig history\u00ab und \u00bbWhiggism\u00ab.<br\/><br\/>Butterfield kritisiert die allgemeine Tendenz, historische Tatsachen nach dem Ma\u00dfstab der Gegenwart zu interpretieren und mit entsprechenden moralischen Werturteilen zu bedenken. Die Standardform des erz\u00e4hlten Geschichtsverlaufs sei die des liberal eingestellten nordatlantischen Protestanten und seiner weltanschaulichen \u00dcberzeugungen. Geschichte werde stets nach einem seit Jahrhunderten etablierten und kaum jemals reflektierten kulturellen Apriori gelesen, das der Geschichtswissenschaft eine eigene disziplin\u00e4re Matrix verweigere und ihr stattdessen ein politisches Auffassungsparadigma unterschiebe. In seinem Essay untersucht Butterfield, fachwissenschaftlich fundiert, die Allerweltsweisheit, dass es die ideologischen Gewinner sind, die die Geschichte schreiben. Gerade das fachliche Fundament und das akademisch Anspruchsvolle seiner Thesen macht Butterfields Wortmeldung dabei besonders interessant.<br\/><br\/>Der Band bietet die erste deutsche \u00dcbersetzung von Butterfields Kritik der Geschichtstheorie, die derzeit in der historiographischen Debatte wieder verst\u00e4rkt diskutiert wird.","46768":"Herbert Butterfield hat mit seinen Thesen zur Geschichtstheorie bleibende Aufmerksamkeit erregt. Sein Essay \u00bbThe Whig Interpretation of History\u00ab (1931) avancierte in der angels\u00e4chsischen Welt zu einem Klassiker und pr\u00e4gte die stehenden Begriffe \u00bbWhig history\u00ab und \u00bbWhiggism\u00ab.<br\/><br\/>Butterfield kritisiert die allgemeine Tendenz, historische Tatsachen nach dem Ma\u00dfstab der Gegenwart zu interpretieren und mit entsprechenden moralischen Werturteilen zu bedenken. Die Standardform des erz\u00e4hlten Geschichtsverlaufs sei die des liberal eingestellten nordatlantischen Protestanten und seiner weltanschaulichen \u00dcberzeugungen. Geschichte werde stets n
28117ach einem seit Jahrhunderten etablierten und kaum jemals reflektierten kulturellen Apriori gelesen, das der Geschichtswissenschaft eine eigene disziplin\u00e4re Matrix verweigere und ihr stattdessen ein politisches Auffassungsparadigma unterschiebe. In seinem Essay untersucht Butterfield, fachwissenschaftlich fundiert, die Allerweltsweisheit, dass es die ideologischen Gewinner sind, die die Geschichte schreiben. Gerade das fachliche Fundament und das akademisch Anspruchsvolle seiner Thesen macht Butterfields Wortmeldung dabei besonders interessant.<br\/><br\/>Der Band bietet die erste deutsche \u00dcbersetzung von Butterfields Kritik der Geschichtstheorie, die derzeit in der historiographischen Debatte wieder verst\u00e4rkt diskutiert wird."},"doi":{"46492":"","46768":"10.28937\/978-3-7873-5108-4"},"isbn":{"46492":"978-3-7873-5107-7","46768":"978-3-7873-5108-4"},"marketing_short_text":{"46492":"","46768":""},"recension_text":{"46492":"<div class=\"reviews\">\r\n<div class=\"review\">Der Meiner-Verlag hat verdienstvollerweise eine \u00dcbersetzung von Butterfields (1900\u20131979) grundlegender Kritik an einer Geschichtsschreibung, die die Vergangenheit vom Ergebnis her liest, in seiner Philosophischen Bibliothek ver\u00f6ffentlicht. [\u2026] Die Whigs deuten historische Tatsachen [\u2026] in einer Ursache-Wirkungs-Relation nach dem Ma\u00dfstab der Gegenwart: als Weg zur liberalen Ordnung, zur Freiheit, zum Parlamentarismus, zur Moderne. [\u2026] In f\u00fcnf Kapiteln r\u00e4umt der in Cambridge lehrende Butterfield schonungslos mit solchen Ans\u00e4tzen auf.<\/div>\r\n<div class=\"source\">Michael Hesse in der Frankfurter Rundschau vom 25.05.2026<\/div>\r\n<\/div>","46768":"<div class=\"reviews\">\r\n<div class=\"review\">Der Meiner-Verlag hat verdienstvollerweise eine \u00dcbersetzung von Butterfields (1900\u20131979) grundlegender Kritik an einer Geschichtsschreibung, die die Vergangenheit vom Ergebnis her liest, in seiner Philosophischen Bibliothek ver\u00f6ffentlicht. [\u2026] Die Whigs deuten historische Tatsachen [\u2026] in einer Ursache-Wirkungs-Relation nach dem Ma\u00dfstab der Gegenwart: als Weg zur liberalen Ordnung, zur Freiheit, zum Parlamentarismus, zur Moderne. [\u2026] In f\u00fcnf Kapiteln r\u00e4umt der in Cambridge lehrende Butterfield schonungslos mit solchen Ans\u00e4tzen auf.<\/div>\r\n<div class=\"source\">Michael Hesse in der Frankfurter Rundschau vom 25.05.2026<\/div>\r\n<\/div>"},"language":{"46492":"","46768":""},"cover":{"46492":"Kartoniert","46768":""},"pages":{"46492":"XXII, 104 Seiten.","46768":"XXII, 104 Seiten."},"edition":{"46492":"","46768":"Unver\u00e4ndertes eBook der 1. Auflage von 2026"},"pod":{"46492":"Nein","46768":"Nein"},"copyright_year":{"46492":"","46768":""},"vlb_tix_link":{"46492":"https:\/\/neu.vlbtix.de\/products\/9783787351077?type=gtin","46768":""},"defaultValues":{"163":"15"}};
28118            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
28119
28120            if (typeof window.amxnotif_wrap_attributes === 'function') {
28121                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
28122                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
28123            }
28124
28125            const configurableOptionsComponent = initConfigurableOptions(
28126                '46709',
28127                config
28128            );
28129            const swatchOptionsComponent = initSwatchOptions(
28130                swatchConfig
28131            );
28132
28133            // DWS - Configurable product preselect start
28134            const confProdPreSelect = () => {
28135                return {
28136                    preselectQuerystringItems() {
28137                        var data = {"id":"46492","output":"15"};
28138                        const urlQueryParams = new URLSearchParams(window.location.search);
28139
28140                                                this.$nextTick(() => {
28141                            setTimeout(() => {
28142                                const rootEl = this.$root || this.$el;
28143                                if (!rootEl) return;
28144
28145                                const applySelection = (attrCode, attrValue) => {
28146                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
28147
28148                                    const attributes = Object.values(this.optionConfig.attributes || {});
28149                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
28150
28151                                    if (targetAttr) {
28152                                        const attrId = String(targetAttr.id);
28153                                        const optionVal = String(attrValue);
28154
28155                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
28156
28157                                        if (inputEl) {
28158                                                                                        inputEl.click();
28159                                            inputEl.dispatchEvent(new Event('change', {
28160                                                bubbles: true
28161                                            }));
28162                                        } else {
28163                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
28164                                            if (selectEl) {
28165                                                selectEl.value = optionVal;
28166                                                selectEl.dispatchEvent(new Event('change', {
28167                                                    bubbles: true
28168                                                }));
28169                                            }
28170                                        }
28171
28172                                                                                this.changeOption(attrId, optionVal, false);
28173                                    }
28174                                };
28175
28176                                                                if (data && typeof data === 'object') {
28177                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
28178                                }
28179
28180                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
28181                                    if (attribute && attribute.code) {
28182                                        let optionValue = urlQueryParams.get(attribute.code);
28183                                        if (optionValue) {
28184                                            let optionId = false;
28185                                            const attributes = Object.values(this.optionConfig.attributes || {});
28186                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
28187
28188                                            let found = false;
28189                                            Object.values(targetAttr.options).map(option => {
28190                                                if (found === false && option.label === optionValue) {
28191                                                    optionId = option.id;
28192                                                    found = true;
28193                                                }
28194                                            });
28195
28196                                            const attrId = String(targetAttr.id);
28197                                            let optionVal = String(optionValue);
28198                                            if (found) {
28199                                                optionVal = String(optionId);
28200                                            }
28201
28202                                            applySelection(attribute.code, optionVal);
28203                                        }
28204                                    }
28205                                });
28206                            }, 100);
28207                        });
28208                    }
28209                }
28210            };
28211            // DWS - Configurable product preselect end
28212
28213            const result = Object.assign(
28214                configurableOptionsComponent,
28215                swatchOptionsComponent, {
28216                    productId: '46709',
28217                    productIndex: 0,
28218                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
28219                    showSwatches: false,
28220                    precalcOptions: {},
28221                    originalInit: configurableOptionsComponent.init,
28222                    init() {
28223                        try {
28224                            this.precalcOptions = {};
28225                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
28226                            this.preselectQuerystringItems();
28227                            if (Array.isArray(attrSource)) {
28228                                attrSource.forEach(attr => {
28229                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
28230                                });
28231                            } else if (attrSource && typeof attrSource === 'object') {
28232                                Object.keys(attrSource).forEach(id => {
28233                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
28234                                });
28235                            }
28236                        } catch (e) {
28237                            console.error('Pre-calc error:', e);
28238                        }
28239
28240                        if (typeof this.originalInit === 'function') {
28241                            this.originalInit();
28242                        }
28243
28244                        try {
28245                            this.initShowSwatchesIntersect();
28246                        } catch (e) {
28247                            console.error('intersect error:', e);
28248                        }
28249                    },
28250
28251                    updateGallery() {
28252                        if (!this.productIndex) return;
28253
28254                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
28255                                method: 'GET',
28256                                headers: {
28257                                    'Content-Type': 'application/json',
28258                                    'X-Requested-With': 'XMLHttpRequest'
28259                                }
28260                            })
28261                            .then(response => response.json())
28262                            .then(data => {
28263                                if (data && data.medium) {
28264                                    window.dispatchEvent(new CustomEvent("update-gallery-46709", {
28265                                        detail: data.medium
28266                                    }));
28267                                }
28268                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
28269                    },
28270
28271
28272                    initShowSwatchesIntersect() {
28273                        const observer = new IntersectionObserver(entries => {
28274                            if (entries[0].isIntersecting) {
28275                                this.showSwatches = true;
28276                                observer.disconnect();
28277                            }
28278                        }, {
28279                            rootMargin: '512px'
28280                        });
28281                        observer.observe(this.$el);
28282                    },
28283                    getOptions(attrId) {
28284                        return this.precalcOptions[attrId] || [];
28285                    },
28286                    getOptionsByAttrId() {
28287                        return this.getOptions(this.$el.dataset.attributeId);
28288                    },
28289                    _getItemId() {
28290                        if (this.item && this.item.id) return this.item.id;
28291                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
28292                    },
28293                    getSwatchOptionHtmlId() {
28294                        const itemId = this._getItemId();
28295                        return itemId ? this.$id(`attribute-option-46709-${itemId}`) : '';
28296                    },
28297                    getSwatchOptionHtmlIdGroup() {
28298                        const itemId = this._getItemId();
28299                        return itemId ? [`attribute-option-46709-${itemId}`] : [];
28300                    },
28301                    getAttributeSwatchData(attributeId) {
28302                        const data = Object.assign({}, this.swatchConfig[attributeId]);
28303                        if (data['additional_data']) {
28304                            try {
28305                                data['details'] = JSON.parse(data['additional_data']);
28306                            } catch (e) {
28307                                data['details'] = {};
28308                            }
28309                        }
28310                        return data;
28311                    },
28312                    getSwatchType(attributeId, optionId) {
28313                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
28314                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
28315                        }
28316                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
28317                            this.swatchConfig[attributeId].details.swatch_input_type :
28318                            "empty";
28319                        if (type === 'visual') {
28320                            const config = this.swatchConfig[attributeId];
28321                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
28322                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
28323                            }
28324                            // Fallback to first option type
28325                            for (const oId in config) {
28326                                if (config[oId] && typeof config[oId].type !== 'undefined') {
28327                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
28328                                }
28329                            }
28330                        }
28331                        return type;
28332                    },
28333                    mapSwatchTypeNumberToTypeCode(type) {
28334                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
28335                    },
28336                    isTextSwatch() {
28337                        const itemId = this._getItemId();
28338                        if (!this.$el || !itemId) return false;
28339                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
28340                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
28341                    },
28342
28343                    getSwatchText() {
28344                        const itemId = this._getItemId();
28345                        if (this.item) return this.item.label || '';
28346                        if (!this.$el || !itemId) return '';
28347                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
28348                        const options = attrId ? this.getOptions(attrId) : [];
28349                        const opt = options.find(o => o.id == itemId);
28350                        return opt ? opt.label : '';
28351                    },
28352                    getSwatchBackgroundStyle() {
28353                        const itemId = this._getItemId();
28354                        if (!this.$el || !itemId) return '';
28355                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
28356                        if (!attrId) return '';
28357                        const type = this.getSwatchType(attrId, itemId);
28358                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
28359                            this.swatchConfig[attrId][itemId] :
28360                            null;
28361                        if (!swatchData) return '';
28362                        if (type === "color") return 'background-color:' + swatchData.value;
28363                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
28364                        return '';
28365                    },
28366                    swatchOptionClasses() {
28367                        const itemId = this._getItemId();
28368                        if (!this.$el || !itemId) return {};
28369                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
28370                        return {
28371                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
28372                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
28373                            'w-6 h-6': !this.isTextSwatch()
28374                        }
28375                    },
28376
28377                    onFocusSwatchItem() {
28378                        const itemId = this._getItemId();
28379                        if (itemId) this.focusedLabel = itemId;
28380                    },
28381                    onChangeOption() {
28382                        const itemId = this._getItemId();
28383                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
28384                        if (attrId && itemId) this.changeOption(attrId, itemId);
28385                    },
28386                    changeOption(attributeId, value) {
28387                        if (value === '') {
28388                            return;
28389                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
28390                        } else {
28391                            this.selectedValues[attributeId] = value;
28392                        }
28393
28394                        this.findSimpleIndex();
28395                        this.findAllowedAttributeOptions();
28396                        this.updatePrices();
28397                        this.updateGallery();
28398
28399                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
28400                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
28401
28402                        const eventDetail = {
28403                            productId: this.productId,
28404                            optionId: attributeId,
28405                            value: value,
28406                            productIndex: this.productIndex || 0,
28407                            selectedValues: this.selectedValues,
28408                            candidates: candidates,
28409                            sourceElement: this.$el
28410                        };
28411
28412                        // Dispatch for Amasty
28413                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
28414                            detail: eventDetail
28415                        }));
28416
28417                        // Dispatch for Hyva listing
28418                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
28419                            detail: eventDetail
28420                        }));
28421                    },
28422
28423
28424                    clearOptionIfActive() {
28425                        const itemId = this._getItemId();
28426                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
28427                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
28428                            this.changeOption(attrId, '');
28429
28430                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
28431                            if (!input && this.$el?.querySelector) {
28432                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
28433                            }
28434                            if (!input && this.$el?.closest) {
28435                                const root = this.$el.closest('[data-product-id]') || this.$el;
28436                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
28437                            }
28438                            if (input) {
28439                                input.checked = false;
28440                            }
28441                        }
28442                    },
28443                    get optionIsEnabled() {
28444                        const itemId = this._getItemId();
28445                        if (!this.$el || !itemId) return true;
28446                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
28447                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
28448                        return !!allowedOptions.find(opt => opt.id == itemId);
28449                    },
28450                    get isSelected() {
28451                        const itemId = this._getItemId();
28452                        if (!this.$el || !itemId) return false;
28453                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
28454                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
28455                    },
28456                    get isSwatchRequired() {
28457                        if (!this.$el) return false;
28458                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
28459                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
28460                    },
28461                    focusedLabel: false,
28462                    activeTooltipItem: false,
28463                    tooltipPositionElement: false,
28464                    setActiveTooltipItem() {
28465                        const itemId = this._getItemId();
28466                        if (!this.$el || !itemId) return;
28467                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
28468                        this.activeTooltipItem = {
28469                            attribute: attrId,
28470                            item: itemId,
28471                            index: 0
28472                        };
28473                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
28474                    },
28475                    unsetActiveTooltipItem() {
28476                        this.activeTooltipItem = false;
28477                    }
28478                },
28479                confProdPreSelect()
28480            );
28481
28482            if (result.optionConfig && result.optionConfig.attributes) {
28483                const attributes = result.optionConfig.attributes;
28484                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
28485                    let source = attributes;
28486                    if (Array.isArray(attributes)) {
28487                        source = {};
28488                        attributes.forEach(attr => {
28489                            if (attr && attr.id) source[attr.id] = attr;
28490                        });
28491                    }
28492                    const values = Object.values(source);
28493                    const wrapper = Object.assign(values, source);
28494                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
28495                        value: true,
28496                        enumerable: false
28497                    });
28498                    result.optionConfig.attributes = wrapper;
28499                }
28500            }
28501
28502            return result;
28503        }
28504
28505        window.addEventListener('alpine:init', () => {
28506            Alpine.data('initConfigurableSwatchOptions_46709', initConfigurableSwatchOptions_46709);
28507        }, {
28508            once: true
28509        });
28510    </script>
28510
28511    
28512    <div x-data="initConfigurableSwatchOptions_46709" x-defer="intersect">
28513        <div class="pagebuilder-home-hidden">
28514                                            
28515                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
28516                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
28517                        <template x-if="showSwatches">
28518                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-46709-163" role="radiogroup" aria-label="Einband">
28519                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
28520                                    <div :data-option-id="item.id" style="display: contents">
28521                                        <div x-id="getSwatchOptionHtmlIdGroup">
28522    <template x-if="optionIsEnabled">
28523        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
28523self="unsetActiveTooltipItem">
28524            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-46709-163">
28525            <div>
28526                <template x-if="isTextSwatch">
28527                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
28528                </template>
28529                <template x-if="!optionIsActive(163, item.id)">
28530                    <div>
28531                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
28532                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
28533                        </svg>
28534                    </div>
28535                </template>
28536            </div>
28537        </label>
28538    </template>
28539</div>                                    </div>
28540                                </template>
28541                            </div>
28542                        </template>
28543                    </div>
28544                </div>
28545                    </div>
28546    </div>
28547            
28548                                                <div class="meta py-4 pagebuilder-home-hidden">
28549                <div x-data="initMarketingShortText_46709()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
28550                    <!-- Marketing short text -->
28551                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
28552                    </div>
28553
28554                    <!-- Short description -->
28555                                                                <div class="short-description">
28556                            Herbert Butterfield hat mit seinen Thesen zur Geschichtstheorie bleibende Aufmerksamkeit erregt. Sein Essay &raquo;The Whig Interpretation of History&laquo; (1931) avancierte in der angels&auml;chsischen Welt zu ...                            <a href="https://meiner.de/fmv_de/die-whig-interpretation-der-geschichte-21391" class="underline">mehr</a>
28557                        </div>
28558                                    </div>
28559
28560                <!-- Series  -->
28561                                    <div class="mb-1">
28562                        <span class="sr-only">Reihe:</span>
28563                        <a href="https://meiner.de/fmv_de/programm/reihen/philosophische-bibliothek">
28564                            <span>Philosophische Bibliothek</span>
28565                        </a>
28566                                                    798                                            </div>
28567                
28568                
28569                                                    <div class="mb-1">
28570                        <span x-data="initEditionText_46709()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
28571                            <!-- Marketing short text -->
28572                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, XXII, 104 Seiten.                        </span>
28573                    </div>
28574                
28575                            </div>
28576            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
28577                
28578                <div class="justify-end" x-data="initPriceBox()" @update-prices-46709.window="updatePrice($event.detail);">
28579                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="46709" data-price-box="product-id-46709"><span class="normal-price">
28580    <span x-data x-id="['product\u002Dprice\u002D46709']" class="price-container price-final_price tax weee">
28581            <span class="price-label">Ab</span>
28582                <span class="approx-price">ca. </span>
28583        <span :id="$id('product\u002Dprice\u002D46709')" data-price-amount="14.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">14,99&nbsp;&euro;</span></span>
28584        </span>
28585</span>
28586
28587
28588</div>                </div>
28589
28590                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
28591                                            <div class="open-access-container open-access-container-46709                    flex mt-4 ml-auto sm:mt-0 hidden">
28592                            <div class="text-gray-700">
28593                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
28594                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
28595                                        Kostenlos online lesen                                    </a>
28596                                </button>
28597                            </div>
28598                        </div>
28599                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Die Whig-Interpretation der Geschichte" aria-label="In den Warenkorb Die Whig-Interpretation der Geschichte" data-addto="cart">
28600                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
28601  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
28602</svg>
28603                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
28604                                        In den Warenkorb                                    </span>
28605                                </button>
28606                                                                                                                    
28607<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(46709)" aria-label="Zur Wunschliste hinzuf&uuml;gen Die Whig-Interpretation der Geschichte" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
28608    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
28609  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
28610</svg>
28611</button>
28612                                    </div>
28613            </div>
28614        </div>
28615        
28615<script>
28616            function initMarketingShortText_46709() {
28617                var marketingShortTextConfig = {};
28618                if (typeof window.initConfigurableSwatchOptions_46709 === "function") {
28619                    var fullConfig = window.initConfigurableSwatchOptions_46709().optionConfig
28620                    var marketingShortTextConfig = fullConfig.marketing_short_text;
28621                }
28622                return {
28623                    marketingShortText: '',
28624                    config: marketingShortTextConfig,
28625                    productId: '46709',
28626                    getMarketingShortText(detail) {
28627                        this.marketingShortText = detail.productIndex ?
28628                            this.config[detail.productIndex] :
28629                            null;
28630                    },
28631                    eventListeners: {
28632                        ['@listing-configurable-selection-changed.window'](event) {
28633                            if (this.productId == event.detail.productId) {
28634                                this.getMarketingShortText(event.detail);
28635                            }
28636
28637                        }
28638                    }
28639                }
28640            }
28641
28642            function initEditionText_46709() {
28643                var editionTextConfig = {};
28644                if (typeof window.initConfigurableSwatchOptions_46709 === "function") {
28645                    var fullConfig = window.initConfigurableSwatchOptions_46709().optionConfig
28646                    var editionTextConfig = fullConfig.edition;
28647                }
28648                return {
28649                    editionText: '',
28650                    config: editionTextConfig,
28651                    productId: '46709',
28652                    getEditionText(detail) {
28653                        this.editionText = detail.productIndex ?
28654                            this.config[detail.productIndex] :
28655                            null;
28656                    },
28657                    eventListeners: {
28658                        ['@listing-configurable-selection-changed.window'](event) {
28659                            if (this.productId == event.detail.productId) {
28660                                this.getEditionText(event.detail);
28661                            }
28662
28663                        }
28664                    }
28665                }
28666            }
28667        </script>
28667
28668                    </form>
28669                    </div>
28670        
28671<div class="carousel-nav flex items-center justify-center flex-1 p-4">
28672    <button aria-label="Zur&uuml;ck" title="Zur&uuml;ck" class="glider-prev w-8 h-8 mr-1 text-black rounded-full outline-none focus:outline-none hidden">
28673        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true">
28674  <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"></path>
28675</svg>
28676    </button>
28677    <div role="tablist" class="glider-dots select-none flex flex-wrap mx-1 justify-center p-0 focus:outline-none"></div>
28678    <button aria-label="Weiter" title="Weiter" class="glider-next w-8 h-8 ml-1 text-black rounded-full outline-none focus:outline-none hidden">
28679        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true">
28680  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"></path>
28681</svg>
28682    </button>
28683</div>
28684    </div>
28685</div></div></div></div></div></div><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="false" data-element="inner" data-pb-style="XX0C0CC"><h3 data-content-type="heading" data-appearance="default" data-element="main">Blaue Reihe</h3><div class="pagebuilder-column-group card cmsp2-p-5" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-background-lazy-load="false" data-element="main" data-pb-style="YPY77HD"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="YPEFH56"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="XEVNLJ0"><h4 data-content-type="heading" data-appearance="default" data-element="main">Philosophische Debattenbeitr&auml;ge &amp; Essays</h4><div data-content-type="text" data-appearance="default" data-element="main" data-pb-style="J9QYD4J"><p style="text-align: left;">Die <a href="/programm/reihen/blaue-reihe">Blaue Reihe</a> bietet richtungsweisenden Beitr&auml;gen aus aktuellen philosophischen Debatten und essayistischen Interventionen einen Ort. Sie kommt damit dem gegenw&auml;rtigen Bed&uuml;rfnis nach k&uuml;rzer gefassten, pr&auml;gnanten philosophischen Texten entgegen und &ouml;ffnet sich auch einem nicht spezialisierten Publikum. Erg&auml;nzend erscheinen Einf&uuml;hrungen in bestimmte philosophische Fragestellungen und Epochen sowie in das Werk bedeutender Philosophinnen und Philosophen.</p>
28686<p style="text-align: left;">&raquo;Der Verlag hat es geschafft, preisg&uuml;nstig Forschungsfragen und Philosophien in Bezug zu aktuellen Debatten zu setzen. Die B&uuml;cher sind f&uuml;r Laien und Berufsphilosophen gleicherma&szlig;en interessant.&laquo;&nbsp;<em>Charlotte Sz&aacute;sz (Literarische Welt)</em></p>
28687<div id="box_infotext">
28688<p style="text-align: left;">&nbsp;</p>
28689<p style="text-align: left;"><a tabindex="-1" href="/programm/reihen/blaue-reihe"><img id="NC5LO7Q" style="display: block; margin-left: auto; margin-right: auto; width: 75px; height: 75px;" src="https://meiner.de/media/wysiwyg/FMV/Signets-Logos/Signet_Blaue-Reihe.png" alt="Signet der Blauen Reihe" width="100" height="100"></a></p>
28690<p style="text-align: center;">&nbsp;</p>
28691</div></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="EYKDCL7"></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="W5FBXVQ"><h4 data-content-type="heading" data-appearance="default" data-element="main">Aktuelle Neuerscheinungen der Blauen Reihe</h4><div data-content-type="products" data-appearance="carousel" data-autoplay="false" data-autoplay-speed="4000" data-infinite-loop="false" data-show-arrows="false" data-show-dots="true" data-carousel-mode="default" data-center-padding="90px" data-element="main">        <div class="glider-contain product-items widget-product-carou
28691sel">
28692        <div data-role="glider-content" class="mx-auto grid gap-4 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 relative overflow-y-hidden overflow-x-scroll">
28693                            
28694    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/47160/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk22892">
28695        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="47160">
28696                                    <a href="https://meiner.de/fmv_de/materie-als-aktives-gegena-ber-des-subjekts-22892" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
28697            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-47160.window="$el.src = $event.detail" alt="Materie als aktives Gegen&uuml;ber des Subjekts" title="Materie als aktives Gegen&uuml;ber des Subjekts" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787352012_1.jpg" :style="{
28698                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
28699                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
28700            }">
28701                    </a>
28702        <div class="product-info flex flex-col flex-grow ">
28703                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
28704                                    <div class="mb-2 text-sm text-gray-500 font-medium">
28705                                                                                    <a href="https://meiner.de/fmv_de/person/Thomas-Oehl-22893/" class="mb-2">
28706                                    Thomas Oehl                                                                    </a>
28707                                                                                                                                    </div>
28708                                <a class="product-item-link" href="https://meiner.de/fmv_de/materie-als-aktives-gegena-ber-des-subjekts-22892">
28709                    Materie als aktives Gegen&uuml;ber des Subjekts                </a>
28710                            </div>
28711
28712            <div x-data="initEditionText_47160()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
28713                <!-- Marketing short text -->
28714                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
28715                </div>
28716            </div>
28717
28718                            <div class="py-1 grid  mb-4 ">
28719                    
28720                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":47160,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":47160,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"47095":"1","47139":"1","47141":"1"},"childProductsAlertStatus":{"47095":"0","47139":"0","47141":"0"},"indexMapping":{"163:15":47095,"163:8":47139,"163:9":47141},"availabilityMessages":{"47095":"Lieferbar innerhalb von 3-5 Tagen","47139":"Download sofort  verf\u00fcgbar","47141":"Download sofort  verf\u00fcgbar"},"openAccess":{"47160":{"status":0},"47095":{"status":0},"47139":{"status":0},"47141":{"status":0}}},"availabilityMessages":{"47095":"Lieferbar innerhalb von 3-5 Tagen","47139":"Download sofort  verf\u00fcgbar","47141":"Download sofort  verf\u00fcgbar"},"openAccess":{"47160":{"status":0},"47095":{"status":0},"47139":{"status":0},"47141":{"status":0}}}'>
28721        <template x-if="containerVisible">
28722                            <!-- Popup Trigger -->
28723                <div>
28724                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
28725                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
28726                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
28727  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
28728<title>bell</title></svg>
28729</span>
28730                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
28731
28732                    <!-- Popup Modal -->
28733                    <template x-if="showModal">
28734                        <template x-teleport=".page-wrapper">
28735                            <div x-cloak class="fixed inset-0 flex items-center justify-center
28736                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
28737                                <div class="relative bg-white rounded-lg shadow-xl
28738                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
28739                                    <div class="p-6">
28740                                        <!-- Subscription Form for Popup -->
28741                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
28742                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
28743                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
28744                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
28745
28746                                            <div class="flex flex-col gap-3">
28747                                                <div class="flex-grow grow">
28748                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
28749                                                        shadow-xs focus:outline-none focus:outline-hidden
28750                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
28751                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
28752                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
28753                                                </div>
28754                                                <input type="hidden" name="product_id" :value="currentProductId">
28755                                                <input type="hidden" name="type" value="email">
28756
28757                                                
28758                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
28759
28760                                                <div class="amxnotif_guest_action">
28761                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
28762                                                        rounded-md focus:outline-none
28763                                                        focus:outline-hidden focus:ring-2
28764                                                        focus:ring-offset-2 disabled:opacity-50
28765                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
28766                                                        Benachrichtigen                                                    </button>
28767                                                </div>
28768                                            </div>
28769
28770                                                                                            <div class="flex items-start pt-2">
28771                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
28772                                                        text-blue-600 border-gray-300 rounded-sm">
28773                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
28774                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
28775                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
28776                                                </div>
28777                                                                                    </form>
28778                                    </div>
28779
28780                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
28781                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
28782                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
28783  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
28784<title>x</title></svg>
28785                                    </button>
28786                                </div>
28787                            </div>
28788                        </template>
28789                    </template>
28790                </div>
28791                    </template>
28792    </div>
28793
28794<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_47160" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":47160,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"47095":"1","47139":"1","47141":"
287941"},"childProductsAlertStatus":{"47095":"0","47139":"0","47141":"0"},"indexMapping":"{\u0022163:15\u0022:47095,\u0022163:8\u0022:47139,\u0022163:9\u0022:47141}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":47160,"availabilityMessages":{"47095":"Lieferbar innerhalb von 3-5 Tagen","47139":"Download sofort  verf\u00fcgbar","47141":"Download sofort  verf\u00fcgbar"},"openAccess":{"47160":{"status":0},"47095":{"status":0},"47139":{"status":0},"47141":{"status":0}}}'>
28795    
28796    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
28797        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
28798        <span x-html="optionsLabelText"></span>
28799    </p>
28800</div>                </div>
28801            
28802                                
28802<script>
28803        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
28804            try {
28805                const attributes = (config && config.attributes) ? config.attributes : null;
28806                if (!attributes) return [];
28807                let attr = null;
28808                if (Array.isArray(attributes)) {
28809                    for (let i = 0; i < attributes.length; i++) {
28810                        const a = attributes[i];
28811                        if (a && a.id == attrId) {
28812                            attr = a;
28813                            break;
28814                        }
28815                    }
28816                } else {
28817                    attr = attributes[attrId];
28818                }
28819                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
28820            } catch (e) {
28821                return [];
28822            }
28823        };
28824
28825        function initConfigurableSwatchOptions_47160() {
28826            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["47095"]},{"id":"8","label":"PDF","products":["47139"]},{"id":"9","label":"EPUB","products":["47141"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"47095":{"baseOldPrice":{"amount":21.401868158879},"oldPrice":{"amount":22.9},"basePrice":{"amount":21.401868158879},"finalPrice":{"amount":22.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47139":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":15.878503672897},"finalPrice":{"amount":16.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47141":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":15.878503672897},"finalPrice":{"amount":16.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":14.27730992437},"finalPrice":{"amount":16.99},"isApproxPrice":null},"productId":"47160","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"47095":{"163":"15"},"47139":{"163":"8"},"47141":{"163":"9"}},"salable":{"163":{"15":["47095"],"8":["47139"],"9":["47141"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"47095":"005199","47139":"005200","47141":"005201"},"output":{"47095":"Kartoniert","47139":"PDF","47141":"EPUB"},"original_name":{"47095":"","47139":"","47141":""},"openaccess_license_link":{"47095":"","47139":"","47141":""},"openaccess_license_name":{"47095":"","47139":"","47141":""},"openaccess_external_link":{"47095":"","47139":"","47141":""},"gpsr_safety_info":{"47095":"","47139":"","47141":""},"description":{"47095":"Thomas Oehl zeigt in seinem Buch in Auseinandersetzung mit Hegels (und Adornos) Philosophie, dass und wie Materie als aktiv gedacht werden kann.<br\/><br\/>Die Idee einer Aktivit\u00e4t der Materie zieht sich wie ein Versprechen durch die moderne, nachhegelsche Philosophie, insbesondere im \u00bbMaterialismus\u00ab, wie er von Marx und Adorno gepr\u00e4gt wurde. Sie stand und steht jedoch stets im Verdacht, der Materie irrationalerweise etwas zuschreiben zu wollen, das wir allein dem Subjekt zuschreiben d\u00fcrfen: Aktivit\u00e4t in einem starken Sinne. Der Gedankengang des Buches entwickelt diese Idee streng sachorientiert und verteidigt sie gegen den besagten Verdacht in drei Studien, die je einer bestimmten Gestalt von Aktivit\u00e4t der Materie gewidmet sind. Die Idee ist einerseits von metaphysischer Bedeutung, da mit ihr nicht weniger als ein ganz neuer Begriff von Materie verbunden ist, andererseits aber auch von sozialphilosophischer Relevanz: Denn in der Aktivit\u00e4t der Materie liegt die M\u00f6glichkeit, Materie in befreiender Weise als ein Gegen\u00fcber zu erfahren, etwa in bestimmten \u00e4sthetischen Konstellationen; eine freie Beziehung zu einem Gegen\u00fcber besteht gerade nicht allein in Intersubjektivit\u00e4t.<br\/><br\/>Das Buch ist im Dialog mit Horst Bredekamps Theorie des Bildakts geschrieben, in der verwandte Motive verfolgt werden, und um ein Nachwort Bredekamps erg\u00e4nzt.","47139":"Thomas Oehl zeigt in seinem Buch in Auseinandersetzung mit Hegels (und Adornos) Philosophie, dass und wie Materie als aktiv gedacht werden kann.
28826<br\/><br\/>Die Idee einer Aktivit\u00e4t der Materie zieht sich wie ein Versprechen durch die moderne, nachhegelsche Philosophie, insbesondere im \u00bbMaterialismus\u00ab, wie er von Marx und Adorno gepr\u00e4gt wurde. Sie stand und steht jedoch stets im Verdacht, der Materie irrationalerweise etwas zuschreiben zu wollen, das wir allein dem Subjekt zuschreiben d\u00fcrfen: Aktivit\u00e4t in einem starken Sinne. Der Gedankengang des Buches entwickelt diese Idee streng sachorientiert und verteidigt sie gegen den besagten Verdacht in drei Studien, die je einer bestimmten Gestalt von Aktivit\u00e4t der Materie gewidmet sind. Die Idee ist einerseits von metaphysischer Bedeutung, da mit ihr nicht weniger als ein ganz neuer Begriff von Materie verbunden ist, andererseits aber auch von sozialphilosophischer Relevanz: Denn in der Aktivit\u00e4t der Materie liegt die M\u00f6glichkeit, Materie in befreiender Weise als ein Gegen\u00fcber zu erfahren, etwa in bestimmten \u00e4sthetischen Konstellationen; eine freie Beziehung zu einem Gegen\u00fcber besteht gerade nicht allein in Intersubjektivit\u00e4t.<br\/><br\/>Das Buch ist im Dialog mit Horst Bredekamps Theorie des Bildakts geschrieben, in der verwandte Motive verfolgt werden, und um ein Nachwort Bredekamps erg\u00e4nzt.","47141":"Thomas Oehl zeigt in seinem Buch in Auseinandersetzung mit Hegels (und Adornos) Philosophie, dass und wie Materie als aktiv gedacht werden kann.<br\/><br\/>Die Idee einer Aktivit\u00e4t der Materie zieht sich wie ein Versprechen durch die moderne, nachhegelsche Philosophie, insbesondere im \u00bbMaterialismus\u00ab, wie er von Marx und Adorno gepr\u00e4gt wurde. Sie stand und steht jedoch stets im Verdacht, der Materie irrationalerweise etwas zuschreiben zu wollen, das wir allein dem Subjekt zuschreiben d\u00fcrfen: Aktivit\u00e4t in einem starken Sinne. Der Gedankengang des Buches entwickelt diese Idee streng sachorientiert und verteidigt sie gegen den besagten Verdacht in drei Studien, die je einer bestimmten Gestalt von Aktivit\u00e4t der Materie gewidmet sind. Die Idee ist einerseits von metaphysischer Bedeutung, da mit ihr nicht weniger als ein ganz neuer Begriff von Materie verbunden ist, andererseits aber auch von sozialphilosophischer Relevanz: Denn in der Aktivit\u00e4t der Materie liegt die M\u00f6glichkeit, Materie in befreiender Weise als ein Gegen\u00fcber zu erfahren, etwa in bestimmten \u00e4sthetischen Konstellationen; eine freie Beziehung zu einem Gegen\u00fcber besteht gerade nicht allein in Intersubjektivit\u00e4t.<br\/><br\/>Das Buch ist im Dialog mit Horst Bredekamps Theorie des Bildakts geschrieben, in der verwandte Motive verfolgt werden, und um ein Nachwort Bredekamps erg\u00e4nzt."},"doi":{"47095":"","47139":"10.28937\/978-3-7873-5200-5","47141":""},"isbn":{"47095":"978-3-7873-5199-2","47139":"978-3-7873-5200-5","47141":"978-3-7873-5201-2"},"marketing_short_text":{"47095":"","47139":"","47141":""},"recension_text":{"47095":"","47139":"","47141":""},"language":{"47095":"","47139":"","47141":""},"cover":{"47095":"Kartoniert","47139":"","47141":""},"pages":{"47095":"134 Seiten.","47139":"134 Seiten.","47141":"134 Seiten."},"edition":{"47095":"","47139":"Unver\u00e4ndertes eBook der 1. Auflage von 2026","47141":"Unver\u00e4ndertes EPUB der 1. Auflage von 2026"},"pod":{"47095":"Nein","47139":"Nein","47141":"Nein"},"copyright_year":{"47095":"","47139":"","47141":""},"vlb_tix_link":{"47095":"https:\/\/neu.vlbtix.de\/products\/9783787351992?type=gtin","47139":"","47141":""},"defaultValues":{"163":"15"}};
28827            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
28828
28829            if (typeof window.amxnotif_wrap_attributes === 'function') {
28830                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
28831                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
28832            }
28833
28834            const configurableOptionsComponent = initConfigurableOptions(
28835                '47160',
28836                config
28837            );
28838            const swatchOptionsComponent = initSwatchOptions(
28839                swatchConfig
28840            );
28841
28842            // DWS - Configurable product preselect start
28843            const confProdPreSelect = () => {
28844                return {
28845                    preselectQuerystringItems() {
28846                        var data = {"id":"47095","output":"15"};
28847                        const urlQueryParams = new URLSearchParams(window.location.search);
28848
28849                                                this.$nextTick(() => {
28850                            setTimeout(() => {
28851                                const rootEl = this.$root || this.$el;
28852                                if (!rootEl) return;
28853
28854                                const applySelection = (attrCode, attrValue) => {
28855                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
28856
28857                                    const attributes = Object.values(this.optionConfig.attributes || {});
28858                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
28859
28860                                    if (targetAttr) {
28861                                        const attrId = String(targetAttr.id);
28862                                        const optionVal = String(attrValue);
28863
28864                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
28865
28866                                        if (inputEl) {
28867                                                                                        inputEl.click();
28868                                            inputEl.dispatchEvent(new Event('change', {
28869                                                bubbles: true
28870                                            }));
28871                                        } else {
28872                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
28873                                            if (selectEl) {
28874                                                selectEl.value = optionVal;
28875                                                selectEl.dispatchEvent(new Event('change', {
28876                                                    bubbles: true
28877                                                }));
28878                                            }
28879                                        }
28880
28881                                                                                this.changeOption(attrId, optionVal, false);
28882                                    }
28883                                };
28884
28885                                                                if (data && typeof data === 'object') {
28886                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
28887                                }
28888
28889                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
28890                                    if (attribute && attribute.code) {
28891                                        let optionValue = urlQueryParams.get(attribute.code);
28892                                        if (optionValue) {
28893                                            let optionId = false;
28894                                            const attributes = Object.values(this.optionConfig.attributes || {});
28895                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
28896
28897                                            let found = false;
28898                                            Object.values(targetAttr.options).map(option => {
28899                                                if (found === false && option.label === optionValue) {
28900                                                    optionId = option.id;
28901                                                    found = true;
28902                                                }
28903                                            });
28904
28905                                            const attrId = String(targetAttr.id);
28906                                            let optionVal = String(optionValue);
28907                                            if (found) {
28908                                                optionVal = String(optionId);
28909                                            }
28910
28911                                            applySelection(attribute.code, optionVal);
28912                                        }
28913                                    }
28914                                });
28915                            }, 100);
28916                        });
28917                    }
28918                }
28919            };
28920            // DWS - Configurable product preselect end
28921
28922            const result = Object.assign(
28923                configurableOptionsComponent,
28924                swatchOptionsComponent, {
28925                    productId: '47160',
28926                    productIndex: 0,
28927                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
28928                    showSwatches: false,
28929                    precalcOptions: {},
28930                    originalInit: configurableOptionsComponent.init,
28931                    init() {
28932                        try {
28933                            this.precalcOptions = {};
28934                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
28935                            this.preselectQuerystringItems();
28936                            if (Array.isArray(attrSource)) {
28937                                attrSource.forEach(attr => {
28938                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
28939                                });
28940                            } else if (attrSource && typeof attrSource === 'object') {
28941                                Object.keys(attrSource).forEach(id => {
28942                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
28943                                });
28944                            }
28945                        } catch (e) {
28946                            console.error('Pre-calc error:', e);
28947                        }
28948
28949                        if (typeof this.originalInit === 'function') {
28950                            this.originalInit();
28951                        }
28952
28953                        try {
28954                            this.initShowSwatchesIntersect();
28955                        } catch (e) {
28956                            console.error('intersect error:', e);
28957                        }
28958                    },
28959
28960                    updateGallery() {
28961                        if (!this.productIndex) return;
28962
28963                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
28964                                method: 'GET',
28965                                headers: {
28966                                    'Content-Type': 'application/json',
28967                                    'X-Requested-With': 'XMLHttpRequest'
28968                                }
28969                            })
28970                            .then(response => response.json())
28971                            .then(data => {
28972                                if (data && data.medium) {
28973                                    window.dispatchEvent(new CustomEvent("update-gallery-47160", {
28974                                        detail: data.medium
28975                                    }));
28976                                }
28977                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
28978                    },
28979
28980
28981                    initShowSwatchesIntersect() {
28982                        const observer = new IntersectionObserver(entries => {
28983                            if (entries[0].isIntersecting) {
28984                                this.showSwatches = true;
28985                                observer.disconnect();
28986                            }
28987                        }, {
28988                            rootMargin: '512px'
28989                        });
28990                        observer.observe(this.$el);
28991                    },
28992                    getOptions(attrId) {
28993                        return this.precalcOptions[attrId] || [];
28994                    },
28995                    getOptionsByAttrId() {
28996                        return this.getOptions(this.$el.dataset.attributeId);
28997                    },
28998                    _getItemId() {
28999                        if (this.item && this.item.id) return this.item.id;
29000                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
29001                    },
29002                    getSwatchOptionHtmlId() {
29003                        const itemId = this._getItemId();
29004                        return itemId ? this.$id(`attribute-option-47160-${itemId}`) : '';
29005                    },
29006                    getSwatchOptionHtmlIdGroup() {
29007                        const itemId = this._getItemId();
29008                        return itemId ? [`attribute-option-47160-${itemId}`] : [];
29009                    },
29010                    getAttributeSwatchData(attributeId) {
29011                        const data = Object.assign({}, this.swatchConfig[attributeId]);
29012                        if (data['additional_data']) {
29013                            try {
29014                                data['details'] = JSON.parse(data['additional_data']);
29015                            } catch (e) {
29016                                data['details'] = {};
29017                            }
29018                        }
29019                        return data;
29020                    },
29021                    getSwatchType(attributeId, optionId) {
29022                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
29023                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
29024                        }
29025                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
29026                            this.swatchConfig[attributeId].details.swatch_input_type :
29027                            "empty";
29028                        if (type === 'visual') {
29029                            const config = this.swatchConfig[attributeId];
29030                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
29031                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
29032                            }
29033                            // Fallback to first option type
29034                            for (const oId in config) {
29035                                if (config[oId] && typeof config[oId].type !== 'undefined') {
29036                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
29037                                }
29038                            }
29039                        }
29040                        return type;
29041                    },
29042                    mapSwatchTypeNumberToTypeCode(type) {
29043                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
29044                    },
29045                    isTextSwatch() {
29046                        const itemId = this._getItemId();
29047                        if (!this.$el || !itemId) return false;
29048                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
29049                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
29050                    },
29051
29052                    getSwatchText() {
29053                        const itemId = this._getItemId();
29054                        if (this.item) return this.item.label || '';
29055                        if (!this.$el || !itemId) return '';
29056                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
29057                        const options = attrId ? this.getOptions(attrId) : [];
29058                        const opt = options.find(o => o.id == itemId);
29059                        return opt ? opt.label : '';
29060                    },
29061                    getSwatchBackgroundStyle() {
29062                        const itemId = this._getItemId();
29063                        if (!this.$el || !itemId) return '';
29064                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
29065                        if (!attrId) return '';
29066                        const type = this.getSwatchType(attrId, itemId);
29067                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
29068                            this.swatchConfig[attrId][itemId] :
29069                            null;
29070                        if (!swatchData) return '';
29071                        if (type === "color") return 'background-color:' + swatchData.value;
29072                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
29073                        return '';
29074                    },
29075                    swatchOptionClasses() {
29076                        const itemId = this._getItemId();
29077                        if (!this.$el || !itemId) return {};
29078                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
29079                        return {
29080                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
29081                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
29082                            'w-6 h-6': !this.isTextSwatch()
29083                        }
29084                    },
29085
29086                    onFocusSwatchItem() {
29087                        const itemId = this._getItemId();
29088                        if (itemId) this.focusedLabel = itemId;
29089                    },
29090                    onChangeOption() {
29091                        const itemId = this._getItemId();
29092                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
29093                        if (attrId && itemId) this.changeOption(attrId, itemId);
29094                    },
29095                    changeOption(attributeId, value) {
29096                        if (value === '') {
29097                            return;
29098                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
29099                        } else {
29100                            this.selectedValues[attributeId] = value;
29101                        }
29102
29103                        this.findSimpleIndex();
29104                        this.findAllowedAttributeOptions();
29105                        this.updatePrices();
29106                        this.updateGallery();
29107
29108                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
29109                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
29110
29111                        const eventDetail = {
29112                            productId: this.productId,
29113                            optionId: attributeId,
29114                            value: value,
29115                            productIndex: this.productIndex || 0,
29116                            selectedValues: this.selectedValues,
29117                            candidates: candidates,
29118                            sourceElement: this.$el
29119                        };
29120
29121                        // Dispatch for Amasty
29122                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
29123                            detail: eventDetail
29124                        }));
29125
29126                        // Dispatch for Hyva listing
29127                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
29128                            detail: eventDetail
29129                        }));
29130                    },
29131
29132
29133                    clearOptionIfActive() {
29134                        const itemId = this._getItemId();
29135                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
29136                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
29137                            this.changeOption(attrId, '');
29138
29139                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
29140                            if (!input && this.$el?.querySelector) {
29141                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
29142                            }
29143                            if (!input && this.$el?.closest) {
29144                                const root = this.$el.closest('[data-product-id]') || this.$el;
29145                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
29146                            }
29147                            if (input) {
29148                                input.checked = false;
29149                            }
29150                        }
29151                    },
29152                    get optionIsEnabled() {
29153                        const itemId = this._getItemId();
29154                        if (!this.$el || !itemId) return true;
29155                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
29156                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
29157                        return !!allowedOptions.find(opt => opt.id == itemId);
29158                    },
29159                    get isSelected() {
29160                        const itemId = this._getItemId();
29161                        if (!this.$el || !itemId) return false;
29162                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
29163                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
29164                    },
29165                    get isSwatchRequired() {
29166                        if (!this.$el) return false;
29167                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
29168                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
29169                    },
29170                    focusedLabel: false,
29171                    activeTooltipItem: false,
29172                    tooltipPositionElement: false,
29173                    setActiveTooltipItem() {
29174                        const itemId = this._getItemId();
29175                        if (!this.$el || !itemId) return;
29176                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
29177                        this.activeTooltipItem = {
29178                            attribute: attrId,
29179                            item: itemId,
29180                            index: 0
29181                        };
29182                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
29183                    },
29184                    unsetActiveTooltipItem() {
29185                        this.activeTooltipItem = false;
29186                    }
29187                },
29188                confProdPreSelect()
29189            );
29190
29191            if (result.optionConfig && result.optionConfig.attributes) {
29192                const attributes = result.optionConfig.attributes;
29193                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
29194                    let source = attributes;
29195                    if (Array.isArray(attributes)) {
29196                        source = {};
29197                        attributes.forEach(attr => {
29198                            if (attr && attr.id) source[attr.id] = attr;
29199                        });
29200                    }
29201                    const values = Object.values(source);
29202                    const wrapper = Object.assign(values, source);
29203                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
29204                        value: true,
29205                        enumerable: false
29206                    });
29207                    result.optionConfig.attributes = wrapper;
29208                }
29209            }
29210
29211            return result;
29212        }
29213
29214        window.addEventListener('alpine:init', () => {
29215            Alpine.data('initConfigurableSwatchOptions_47160', initConfigurableSwatchOptions_47160);
29216        }, {
29217            once: true
29218        });
29219    </script>
29219
29220    
29221    <div x-data="initConfigurableSwatchOptions_47160" x-defer="intersect">
29222        <div class="pagebuilder-home-hidden">
29223                                            
29224                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
29225                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
29226                        <template x-if="showSwatches">
29227                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-47160-163" role="radiogroup" aria-label="Einband">
29228                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
29229                                    <div :data-option-id="item.id" style="display: contents">
29230                                        <div x-id="getSwatchOptionHtmlIdGroup">
29231    <template x-if="optionIsEnabled">
29232        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
29232self="unsetActiveTooltipItem">
29233            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-47160-163">
29234            <div>
29235                <template x-if="isTextSwatch">
29236                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
29237                </template>
29238                <template x-if="!optionIsActive(163, item.id)">
29239                    <div>
29240                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
29241                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
29242                        </svg>
29243                    </div>
29244                </template>
29245            </div>
29246        </label>
29247    </template>
29248</div>                                    </div>
29249                                </template>
29250                            </div>
29251                        </template>
29252                    </div>
29253                </div>
29254                    </div>
29255    </div>
29256            
29257                                                <div class="meta py-4 pagebuilder-home-hidden">
29258                <div x-data="initMarketingShortText_47160()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
29259                    <!-- Marketing short text -->
29260                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
29261                    </div>
29262
29263                    <!-- Short description -->
29264                                                                <div class="short-description">
29265                            Thomas Oehl zeigt in seinem Buch in Auseinandersetzung mit Hegels (und Adornos) Philosophie, dass und wie Materie als aktiv gedacht werden kann.
29266
29267Die Idee einer Aktivit&auml;t der Materie zieht sich ...                            <a href="https://meiner.de/fmv_de/materie-als-aktives-gegena-ber-des-subjekts-22892" class="underline">mehr</a>
29268                        </div>
29269                                    </div>
29270
29271                <!-- Series  -->
29272                                    <div class="mb-1">
29273                        <span class="sr-only">Reihe:</span>
29274                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
29275                            <span>Blaue Reihe</span>
29276                        </a>
29277                                            </div>
29278                
29279                
29280                                                    <div class="mb-1">
29281                        <span x-data="initEditionText_47160()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
29282                            <!-- Marketing short text -->
29283                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 134 Seiten.                        </span>
29284                    </div>
29285                
29286                            </div>
29287            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
29288                
29289                <div class="justify-end" x-data="initPriceBox()" @update-prices-47160.window="updatePrice($event.detail);">
29290                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="47160" data-price-box="product-id-47160"><span class="normal-price">
29291    <span x-data x-id="['product\u002Dprice\u002D47160']" class="price-container price-final_price tax weee">
29292            <span class="price-label">Ab</span>
29293                <span class="approx-price">ca. </span>
29294        <span :id="$id('product\u002Dprice\u002D47160')" data-price-amount="16.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">16,99&nbsp;&euro;</span></span>
29295        </span>
29296</span>
29297
29298
29299</div>                </div>
29300
29301                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
29302                                            <div class="open-access-container open-access-container-47160                    flex mt-4 ml-auto sm:mt-0 hidden">
29303                            <div class="text-gray-700">
29304                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
29305                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
29306                                        Kostenlos online lesen                                    </a>
29307                                </button>
29308                            </div>
29309                        </div>
29310                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Materie als aktives Gegen&uuml;ber des Subjekts" aria-label="In den Warenkorb Materie als aktives Gegen&uuml;ber des Subjekts" data-addto="cart">
29311                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
29312  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
293120 014 0z"></path>
29313</svg>
29314                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
29315                                        In den Warenkorb                                    </span>
29316                                </button>
29317                                                                                                                    
29318<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(47160)" aria-label="Zur Wunschliste hinzuf&uuml;gen Materie als aktives Gegen&uuml;ber des Subjekts" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
29319    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
29320  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
29321</svg>
29322</button>
29323                                    </div>
29324            </div>
29325        </div>
29326        
29326<script>
29327            function initMarketingShortText_47160() {
29328                var marketingShortTextConfig = {};
29329                if (typeof window.initConfigurableSwatchOptions_47160 === "function") {
29330                    var fullConfig = window.initConfigurableSwatchOptions_47160().optionConfig
29331                    var marketingShortTextConfig = fullConfig.marketing_short_text;
29332                }
29333                return {
29334                    marketingShortText: '',
29335                    config: marketingShortTextConfig,
29336                    productId: '47160',
29337                    getMarketingShortText(detail) {
29338                        this.marketingShortText = detail.productIndex ?
29339                            this.config[detail.productIndex] :
29340                            null;
29341                    },
29342                    eventListeners: {
29343                        ['@listing-configurable-selection-changed.window'](event) {
29344                            if (this.productId == event.detail.productId) {
29345                                this.getMarketingShortText(event.detail);
29346                            }
29347
29348                        }
29349                    }
29350                }
29351            }
29352
29353            function initEditionText_47160() {
29354                var editionTextConfig = {};
29355                if (typeof window.initConfigurableSwatchOptions_47160 === "function") {
29356                    var fullConfig = window.initConfigurableSwatchOptions_47160().optionConfig
29357                    var editionTextConfig = fullConfig.edition;
29358                }
29359                return {
29360                    editionText: '',
29361                    config: editionTextConfig,
29362                    productId: '47160',
29363                    getEditionText(detail) {
29364                        this.editionText = detail.productIndex ?
29365                            this.config[detail.productIndex] :
29366                            null;
29367                    },
29368                    eventListeners: {
29369                        ['@listing-configurable-selection-changed.window'](event) {
29370                            if (this.productId == event.detail.productId) {
29371                                this.getEditionText(event.detail);
29372                            }
29373
29374                        }
29375                    }
29376                }
29377            }
29378        </script>
29378
29379                    </form>
29380                            
29381    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/46699/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk17982">
29382        <input name="form_key" type="hidden" value="R6NBsKL42phFmgWc">        <input type="hidden" name="product" value="46699">
29383                                    <a href="https://meiner.de/fmv_de/von-sa-a-en-la-gen-und-bilderlosen-bildern-17982" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
29384            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-46699.window="$el.src = $event.detail" alt="Von s&uuml;&szlig;en L&uuml;gen und bilderlosen Bildern" title="Von s&uuml;&szlig;en L&uuml;gen und bilderlosen Bildern" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787349517_1.jpg" :style="{
29385                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
29386                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
29387            }">
29388                    </a>
29389        <div class="product-info flex flex-col flex-grow ">
29390                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
29391                                    <div class="mb-2 text-sm text-gray-500 font-medium">
29392                                                                                    <a href="https://meiner.de/fmv_de/person/Josef-Fruchtl-3439/" class="mb-2">
29393                                    Josef Fr&uuml;chtl                                                                    </a>
29394                                                                                                                                    </div>
29395                                <a class="product-item-link" href="https://meiner.de/fmv_de/von-sa-a-en-la-gen-und-bilderlosen-bildern-17982">
29396                    Von s&uuml;&szlig;en L&uuml;gen und bilderlosen Bildern                </a>
29397                            </div>
29398
29399            <div x-data="initEditionText_46699()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
29400                <!-- Marketing short text -->
29401                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
29402                </div>
29403            </div>
29404
29405                            <div class="py-1 grid  mb-4 ">
29406                    
29407                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":46699,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":46699,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2Rl","childProducts":{"46488":"1","46737":"1","46736":"1"},"childProductsAlertStatus":{"46488":"0","46737":"0","46736":"0"},"indexMapping":{"163:15":46488,"163:9":46737,"163:8":46736},"availabilityMessages":{"46488":"Lieferbar innerhalb von 3-5 Tagen","46737":"Download sofort  verf\u00fcgbar","46736":"Download sofort  verf\u00fcgbar"},"openAccess":{"46699":{"status":0},"46488":{"status":0},"46737":{"status":0},"46736":{"status":0}}},"availabilityMessages":{"46488":"Lieferbar innerhalb von 3-5 Tagen","46737":"Download sofort  verf\u00fcgbar","46736":"Download sofort  verf\u00fcgbar"},"openAccess":{"46699":{"status":0},"46488":{"status":0},"46737":{"status":0},"46736":{"status":0}}}'>
29408        <template x-if="containerVisible">
29409                            <!-- Popup Trigger -->
29410                <div>
29411                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
29412                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
29413                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
29414  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
29415<title>bell</title></svg>
29416</span>
29417                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
29418
29419                    <!-- Popup Modal -->
29420                    <template x-if="showModal">
29421                        <template x-teleport=".page-wrapper">
29422                            <div x-cloak class="fixed inset-0 flex items-center justify-center
29423                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
29424                                <div class="relative bg-white rounded-lg shadow-xl
29425                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
29426                                    <div class="p-6">
29427                                        <!-- Subscription Form for Popup -->
29428                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
29429                                            <input name="form_key" type="hidden" value="R6NBsKL42phFmgWc">
29430                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
29431                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
29432
29433                                            <div class="flex flex-col gap-3">
29434                                                <div class="flex-grow grow">
29435                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
29436                                                        shadow-xs focus:outline-none focus:outline-hidden
29437                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
29438                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
29439                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
29440                                                </div>
29441                                                <input type="hidden" name="product_id" :value="currentProductId">
29442                                                <input type="hidden" name="type" value="email">
29443
29444                                                
29445                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvZm12X2Rl">
29446
29447                                                <div class="amxnotif_guest_action">
29448                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
29449                                                        rounded-md focus:outline-none
29450                                                        focus:outline-hidden focus:ring-2
29451                                                        focus:ring-offset-2 disabled:opacity-50
29452                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
29453                                                        Benachrichtigen                                                    </button>
29454                                                </div>
29455                                            </div>
29456
29457                                                                                            <div class="flex items-start pt-2">
29458                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
29459                                                        text-blue-600 border-gray-300 rounded-sm">
29460                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
29461                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
29462                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
29463                                                </div>
29464                                                                                    </form>
29465                                    </div>
29466
29467                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
29468                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
29469                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
29470  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
29471<title>x</title></svg>
29472                                    </button>
29473                                </div>
29474                            </div>
29475                        </template>
29476                    </template>
29477                </div>
29478                    </template>
29479    </div>
29480
29481<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_46699" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":46699,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2Rl","childProducts":{"46488":"1","46737":"1","46736":"1"}
29481,"childProductsAlertStatus":{"46488":"0","46737":"0","46736":"0"},"indexMapping":"{\u0022163:15\u0022:46488,\u0022163:9\u0022:46737,\u0022163:8\u0022:46736}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":46699,"availabilityMessages":{"46488":"Lieferbar innerhalb von 3-5 Tagen","46737":"Download sofort  verf\u00fcgbar","46736":"Download sofort  verf\u00fcgbar"},"openAccess":{"46699":{"status":0},"46488":{"status":0},"46737":{"status":0},"46736":{"status":0}}}'>
29482    
29483    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
29484        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
29485        <span x-html="optionsLabelText"></span>
29486    </p>
29487</div>                </div>
29488            
29489                                
29489<script>
29490        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
29491            try {
29492                const attributes = (config && config.attributes) ? config.attributes : null;
29493                if (!attributes) return [];
29494                let attr = null;
29495                if (Array.isArray(attributes)) {
29496                    for (let i = 0; i < attributes.length; i++) {
29497                        const a = attributes[i];
29498                        if (a && a.id == attrId) {
29499                            attr = a;
29500                            break;
29501                        }
29502                    }
29503                } else {
29504                    attr = attributes[attrId];
29505                }
29506                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
29507            } catch (e) {
29508                return [];
29509            }
29510        };
29511
29512        function initConfigurableSwatchOptions_46699() {
29513            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46488"]},{"id":"8","label":"PDF","products":["46736"]},{"id":"9","label":"EPUB","products":["46737"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46488":{"baseOldPrice":{"amount":23.271027037383},"oldPrice":{"amount":24.9},"basePrice":{"amount":23.271027037383},"finalPrice":{"amount":24.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46737":{"baseOldPrice":{"amount":18.682241990654},"oldPrice":{"amount":19.99},"basePrice":{"amount":18.682241990654},"finalPrice":{"amount":19.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46736":{"baseOldPrice":{"amount":18.682241990654},"oldPrice":{"amount":19.99},"basePrice":{"amount":18.682241990654},"finalPrice":{"amount":19.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":18.682241990654},"oldPrice":{"amount":19.99},"basePrice":{"amount":16.798318327731},"finalPrice":{"amount":19.99},"isApproxPrice":null},"productId":"46699","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46488":{"163":"15"},"46737":{"163":"9"},"46736":{"163":"8"}},"salable":{"163":{"15":["46488"],"9":["46737"],"8":["46736"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"46488":"004949","46737":"004951","46736":"004950"},"output":{"46488":"Kartoniert","46736":"PDF","46737":"EPUB"},"original_name":{"46488":"","46736":"","46737":""},"openaccess_license_link":{"46488":"","46736":"","46737":""},"openaccess_license_name":{"46488":"","46736":"","46737":""},"openaccess_external_link":{"46488":"","46736":"","46737":""},"gpsr_safety_info":{"46488":"","46736":"","46737":""},"description":{"46488":"Die Filmphilosophie ist im Laufe des 20. Jahrhunderts zu einem kleinen, aber etablierten Bereich der Philosophie geworden. Von Hugo M\u00fcnsterberg (1916), Rudolf Arnheim, Rudolf Harms und Siegfried Kracauer \u00fcber Benjamin und Adorno bis zu Stanley Cavell und Gilles Deleuze sind eine Vielzahl an philosophischen Abhandlungen und Theorien zum Film entstanden, die den Film schlie\u00dflich auf eine neue Reflexions- und Bedeutungsebene gehoben haben.<br\/><br\/>Von Beginn an zogen Fragen nach dem Verh\u00e4ltnis von Film und Kunst, Film und Gesellschaft, der anregenden Kraft cinematischer Fiktionen und Imaginationen, dem Stellenwert von Emotionen und der besonderen Art von Narration das theoretische Interesse auf sich. Josef Fr\u00fcchtl f\u00fchrt in diesem Band zahlreiche Beitr\u00e4ge zur Philosophie des Films zusammen: von Adornos Pl\u00e4doyer f\u00fcr einen Film der unsichtbaren, bilderlosen Bilder \u00fcber die Selbstreflexion der Helden-figur im Kino, die De-\/Legitimation einer panoptischen Gesellschaft in einem Film wie \u00bbMinority Report\u00ab, metaphysische Gro\u00dferz\u00e4hlungen wie etwa \u00bbAvatar\u00ab, filmische Verarbeitungen von traumatisierenden Ereignissen im Film \u00bbUnited 93\u00ab und im Science-Fiction am Beispiel von Christopher Nolans Film \u00bbInterstellar\u00ab bis zur Filmkom\u00f6die.<br\/><br\/>Das Buch bietet damit einen guten, anschaulichen Einstieg in die Filmphilosophie.","46736":"Die Filmphilosophie ist im Laufe des 20. Jahrhun
29513derts zu einem kleinen, aber etablierten Bereich der Philosophie geworden. Von Hugo M\u00fcnsterberg (1916), Rudolf Arnheim, Rudolf Harms und Siegfried Kracauer \u00fcber Benjamin und Adorno bis zu Stanley Cavell und Gilles Deleuze sind eine Vielzahl an philosophischen Abhandlungen und Theorien zum Film entstanden, die den Film schlie\u00dflich auf eine neue Reflexions- und Bedeutungsebene gehoben haben.<br\/><br\/>Von Beginn an zogen Fragen nach dem Verh\u00e4ltnis von Film und Kunst, Film und Gesellschaft, der anregenden Kraft cinematischer Fiktionen und Imaginationen, dem Stellenwert von Emotionen und der besonderen Art von Narration das theoretische Interesse auf sich. Josef Fr\u00fcchtl f\u00fchrt in diesem Band zahlreiche Beitr\u00e4ge zur Philosophie des Films zusammen: von Adornos Pl\u00e4doyer f\u00fcr einen Film der unsichtbaren, bilderlosen Bilder \u00fcber die Selbstreflexion der Helden-figur im Kino, die De-\/Legitimation einer panoptischen Gesellschaft in einem Film wie \u00bbMinority Report\u00ab, metaphysische Gro\u00dferz\u00e4hlungen wie etwa \u00bbAvatar\u00ab, filmische Verarbeitungen von traumatisierenden Ereignissen im Film \u00bbUnited 93\u00ab und im Science-Fiction am Beispiel von Christopher Nolans Film \u00bbInterstellar\u00ab bis zur Filmkom\u00f6die.<br\/><br\/>Das Buch bietet damit einen guten, anschaulichen Einstieg in die Filmphilosophie.","46737":"Die Filmphilosophie ist im Laufe des 20. Jahrhunderts zu einem kleinen, aber etablierten Bereich der Philosophie geworden. Von Hugo M\u00fcnsterberg (1916), Rudolf Arnheim, Rudolf Harms und Siegfried Kracauer \u00fcber Benjamin und Adorno bis zu Stanley Cavell und Gilles Deleuze sind eine Vielzahl an philosophischen Abhandlungen und Theorien zum Film entstanden, die den Film schlie\u00dflich auf eine neue Reflexions- und Bedeutungsebene gehoben haben.<br\/><br\/>Von Beginn an zogen Fragen nach dem Verh\u00e4ltnis von Film und Kunst, Film und Gesellschaft, der anregenden Kraft cinematischer Fiktionen und Imaginationen, dem Stellenwert von Emotionen und der besonderen Art von Narration das theoretische Interesse auf sich. Josef Fr\u00fcchtl f\u00fchrt in diesem Band zahlreiche Beitr\u00e4ge zur Philosophie des Films zusammen: von Adornos Pl\u00e4doyer f\u00fcr einen Film der unsichtbaren, bilderlosen Bilder \u00fcber die Selbstreflexion der Helden-figur im Kino, die De-\/Legitimation einer panoptischen Gesellschaft in einem Film wie \u00bbMinority Report\u00ab, metaphysische Gro\u00dferz\u00e4hlungen wie etwa \u00bbAvatar\u00ab, filmische Verarbeitungen von traumatisierenden Ereignissen im Film \u00bbUnited 93\u00ab und im Science-Fiction am Beispiel von Christopher Nolans Film \u00bbInterstellar\u00ab bis zur Filmkom\u00f6die.<br\/><br\/>Das Buch bietet damit einen guten, anschaulichen Einstieg in die Filmphilosophie."},"doi":{"46488":"","46736":"10.28937\/978-3-7873-4950-0","46737":""},"isbn":{"46488":"978-3-7873-4949-4","46736":"978-3-7873-4950-0","46737":"978-3-7873-4951-7"},"marketing_short_text":{"46488":"","46736":"","46737":""},"recension_text":{"46488":"","46736":"","46737":""},"language":{"46488":"","46736":"","46737":""},"cover":{"46488":"Kartoniert","46736":"","46737":""},"pages":{"46488":"208 Seiten.","46736":"208 Seiten.","46737":"208 Seiten."},"edition":{"46488":"","46736":"Unver\u00e4ndertes eBook der 1. Auflage von 2026","46737":"Unver\u00e4ndertes EPUB der 1. Auflage von 2026"},"pod":{"46488":"Nein","46736":"Nein","46737":"Nein"},"copyright_year":{"46488":"","46736":"","46737":""},"vlb_tix_link":{"46488":"https:\/\/neu.vlbtix.de\/products\/9783787349494?type=gtin","46736":"","46737":""},"defaultValues":{"163":"15"}};
29514            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
29515
29516            if (typeof window.amxnotif_wrap_attributes === 'function') {
29517                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
29518                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
29519            }
29520
29521            const configurableOptionsComponent = initConfigurableOptions(
29522                '46699',
29523                config
29524            );
29525            const swatchOptionsComponent = initSwatchOptions(
29526                swatchConfig
29527            );
29528
29529            // DWS - Configurable product preselect start
29530            const confProdPreSelect = () => {
29531                return {
29532                    preselectQuerystringItems() {
29533                        var data = {"id":"46488","output":"15"};
29534                        const urlQueryParams = new URLSearchParams(window.location.search);
29535
29536                                                this.$nextTick(() => {
29537                            setTimeout(() => {
29538                                const rootEl = this.$root || this.$el;
29539                                if (!rootEl) return;
29540
29541                                const applySelection = (attrCode, attrValue) => {
29542                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
29543
29544                                    const attributes = Object.values(this.optionConfig.attributes || {});
29545                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
29546
29547                                    if (targetAttr) {
29548                                        const attrId = String(targetAttr.id);
29549                                        const optionVal = String(attrValue);
29550
29551                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
29552
29553                                        if (inputEl) {
29554                                                                                        inputEl.click();
29555                                            inputEl.dispatchEvent(new Event('change', {
29556                                                bubbles: true
29557                                            }));
29558                                        } else {
29559                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
29560                                            if (selectEl) {
29561                                                selectEl.value = optionVal;
29562                                                selectEl.dispatchEvent(new Event('change', {
29563                                                    bubbles: true
29564                                                }));
29565                                            }
29566                                        }
29567
29568                                                                                this.changeOption(attrId, optionVal, false);
29569                                    }
29570                                };
29571
29572                                                                if (data && typeof data === 'object') {
29573                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
29574                                }
29575
29576                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
29577                                    if (attribute && attribute.code) {
29578                                        let optionValue = urlQueryParams.get(attribute.code);
29579                                        if (optionValue) {
29580                                            let optionId = false;
29581                                            const attributes = Object.values(this.optionConfig.attributes || {});
29582                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
29583
29584                                            let found = false;
29585                                            Object.values(targetAttr.options).map(option => {
29586                                                if (found === false && option.label === optionValue) {
29587                                                    optionId = option.id;
29588                                                    found = true;
29589                                                }
29590                                            });
29591
29592                                            const attrId = String(targetAttr.id);
29593                                            let optionVal = String(optionValue);
29594                                            if (found) {
29595                                                optionVal = String(optionId);
29596                                            }
29597
29598                                            applySelection(attribute.code, optionVal);
29599                                        }
29600                                    }
29601                                });
29602                            }, 100);
29603                        });
29604                    }
29605                }
29606            };
29607            // DWS - Configurable product preselect end
29608
29609            const result = Object.assign(
29610                configurableOptionsComponent,
29611                swatchOptionsComponent, {
29612                    productId: '46699',
29613                    productIndex: 0,
29614                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
29615                    showSwatches: false,
29616                    precalcOptions: {},
29617                    originalInit: configurableOptionsComponent.init,
29618                    init() {
29619                        try {
29620                            this.precalcOptions = {};
29621                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
29622                            this.preselectQuerystringItems();
29623                            if (Array.isArray(attrSource)) {
29624                                attrSource.forEach(attr => {
29625                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
29626                                });
29627                            } else if (attrSource && typeof attrSource === 'object') {
29628                                Object.keys(attrSource).forEach(id => {
29629                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
29630                                });
29631                            }
29632                        } catch (e) {
29633                            console.error('Pre-calc error:', e);
29634                        }
29635
29636                        if (typeof this.originalInit === 'function') {
29637                            this.originalInit();
29638                        }
29639
29640                        try {
29641                            this.initShowSwatchesIntersect();
29642                        } catch (e) {
29643                            console.error('intersect error:', e);
29644                        }
29645                    },
29646
29647                    updateGallery() {
29648                        if (!this.productIndex) return;
29649
29650                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
29651                                method: 'GET',
29652                                headers: {
29653                                    'Content-Type': 'application/json',
29654                                    'X-Requested-With': 'XMLHttpRequest'
29655                                }
29656                            })
29657                            .then(response => response.json())
29658                            .then(data => {
29659                                if (data && data.medium) {
29660                                    window.dispatchEvent(new CustomEvent("update-gallery-46699", {
29661                                        detail: data.medium
29662                                    }));
29663                                }
29664                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
29665                    },
29666
29667
29668                    initShowSwatchesIntersect() {
29669                        const observer = new IntersectionObserver(entries => {
29670                            if (entries[0].isIntersecting) {
29671                                this.showSwatches = true;
29672                                observer.disconnect();
29673                            }
29674                        }, {
29675                            rootMargin: '512px'
29676                        });
29677                        observer.observe(this.$el);
29678                    },
29679                    getOptions(attrId) {
29680                        return this.precalcOptions[attrId] || [];
29681                    },
29682                    getOptionsByAttrId() {
29683                        return this.getOptions(this.$el.dataset.attributeId);
29684                    },
29685                    _getItemId() {
29686                        if (this.item && this.item.id) return this.item.id;
29687                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
29688                    },
29689                    getSwatchOptionHtmlId() {
29690                        const itemId = this._getItemId();
29691                        return itemId ? this.$id(`attribute-option-46699-${itemId}`) : '';
29692                    },
29693                    getSwatchOptionHtmlIdGroup() {
29694                        const itemId = this._getItemId();
29695                        return itemId ? [`attribute-option-46699-${itemId}`] : [];
29696                    },
29697                    getAttributeSwatchData(attributeId) {
29698                        const data = Object.assign({}, this.swatchConfig[attributeId]);
29699                        if (data['additional_data']) {
29700                            try {
29701                                data['details'] = JSON.parse(data['additional_data']);
29702                            } catch (e) {
29703                                data['details'] = {};
29704                            }
29705                        }
29706                        return data;
29707                    },
29708                    getSwatchType(attributeId, optionId) {
29709                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
29710                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
29711                        }
29712                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
29713                            this.swatchConfig[attributeId].details.swatch_input_type :
29714                            "empty";
29715                        if (type === 'visual') {
29716                            const config = this.swatchConfig[attributeId];
29717                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
29718                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
29719                            }
29720                            // Fallback to first option type
29721                            for (const oId in config) {
29722                                if (config[oId] && typeof config[oId].type !== 'undefined') {
29723                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
29724                                }
29725                            }
29726                        }
29727                        return type;
29728                    },
29729                    mapSwatchTypeNumberToTypeCode(type) {
29730                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
29731                    },
29732                    isTextSwatch() {
29733                        const itemId = this._getItemId();
29734                        if (!this.$el || !itemId) return false;
29735                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
29736                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
29737                    },
29738
29739                    getSwatchText() {
29740                        const itemId = this._getItemId();
29741                        if (this.item) return this.item.label || '';
29742                        if (!this.$el || !itemId) return '';
29743                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
29744                        const options = attrId ? this.getOptions(attrId) : [];
29745                        const opt = options.find(o => o.id == itemId);
29746                        return opt ? opt.label : '';
29747                    },
29748                    getSwatchBackgroundStyle() {
29749                        const itemId = this._getItemId();
29750                        if (!this.$el || !itemId) return '';
29751                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
29752                        if (!attrId) return '';
29753                        const type = this.getSwatchType(attrId, itemId);
29754                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
29755                            this.swatchConfig[attrId][itemId] :
29756                            null;
29757                        if (!swatchData) return '';
29758                        if (type === "color") return 'background-color:' + swatchData.value;
29759                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
29760                        return '';
29761                    },
29762                    swatchOptionClasses() {
29763                        const itemId = this._getItemId();
29764                        if (!this.$el || !itemId) return {};
29765                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
29766                        return {
29767                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
29768                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
29769                            'w-6 h-6': !this.isTextSwatch()
29770                        }
29771                    },
29772
29773                    onFocusSwatchItem() {
29774                        const itemId = this._getItemId();
29775                        if (itemId) this.focusedLabel = itemId;
29776                    },
29777                    onChangeOption() {
29778                        const itemId = this._getItemId();
29779                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
29780                        if (attrId && itemId) this.changeOption(attrId, itemId);
29781                    },
29782                    changeOption(attributeId, value) {
29783                        if (value === '') {
29784                            return;
29785                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
29786                        } else {
29787                            this.selectedValues[attributeId] = value;
29788                        }
29789
29790                        this.findSimpleIndex();
29791                        this.findAllowedAttributeOptions();
29792                        this.updatePrices();
29793                        this.updateGallery();
29794
29795                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
29796                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
29797
29798                        const eventDetail = {
29799                            productId: this.productId,
29800                            optionId: attributeId,
29801                            value: value,
29802                            productIndex: this.productIndex || 0,
29803                            selectedValues: this.selectedValues,
29804                            candidates: candidates,
29805                            sourceElement: this.$el
29806                        };
29807
29808                        // Dispatch for Amasty
29809                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
29810                            detail: eventDetail
29811                        }));
29812
29813                        // Dispatch for Hyva listing
29814                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
29815                            detail: eventDetail
29816                        }));
29817                    },
29818
29819
29820                    clearOptionIfActive() {
29821                        const itemId = this._getItemId();
29822                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
29823                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
29824                            this.changeOption(attrId, '');
29825
29826                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
29827                            if (!input && this.$el?.querySelector) {
29828                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
29829                            }
29830                            if (!input && this.$el?.closest) {
29831                                const root = this.$el.closest('[data-product-id]') || this.$el;
29832                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
29833                            }
29834                            if (input) {
29835                                input.checked = false;
29836                            }
29837                        }
29838                    },
29839                    get optionIsEnabled() {
29840                        const itemId = this._getItemId();
29841                        if (!this.$el || !itemId) return true;
29842                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
29843                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
29844                        return !!allowedOptions.find(opt => opt.id == itemId);
29845                    },
29846                    get isSelected() {
29847                        const itemId = this._getItemId();
29848                        if (!this.$el || !itemId) return false;
29849                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
29850                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
29851                    },
29852                    get isSwatchRequired() {
29853                        if (!this.$el) return false;
29854                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
29855                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
29856                    },
29857                    focusedLabel: false,
29858                    activeTooltipItem: false,
29859                    tooltipPositionElement: false,
29860                    setActiveTooltipItem() {
29861                        const itemId = this._getItemId();
29862                        if (!this.$el || !itemId) return;
29863                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
29864                        this.activeTooltipItem = {
29865                            attribute: attrId,
29866                            item: itemId,
29867                            index: 0
29868                        };
29869                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
29870                    },
29871                    unsetActiveTooltipItem() {
29872                        this.activeTooltipItem = false;
29873                    }
29874                },
29875                confProdPreSelect()
29876            );
29877
29878            if (result.optionConfig && result.optionConfig.attributes) {
29879                const attributes = result.optionConfig.attributes;
29880                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
29881                    let source = attributes;
29882                    if (Array.isArray(attributes)) {
29883                        source = {};
29884                        attributes.forEach(attr => {
29885                            if (attr && attr.id) source[attr.id] = attr;
29886                        });
29887                    }
29888                    const values = Object.values(source);
29889                    const wrapper = Object.assign(values, source);
29890                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
29891                        value: true,
29892                        enumerable: false
29893                    });
29894                    result.optionConfig.attributes = wrapper;
29895                }
29896            }
29897
29898            return result;
29899        }
29900
29901        window.addEventListener('alpine:init', () => {
29902            Alpine.data('initConfigurableSwatchOptions_46699', initConfigurableSwatchOptions_46699);
29903        }, {
29904            once: true
29905        });
29906    </script>
29906
29907    
29908    <div x-data="initConfigurableSwatchOptions_46699" x-defer="intersect">
29909        <div class="pagebuilder-home-hidden">
29910                                            
29911                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
29912                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
29913                        <template x-if="showSwatches">
29914                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-46699-163" role="radiogroup" aria-label="Einband">
29915                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
29916                                    <div :data-option-id="item.id" style="display: contents">
29917                                        <div x-id="getSwatchOptionHtmlIdGroup">
29918    <template x-if="optionIsEnabled">
29919        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
29919self="unsetActiveTooltipItem">
29920            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-46699-163">
29921            <div>
29922                <template x-if="isTextSwatch">
29923                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
29924                </template>
29925                <template x-if="!optionIsActive(163, item.id)">
29926                    <div>
29927                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
29928                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
29929                        </svg>
29930                    </div>
29931                </template>
29932            </div>
29933        </label>
29934    </template>
29935</div>                                    </div>
29936                                </template>
29937                            </div>
29938                        </template>
29939                    </div>
29940                </div>
29941                    </div>
29942    </div>
29943            
29944                                                <div class="meta py-4 pagebuilder-home-hidden">
29945                <div x-data="initMarketingShortText_46699()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
29946                    <!-- Marketing short text -->
29947                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
29948                    </div>
29949
29950                    <!-- Short description -->
29951                                                                <div class="short-description">
29952                            Die Filmphilosophie ist im Laufe des 20. Jahrhunderts zu einem kleinen, aber etablierten Bereich der Philosophie geworden. Von Hugo M&uuml;nsterberg (1916), Rudolf Arnheim, Rudolf Harms und Siegfried ...                            <a href="https://meiner.de/fmv_de/von-sa-a-en-la-gen-und-bilderlosen-bildern-17982" class="underline">mehr</a>
29953                        </div>
29954                                    </div>
29955
29956                <!-- Series  -->
29957                                    <div class="mb-1">
29958                        <span class="sr-only">Reihe:</span>
29959                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
29960                            <span>Blaue Reihe</span>
29961                        </a>
29962                                            </div>
29963                
29964                
29965                                                    <div class="mb-1">
29966                        <span x-data="initEditionText_46699()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
29967                            <!-- Marketing short text -->
29968                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 208 Seiten.                        </span>
29969                    </div>
29970                
29971                            </div>
29972            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
29973                
29974                <div class="justify-end" x-data="initPriceBox()" @update-prices-46699.window="updatePrice($event.detail);">
29975                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="46699" data-price-box="product-id-46699"><span class="normal-price">
29976    <span x-data x-id="['product\u002Dprice\u002D46699']" class="price-container price-final_price tax weee">
29977            <span class="price-label">Ab</span>
29978                <span class="approx-price">ca. </span>
29979        <span :id="$id('product\u002Dprice\u002D46699')" data-price-amount="19.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">19,99&nbsp;&euro;</span></span>
29980        </span>
29981</span>
29982
29983
29984</div>                </div>
29985
29986                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
29987                                            <div class="open-access-container open-access-container-46699                    flex mt-4 ml-auto sm:mt-0 hidden">
29988                            <div class="text-gray-700">
29989                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
29990                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
29991                                        Kostenlos online lesen                                    </a>
29992                                </button>
29993                            </div>
29994                        </div>
29995                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Von s&uuml;&szlig;en L&uuml;gen und bilderlosen Bildern" aria-label="In den Warenkorb Von s&uuml;&szlig;en L&uuml;gen und bilderlosen Bildern" data-addto="cart">
29996                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
29997  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
299970 014 0z"></path>
29998</svg>
29999                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
30000                                        In den Warenkorb                                    </span>
30001                                </button>
30002                                                                                                                    
30003<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(46699)" aria-label="Zur Wunschliste hinzuf&uuml;gen Von s&uuml;&szlig;en L&uuml;gen und bilderlosen Bildern" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
30004    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
30005  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
30006</svg>
30007</button>
30008                                    </div>
30009            </div>
30010        </div>
30011        
30011<script>
30012            function initMarketingShortText_46699() {
30013                var marketingShortTextConfig = {};
30014                if (typeof window.initConfigurableSwatchOptions_46699 === "function") {
30015                    var fullConfig = window.initConfigurableSwatchOptions_46699().optionConfig
30016                    var marketingShortTextConfig = fullConfig.marketing_short_text;
30017                }
30018                return {
30019                    marketingShortText: '',
30020                    config: marketingShortTextConfig,
30021                    productId: '46699',
30022                    getMarketingShortText(detail) {
30023                        this.marketingShortText = detail.productIndex ?
30024                            this.config[detail.productIndex] :
30025                            null;
30026                    },
30027                    eventListeners: {
30028                        ['@listing-configurable-selection-changed.window'](event) {
30029                            if (this.productId == event.detail.productId) {
30030                                this.getMarketingShortText(event.detail);
30031                            }
30032
30033                        }
30034                    }
30035                }
30036            }
30037
30038            function initEditionText_46699() {
30039                var editionTextConfig = {};
30040                if (typeof window.initConfigurableSwatchOptions_46699 === "function") {
30041                    var fullConfig = window.initConfigurableSwatchOptions_46699().optionConfig
30042                    var editionTextConfig = fullConfig.edition;
30043                }
30044                return {
30045                    editionText: '',
30046                    config: editionTextConfig,
30047                    productId: '46699',
30048                    getEditionText(detail) {
30049                        this.editionText = detail.productIndex ?
30050                            this.config[detail.productIndex] :
30051                            null;
30052                    },
30053                    eventListeners: {
30054                        ['@listing-configurable-selection-changed.window'](event) {
30055                            if (this.productId == event.detail.productId) {
30056                                this.getEditionText(event.detail);
30057                            }
30058
30059                        }
30060                    }
30061                }
30062            }
30063        </script>
30063
30064                    </form>
30065                            
30066    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/47158/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21427">
30067        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="47158">
30068                                    <a href="https://meiner.de/fmv_de/rousseau-21427" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
30069            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-47158.window="$el.src = $event.detail" alt="Rousseau" title="Rousseau" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351299_1.jpg" :style="{
30070                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
30071                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
30072            }">
30073                    </a>
30074        <div class="product-info flex flex-col flex-grow ">
30075                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
30076                                    <div class="mb-2 text-sm text-gray-500 font-medium">
30077                                                                                    <a href="https://meiner.de/fmv_de/person/Skadi-Siiri-Krause-21426/" class="mb-2">
30078                                    Skadi Siiri Krause                                                                    </a>
30079                                                                                                                                    </div>
30080                                <a class="product-item-link" href="https://meiner.de/fmv_de/rousseau-21427">
30081                    Rousseau                </a>
30082                            </div>
30083
30084            <div x-data="initEditionText_47158()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
30085                <!-- Marketing short text -->
30086                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
30087                </div>
30088            </div>
30089
30090                            <div class="py-1 grid  mb-4 ">
30091                    
30092                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":47158,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":47158,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46503":"1","47114":"1","47115":"1"},"childProductsAlertStatus":{"46503":"0","47114":"0","47115":"0"},"indexMapping":{"163:15":46503,"163:8":47114,"163:9":47115},"availabilityMessages":{"46503":"Lieferbar innerhalb von 3-5 Tagen","47114":"Download sofort  verf\u00fcgbar","47115":"Download sofort  verf\u00fcgbar"},"openAccess":{"47158":{"status":0},"46503":{"status":0},"47114":{"status":0},"47115":{"status":0}}},"availabilityMessages":{"46503":"Lieferbar innerhalb von 3-5 Tagen","47114":"Download sofort  verf\u00fcgbar","47115":"Download sofort  verf\u00fcgbar"},"openAccess":{"47158":{"status":0},"46503":{"status":0},"47114":{"status":0},"47115":{"status":0}}}'>
30093        <template x-if="containerVisible">
30094                            <!-- Popup Trigger -->
30095                <div>
30096                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
30097                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
30098                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
30099  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
30100<title>bell</title></svg>
30101</span>
30102                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
30103
30104                    <!-- Popup Modal -->
30105                    <template x-if="showModal">
30106                        <template x-teleport=".page-wrapper">
30107                            <div x-cloak class="fixed inset-0 flex items-center justify-center
30108                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
30109                                <div class="relative bg-white rounded-lg shadow-xl
30110                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
30111                                    <div class="p-6">
30112                                        <!-- Subscription Form for Popup -->
30113                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
30114                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
30115                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
30116                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
30117
30118                                            <div class="flex flex-col gap-3">
30119                                                <div class="flex-grow grow">
30120                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
30121                                                        shadow-xs focus:outline-none focus:outline-hidden
30122                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
30123                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
30124                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
30125                                                </div>
30126                                                <input type="hidden" name="product_id" :value="currentProductId">
30127                                                <input type="hidden" name="type" value="email">
30128
30129                                                
30130                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
30131
30132                                                <div class="amxnotif_guest_action">
30133                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
30134                                                        rounded-md focus:outline-none
30135                                                        focus:outline-hidden focus:ring-2
30136                                                        focus:ring-offset-2 disabled:opacity-50
30137                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
30138                                                        Benachrichtigen                                                    </button>
30139                                                </div>
30140                                            </div>
30141
30142                                                                                            <div class="flex items-start pt-2">
30143                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
30144                                                        text-blue-600 border-gray-300 rounded-sm">
30145                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
30146                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
30147                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
30148                                                </div>
30149                                                                                    </form>
30150                                    </div>
30151
30152                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
30153                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
30154                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
30155  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
30156<title>x</title></svg>
30157                                    </button>
30158                                </div>
30159                            </div>
30160                        </template>
30161                    </template>
30162                </div>
30163                    </template>
30164    </div>
30165
30166<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_47158" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":47158,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46503":"1","47114":"1","47115":"1"},"childProductsAlertStatus":{"46503":"0","47114":"0","47115":"0"},"indexMapping":"{\u0022163:15\u0022:46503,\u0022163:8\u0022:47114,\u0022163:9\u0022:47115}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":47158,"availabilityMessages":{"46503":"Lieferbar innerhalb von 3-5 Tagen","47114":"Download sofort  verf\u00fcgbar","47115":"Download sofort  verf\u00fcgbar"},"openAccess":{"47158":{"status":0},"46503":{"status":0},"47114":{"status":0},"47115":{"status":0}}}'>
30167    
30168    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
30169        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
30170        <span x-html="optionsLabelText"></span>
30171    </p>
30172</div>                </div>
30173            
30174                                
30174<script>
30175        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
30176            try {
30177                const attributes = (config && config.attributes) ? config.attributes : null;
30178                if (!attributes) return [];
30179                let attr = null;
30180                if (Array.isArray(attributes)) {
30181                    for (let i = 0; i < attributes.length; i++) {
30182                        const a = attributes[i];
30183                        if (a && a.id == attrId) {
30184                            attr = a;
30185                            break;
30186                        }
30187                    }
30188                } else {
30189                    attr = attributes[attrId];
30190                }
30191                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
30192            } catch (e) {
30193                return [];
30194            }
30195        };
30196
30197        function initConfigurableSwatchOptions_47158() {
30198            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46503"]},{"id":"8","label":"PDF","products":["47114"]},{"id":"9","label":"EPUB","products":["47115"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46503":{"baseOldPrice":{"amount":32.616821429907},"oldPrice":{"amount":34.9},"basePrice":{"amount":32.616821429907},"finalPrice":{"amount":34.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47114":{"baseOldPrice":{"amount":24.289718626168},"oldPrice":{"amount":25.99},"basePrice":{"amount":24.289718626168},"finalPrice":{"amount":25.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47115":{"baseOldPrice":{"amount":24.289718626168},"oldPrice":{"amount":25.99},"basePrice":{"amount":24.289718626168},"finalPrice":{"amount":25.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":24.289718626168},"oldPrice":{"amount":25.99},"basePrice":{"amount":21.840335134454},"finalPrice":{"amount":25.99},"isApproxPrice":null},"productId":"47158","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46503":{"163":"15"},"47114":{"163":"8"},"47115":{"163":"9"}},"salable":{"163":{"15":["46503"],"8":["47114"],"9":["47115"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"46503":"005127","47114":"005128","47115":"005129"},"output":{"46503":"Kartoniert","47114":"PDF","47115":"EPUB"},"original_name":{"46503":"","47114":"","47115":""},"openaccess_license_link":{"46503":"","47114":"","47115":""},"openaccess_license_name":{"46503":"","47114":"","47115":""},"openaccess_external_link":{"46503":"","47114":"","47115":""},"gpsr_safety_info":{"46503":"","47114":"","47115":""},"description":{"46503":"Jean-Jacques Rousseau war einer der bedeutendsten Schriftsteller im Zeitalter der Aufkl\u00e4rung. Zugleich war er derjenige, der die selbsternannten \u00bbphilosophes\u00ab am grundlegendsten kritisierte, da er dem individuell-menschlichen Aufkl\u00e4rungsprogramm die Forderung nach politischer Emanzipation der B\u00fcrger entgegenstellte. Dadurch wurde er auch zu einem scharfen Kritiker der Naturrechtstheorien, deren wichtigste Grundannahmen \u2013 die Gleichheit und Freiheit der B\u00fcrger sowie die vermeintliche K\u00fcnstlichkeit des Staates und seiner Grundgesetze \u2013 er jedoch \u00fcbernahm.<br\/><br\/>Doch Rousseau rechtfertigte weder die Monarchie noch eine feudale Gesellschaftsordnung, wie es seine Vorg\u00e4nger und Zeitgenossen taten. Er kritisierte sogar den von den \u00d6konomen seiner Zeit verteidigten Eigentumsbegriff, der die Interessen gro\u00dfer Landbesitzer und H\u00e4ndler \u00fcber die des Staates stellte. Welche Ziele aber verfolgte Rousseau mit seiner Kritik? Dieser Frage geht der vorliegende Band nach, indem er den Autor in die Diskurse seiner Zeit einordnet und insbesondere auch dessen Rolle in den politischen Debatten seiner Heimatstadt Genf eingehend er\u00f6rtert.<br\/><br\/>Der Band bietet dar\u00fcber hinaus eine Einf\u00fchrung in Rousseaus Schriften im Kontext zeitgen\u00f6ssischer Auseinandersetzungen.","47114":"Jean-Jacques Rousseau war einer der bedeutendsten Schriftsteller im Zeitalter der Aufkl\u00e4rung. Zugleich war er derjenige, der die selbsternannten \u00bbphilosophes\u00ab am grundlegendsten kritisierte, da er dem individuell-menschlichen Aufkl\u00e4rungsprogramm die Forderung nach politischer Emanzipation der B\u00fcrger entgegenstellte. Dadurch wurde er auch zu einem scharfen Kritiker der Naturrechtstheorien, deren wichtigste Grundannahmen \u2013 die Gleichheit und Freiheit der B\u00fcrger sowie die vermeintliche K\u00fcnstlichkeit des Staates und seiner Grundgesetze \u2013 er jedoch \u00fcbernahm.<br\/><br\/>Doch Rousseau rechtfertigte weder die Monarchie noch eine feudale Gesellschaftsordnung, wie es seine Vorg\u00e4nger und Zeitgenossen taten. Er kritisierte sogar den von den \u00d6konomen seiner Zeit verteidigten Eigentumsbegriff, der die Interessen gro\u00dfer Landbesitzer und H\u00e4ndler \u
3019800fcber die des Staates stellte. Welche Ziele aber verfolgte Rousseau mit seiner Kritik? Dieser Frage geht der vorliegende Band nach, indem er den Autor in die Diskurse seiner Zeit einordnet und insbesondere auch dessen Rolle in den politischen Debatten seiner Heimatstadt Genf eingehend er\u00f6rtert.<br\/><br\/>Der Band bietet dar\u00fcber hinaus eine Einf\u00fchrung in Rousseaus Schriften im Kontext zeitgen\u00f6ssischer Auseinandersetzungen.","47115":"Jean-Jacques Rousseau war einer der bedeutendsten Schriftsteller im Zeitalter der Aufkl\u00e4rung. Zugleich war er derjenige, der die selbsternannten \u00bbphilosophes\u00ab am grundlegendsten kritisierte, da er dem individuell-menschlichen Aufkl\u00e4rungsprogramm die Forderung nach politischer Emanzipation der B\u00fcrger entgegenstellte. Dadurch wurde er auch zu einem scharfen Kritiker der Naturrechtstheorien, deren wichtigste Grundannahmen \u2013 die Gleichheit und Freiheit der B\u00fcrger sowie die vermeintliche K\u00fcnstlichkeit des Staates und seiner Grundgesetze \u2013 er jedoch \u00fcbernahm.<br\/><br\/>Doch Rousseau rechtfertigte weder die Monarchie noch eine feudale Gesellschaftsordnung, wie es seine Vorg\u00e4nger und Zeitgenossen taten. Er kritisierte sogar den von den \u00d6konomen seiner Zeit verteidigten Eigentumsbegriff, der die Interessen gro\u00dfer Landbesitzer und H\u00e4ndler \u00fcber die des Staates stellte. Welche Ziele aber verfolgte Rousseau mit seiner Kritik? Dieser Frage geht der vorliegende Band nach, indem er den Autor in die Diskurse seiner Zeit einordnet und insbesondere auch dessen Rolle in den politischen Debatten seiner Heimatstadt Genf eingehend er\u00f6rtert.<br\/><br\/>Der Band bietet dar\u00fcber hinaus eine Einf\u00fchrung in Rousseaus Schriften im Kontext zeitgen\u00f6ssischer Auseinandersetzungen."},"doi":{"46503":"","47114":"10.28937\/978-3-7873-5128-2","47115":""},"isbn":{"46503":"978-3-7873-5127-5","47114":"978-3-7873-5128-2","47115":"978-3-7873-5129-9"},"marketing_short_text":{"46503":"","47114":"","47115":""},"recension_text":{"46503":"","47114":"","47115":""},"language":{"46503":"","47114":"","47115":""},"cover":{"46503":"Kartoniert","47114":"","47115":""},"pages":{"46503":"372 Seiten.","47114":"372 Seiten.","47115":"372 Seiten."},"edition":{"46503":"","47114":"Unver\u00e4ndertes eBook der 1. Auflage von 2026","47115":"Unver\u00e4ndertes EPUB der 1. Auflage von 2026"},"pod":{"46503":"Nein","47114":"Nein","47115":"Nein"},"copyright_year":{"46503":"","47114":"","47115":""},"vlb_tix_link":{"46503":"https:\/\/neu.vlbtix.de\/products\/9783787351275?type=gtin","47114":"","47115":""},"defaultValues":{"163":"15"}};
30199            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
30200
30201            if (typeof window.amxnotif_wrap_attributes === 'function') {
30202                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
30203                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
30204            }
30205
30206            const configurableOptionsComponent = initConfigurableOptions(
30207                '47158',
30208                config
30209            );
30210            const swatchOptionsComponent = initSwatchOptions(
30211                swatchConfig
30212            );
30213
30214            // DWS - Configurable product preselect start
30215            const confProdPreSelect = () => {
30216                return {
30217                    preselectQuerystringItems() {
30218                        var data = {"id":"46503","output":"15"};
30219                        const urlQueryParams = new URLSearchParams(window.location.search);
30220
30221                                                this.$nextTick(() => {
30222                            setTimeout(() => {
30223                                const rootEl = this.$root || this.$el;
30224                                if (!rootEl) return;
30225
30226                                const applySelection = (attrCode, attrValue) => {
30227                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
30228
30229                                    const attributes = Object.values(this.optionConfig.attributes || {});
30230                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
30231
30232                                    if (targetAttr) {
30233                                        const attrId = String(targetAttr.id);
30234                                        const optionVal = String(attrValue);
30235
30236                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
30237
30238                                        if (inputEl) {
30239                                                                                        inputEl.click();
30240                                            inputEl.dispatchEvent(new Event('change', {
30241                                                bubbles: true
30242                                            }));
30243                                        } else {
30244                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
30245                                            if (selectEl) {
30246                                                selectEl.value = optionVal;
30247                                                selectEl.dispatchEvent(new Event('change', {
30248                                                    bubbles: true
30249                                                }));
30250                                            }
30251                                        }
30252
30253                                                                                this.changeOption(attrId, optionVal, false);
30254                                    }
30255                                };
30256
30257                                                                if (data && typeof data === 'object') {
30258                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
30259                                }
30260
30261                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
30262                                    if (attribute && attribute.code) {
30263                                        let optionValue = urlQueryParams.get(attribute.code);
30264                                        if (optionValue) {
30265                                            let optionId = false;
30266                                            const attributes = Object.values(this.optionConfig.attributes || {});
30267                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
30268
30269                                            let found = false;
30270                                            Object.values(targetAttr.options).map(option => {
30271                                                if (found === false && option.label === optionValue) {
30272                                                    optionId = option.id;
30273                                                    found = true;
30274                                                }
30275                                            });
30276
30277                                            const attrId = String(targetAttr.id);
30278                                            let optionVal = String(optionValue);
30279                                            if (found) {
30280                                                optionVal = String(optionId);
30281                                            }
30282
30283                                            applySelection(attribute.code, optionVal);
30284                                        }
30285                                    }
30286                                });
30287                            }, 100);
30288                        });
30289                    }
30290                }
30291            };
30292            // DWS - Configurable product preselect end
30293
30294            const result = Object.assign(
30295                configurableOptionsComponent,
30296                swatchOptionsComponent, {
30297                    productId: '47158',
30298                    productIndex: 0,
30299                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
30300                    showSwatches: false,
30301                    precalcOptions: {},
30302                    originalInit: configurableOptionsComponent.init,
30303                    init() {
30304                        try {
30305                            this.precalcOptions = {};
30306                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
30307                            this.preselectQuerystringItems();
30308                            if (Array.isArray(attrSource)) {
30309                                attrSource.forEach(attr => {
30310                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
30311                                });
30312                            } else if (attrSource && typeof attrSource === 'object') {
30313                                Object.keys(attrSource).forEach(id => {
30314                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
30315                                });
30316                            }
30317                        } catch (e) {
30318                            console.error('Pre-calc error:', e);
30319                        }
30320
30321                        if (typeof this.originalInit === 'function') {
30322                            this.originalInit();
30323                        }
30324
30325                        try {
30326                            this.initShowSwatchesIntersect();
30327                        } catch (e) {
30328                            console.error('intersect error:', e);
30329                        }
30330                    },
30331
30332                    updateGallery() {
30333                        if (!this.productIndex) return;
30334
30335                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
30336                                method: 'GET',
30337                                headers: {
30338                                    'Content-Type': 'application/json',
30339                                    'X-Requested-With': 'XMLHttpRequest'
30340                                }
30341                            })
30342                            .then(response => response.json())
30343                            .then(data => {
30344                                if (data && data.medium) {
30345                                    window.dispatchEvent(new CustomEvent("update-gallery-471
3034558", {
30346                                        detail: data.medium
30347                                    }));
30348                                }
30349                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
30350                    },
30351
30352
30353                    initShowSwatchesIntersect() {
30354                        const observer = new IntersectionObserver(entries => {
30355                            if (entries[0].isIntersecting) {
30356                                this.showSwatches = true;
30357                                observer.disconnect();
30358                            }
30359                        }, {
30360                            rootMargin: '512px'
30361                        });
30362                        observer.observe(this.$el);
30363                    },
30364                    getOptions(attrId) {
30365                        return this.precalcOptions[attrId] || [];
30366                    },
30367                    getOptionsByAttrId() {
30368                        return this.getOptions(this.$el.dataset.attributeId);
30369                    },
30370                    _getItemId() {
30371                        if (this.item && this.item.id) return this.item.id;
30372                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
30373                    },
30374                    getSwatchOptionHtmlId() {
30375                        const itemId = this._getItemId();
30376                        return itemId ? this.$id(`attribute-option-47158-${itemId}`) : '';
30377                    },
30378                    getSwatchOptionHtmlIdGroup() {
30379                        const itemId = this._getItemId();
30380                        return itemId ? [`attribute-option-47158-${itemId}`] : [];
30381                    },
30382                    getAttributeSwatchData(attributeId) {
30383                        const data = Object.assign({}, this.swatchConfig[attributeId]);
30384                        if (data['additional_data']) {
30385                            try {
30386                                data['details'] = JSON.parse(data['additional_data']);
30387                            } catch (e) {
30388                                data['details'] = {};
30389                            }
30390                        }
30391                        return data;
30392                    },
30393                    getSwatchType(attributeId, optionId) {
30394                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
30395                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
30396                        }
30397                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
30398                            this.swatchConfig[attributeId].details.swatch_input_type :
30399                            "empty";
30400                        if (type === 'visual') {
30401                            const config = this.swatchConfig[attributeId];
30402                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
30403                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
30404                            }
30405                            // Fallback to first option type
30406                            for (const oId in config) {
30407                                if (config[oId] && typeof config[oId].type !== 'undefined') {
30408                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
30409                                }
30410                            }
30411                        }
30412                        return type;
30413                    },
30414                    mapSwatchTypeNumberToTypeCode(type) {
30415                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
30416                    },
30417                    isTextSwatch() {
30418                        const itemId = this._getItemId();
30419                        if (!this.$el || !itemId) return false;
30420                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
30421                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
30422                    },
30423
30424                    getSwatchText() {
30425                        const itemId = this._getItemId();
30426                        if (this.item) return this.item.label || '';
30427                        if (!this.$el || !itemId) return '';
30428                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
30429                        const options = attrId ? this.getOptions(attrId) : [];
30430                        const opt = options.find(o => o.id == itemId);
30431                        return opt ? opt.label : '';
30432                    },
30433                    getSwatchBackgroundStyle() {
30434                        const itemId = this._getItemId();
30435                        if (!this.$el || !itemId) return '';
30436                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
30437                        if (!attrId) return '';
30438                        const type = this.getSwatchType(attrId, itemId);
30439                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
30440                            this.swatchConfig[attrId][itemId] :
30441                            null;
30442                        if (!swatchData) return '';
30443                        if (type === "color") return 'background-color:' + swatchData.value;
30444                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
30445                        return '';
30446                    },
30447                    swatchOptionClasses() {
30448                        const itemId = this._getItemId();
30449                        if (!this.$el || !itemId) return {};
30450                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
30451                        return {
30452                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
30453                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
30454                            'w-6 h-6': !this.isTextSwatch()
30455                        }
30456                    },
30457
30458                    onFocusSwatchItem() {
30459                        const itemId = this._getItemId();
30460                        if (itemId) this.focusedLabel = itemId;
30461                    },
30462                    onChangeOption() {
30463                        const itemId = this._getItemId();
30464                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
30465                        if (attrId && itemId) this.changeOption(attrId, itemId);
30466                    },
30467                    changeOption(attributeId, value) {
30468                        if (value === '') {
30469                            return;
30470                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
30471                        } else {
30472                            this.selectedValues[attributeId] = value;
30473                        }
30474
30475                        this.findSimpleIndex();
30476                        this.findAllowedAttributeOptions();
30477                        this.updatePrices();
30478                        this.updateGallery();
30479
30480                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
30481                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
30482
30483                        const eventDetail = {
30484                            productId: this.productId,
30485                            optionId: attributeId,
30486                            value: value,
30487                            productIndex: this.productIndex || 0,
30488                            selectedValues: this.selectedValues,
30489                            candidates: candidates,
30490                            sourceElement: this.$el
30491                        };
30492
30493                        // Dispatch for Amasty
30494                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
30495                            detail: eventDetail
30496                        }));
30497
30498                        // Dispatch for Hyva listing
30499                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
30500                            detail: eventDetail
30501                        }));
30502                    },
30503
30504
30505                    clearOptionIfActive() {
30506                        const itemId = this._getItemId();
30507                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
30508                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
30509                            this.changeOption(attrId, '');
30510
30511                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
30512                            if (!input && this.$el?.querySelector) {
30513                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
30514                            }
30515                            if (!input && this.$el?.closest) {
30516                                const root = this.$el.closest('[data-product-id]') || this.$el;
30517                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
30518                            }
30519                            if (input) {
30520                                input.checked = false;
30521                            }
30522                        }
30523                    },
30524                    get optionIsEnabled() {
30525                        const itemId = this._getItemId();
30526                        if (!this.$el || !itemId) return true;
30527                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
30528                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
30529                        return !!allowedOptions.find(opt => opt.id == itemId);
30530                    },
30531                    get isSelected() {
30532                        const itemId = this._getItemId();
30533                        if (!this.$el || !itemId) return false;
30534                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
30535                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
30536                    },
30537                    get isSwatchRequired() {
30538                        if (!this.$el) return false;
30539                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
30540                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
30541                    },
30542                    focusedLabel: false,
30543                    activeTooltipItem: false,
30544                    tooltipPositionElement: false,
30545                    setActiveTooltipItem() {
30546                        const itemId = this._getItemId();
30547                        if (!this.$el || !itemId) return;
30548                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
30549                        this.activeTooltipItem = {
30550                            attribute: attrId,
30551                            item: itemId,
30552                            index: 0
30553                        };
30554                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
30555                    },
30556                    unsetActiveTooltipItem() {
30557                        this.activeTooltipItem = false;
30558                    }
30559                },
30560                confProdPreSelect()
30561            );
30562
30563            if (result.optionConfig && result.optionConfig.attributes) {
30564                const attributes = result.optionConfig.attributes;
30565                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
30566                    let source = attributes;
30567                    if (Array.isArray(attributes)) {
30568                        source = {};
30569                        attributes.forEach(attr => {
30570                            if (attr && attr.id) source[attr.id] = attr;
30571                        });
30572                    }
30573                    const values = Object.values(source);
30574                    const wrapper = Object.assign(values, source);
30575                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
30576                        value: true,
30577                        enumerable: false
30578                    });
30579                    result.optionConfig.attributes = wrapper;
30580                }
30581            }
30582
30583            return result;
30584        }
30585
30586        window.addEventListener('alpine:init', () => {
30587            Alpine.data('initConfigurableSwatchOptions_47158', initConfigurableSwatchOptions_47158);
30588        }, {
30589            once: true
30590        });
30591    </script>
30591
30592    
30593    <div x-data="initConfigurableSwatchOptions_47158" x-defer="intersect">
30594        <div class="pagebuilder-home-hidden">
30595                                            
30596                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
30597                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
30598                        <template x-if="showSwatches">
30599                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-47158-163" role="radiogroup" aria-label="Einband">
30600                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
30601                                    <div :data-option-id="item.id" style="display: contents">
30602                                        <div x-id="getSwatchOptionHtmlIdGroup">
30603    <template x-if="optionIsEnabled">
30604        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
30604self="unsetActiveTooltipItem">
30605            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-47158-163">
30606            <div>
30607                <template x-if="isTextSwatch">
30608                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
30609                </template>
30610                <template x-if="!optionIsActive(163, item.id)">
30611                    <div>
30612                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
30613                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
30614                        </svg>
30615                    </div>
30616                </template>
30617            </div>
30618        </label>
30619    </template>
30620</div>                                    </div>
30621                                </template>
30622                            </div>
30623                        </template>
30624                    </div>
30625                </div>
30626                    </div>
30627    </div>
30628            
30629                                                <div class="meta py-4 pagebuilder-home-hidden">
30630                <div x-data="initMarketingShortText_47158()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
30631                    <!-- Marketing short text -->
30632                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
30633                    </div>
30634
30635                    <!-- Short description -->
30636                                                                <div class="short-description">
30637                            Jean-Jacques Rousseau war einer der bedeutendsten Schriftsteller im Zeitalter der Aufkl&auml;rung. Zugleich war er derjenige, der die selbsternannten &raquo;philosophes&laquo; am grundlegendsten kritisierte, da ...                            <a href="https://meiner.de/fmv_de/rousseau-21427" class="underline">mehr</a>
30638                        </div>
30639                                    </div>
30640
30641                <!-- Series  -->
30642                                    <div class="mb-1">
30643                        <span class="sr-only">Reihe:</span>
30644                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
30645                            <span>Blaue Reihe</span>
30646                        </a>
30647                                            </div>
30648                
30649                
30650                                                    <div class="mb-1">
30651                        <span x-data="initEditionText_47158()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
30652                            <!-- Marketing short text -->
30653                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 372 Seiten.                        </span>
30654                    </div>
30655                
30656                            </div>
30657            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
30658                
30659                <div class="justify-end" x-data="initPriceBox()" @update-prices-47158.window="updatePrice($event.detail);">
30660                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="47158" data-price-box="product-id-47158"><span class="normal-price">
30661    <span x-data x-id="['product\u002Dprice\u002D47158']" class="price-container price-final_price tax weee">
30662            <span class="price-label">Ab</span>
30663                <span class="approx-price">ca. </span>
30664        <span :id="$id('product\u002Dprice\u002D47158')" data-price-amount="25.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">25,99&nbsp;&euro;</span></span>
30665        </span>
30666</span>
30667
30668
30669</div>                </div>
30670
30671                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
30672                                            <div class="open-access-container open-access-container-47158                    flex mt-4 ml-auto sm:mt-0 hidden">
30673                            <div class="text-gray-700">
30674                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
30675                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
30676                                        Kostenlos online lesen                                    </a>
30677                                </button>
30678                            </div>
30679                        </div>
30680                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Rousseau" aria-label="In den Warenkorb Rousseau" data-addto="cart">
30681                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
30682  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
306820 014 0z"></path>
30683</svg>
30684                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
30685                                        In den Warenkorb                                    </span>
30686                                </button>
30687                                                                                                                    
30688<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(47158)" aria-label="Zur Wunschliste hinzuf&uuml;gen Rousseau" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
30689    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
30690  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
30691</svg>
30692</button>
30693                                    </div>
30694            </div>
30695        </div>
30696        
30696<script>
30697            function initMarketingShortText_47158() {
30698                var marketingShortTextConfig = {};
30699                if (typeof window.initConfigurableSwatchOptions_47158 === "function") {
30700                    var fullConfig = window.initConfigurableSwatchOptions_47158().optionConfig
30701                    var marketingShortTextConfig = fullConfig.marketing_short_text;
30702                }
30703                return {
30704                    marketingShortText: '',
30705                    config: marketingShortTextConfig,
30706                    productId: '47158',
30707                    getMarketingShortText(detail) {
30708                        this.marketingShortText = detail.productIndex ?
30709                            this.config[detail.productIndex] :
30710                            null;
30711                    },
30712                    eventListeners: {
30713                        ['@listing-configurable-selection-changed.window'](event) {
30714                            if (this.productId == event.detail.productId) {
30715                                this.getMarketingShortText(event.detail);
30716                            }
30717
30718                        }
30719                    }
30720                }
30721            }
30722
30723            function initEditionText_47158() {
30724                var editionTextConfig = {};
30725                if (typeof window.initConfigurableSwatchOptions_47158 === "function") {
30726                    var fullConfig = window.initConfigurableSwatchOptions_47158().optionConfig
30727                    var editionTextConfig = fullConfig.edition;
30728                }
30729                return {
30730                    editionText: '',
30731                    config: editionTextConfig,
30732                    productId: '47158',
30733                    getEditionText(detail) {
30734                        this.editionText = detail.productIndex ?
30735                            this.config[detail.productIndex] :
30736                            null;
30737                    },
30738                    eventListeners: {
30739                        ['@listing-configurable-selection-changed.window'](event) {
30740                            if (this.productId == event.detail.productId) {
30741                                this.getEditionText(event.detail);
30742                            }
30743
30744                        }
30745                    }
30746                }
30747            }
30748        </script>
30748
30749                    </form>
30750                            
30751    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/47111/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21363">
30752        <input name="form_key" type="hidden" value="R6NBsKL42phFmgWc">        <input type="hidden" name="product" value="47111">
30753                                    <a href="https://meiner.de/fmv_de/a-ber-die-gefahr-21363" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
30754            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-47111.window="$el.src = $event.detail" alt="&Uuml;ber die Gefahr" title="&Uuml;ber die Gefahr" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787350988_1.jpg" :style="{
30755                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
30756                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
30757            }">
30758                    </a>
30759        <div class="product-info flex flex-col flex-grow ">
30760                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
30761                                    <div class="mb-2 text-sm text-gray-500 font-medium">
30762                                                                                    <a href="https://meiner.de/fmv_de/person/Heiko-Christians-3418/" class="mb-2">
30763                                    Heiko Christians                                                                    </a>
30764                                                                                                                                    </div>
30765                                <a class="product-item-link" href="https://meiner.de/fmv_de/a-ber-die-gefahr-21363">
30766                    &Uuml;ber die Gefahr                </a>
30767                            </div>
30768
30769            <div x-data="initEditionText_47111()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
30770                <!-- Marketing short text -->
30771                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
30772                </div>
30773            </div>
30774
30775                            <div class="py-1 grid  mb-4 ">
30776                    
30777                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":47111,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":47111,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2Rl","childProducts":{"46919":"1","47093":"1","47218":"1"},"childProductsAlertStatus":{"46919":"0","47093":"0","47218":"0"},"indexMapping":{"163:15":46919,"163:8":47093,"163:9":47218},"availabilityMessages":{"46919":"Lieferbar innerhalb von 3-5 Tagen","47093":"Download sofort  verf\u00fcgbar","47218":"Download sofort  verf\u00fcgbar"},"openAccess":{"47111":{"status":0},"46919":{"status":0},"47093":{"status":0},"47218":{"status":0}}},"availabilityMessages":{"46919":"Lieferbar innerhalb von 3-5 Tagen","47093":"Download sofort  verf\u00fcgbar","47218":"Download sofort  verf\u00fcgbar"},"openAccess":{"47111":{"status":0},"46919":{"status":0},"47093":{"status":0},"47218":{"status":0}}}'>
30778        <template x-if="containerVisible">
30779                            <!-- Popup Trigger -->
30780                <div>
30781                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
30782                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
30783                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
30784  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
30785<title>bell</title></svg>
30786</span>
30787                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
30788
30789                    <!-- Popup Modal -->
30790                    <template x-if="showModal">
30791                        <template x-teleport=".page-wrapper">
30792                            <div x-cloak class="fixed inset-0 flex items-center justify-center
30793                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
30794                                <div class="relative bg-white rounded-lg shadow-xl
30795                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
30796                                    <div class="p-6">
30797                                        <!-- Subscription Form for Popup -->
30798                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
30799                                            <input name="form_key" type="hidden" value="R6NBsKL42phFmgWc">
30800                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
30801                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
30802
30803                                            <div class="flex flex-col gap-3">
30804                                                <div class="flex-grow grow">
30805                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
30806                                                        shadow-xs focus:outline-none focus:outline-hidden
30807                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
30808                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
30809                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
30810                                                </div>
30811                                                <input type="hidden" name="product_id" :value="currentProductId">
30812                                                <input type="hidden" name="type" value="email">
30813
30814                                                
30815                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvZm12X2Rl">
30816
30817                                                <div class="amxnotif_guest_action">
30818                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
30819                                                        rounded-md focus:outline-none
30820                                                        focus:outline-hidden focus:ring-2
30821                                                        focus:ring-offset-2 disabled:opacity-50
30822                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
30823                                                        Benachrichtigen                                                    </button>
30824                                                </div>
30825                                            </div>
30826
30827                                                                                            <div class="flex items-start pt-2">
30828                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
30829                                                        text-blue-600 border-gray-300 rounded-sm">
30830                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
30831                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
30832                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
30833                                                </div>
30834                                                                                    </form>
30835                                    </div>
30836
30837                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
30838                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
30839                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
30840  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
30841<title>x</title></svg>
30842                                    </button>
30843                                </div>
30844                            </div>
30845                        </template>
30846                    </template>
30847                </div>
30848                    </template>
30849    </div>
30850
30851<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_47111" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":47111,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2Rl","childProducts":{"46919":"1","47093":"1","47218":"1"},"childProductsAlertStatus":{"46919":"0","47093":"0","47218":"0"},"indexMapping":"{\u0022163:15\u0022:46919,\u0022163:8\u0022:47093,\u0022163:9\u0022:47218}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":47111,"availabilityMessages":{"46919":"Lieferbar innerhalb von 3-5 Tagen","47093":"Download sofort  verf\u00fcgbar","47218":"Download sofort  verf\u00fcgbar"},"openAccess":{"47111":{"status":0},"46919":{"status":0},"47093":{"status":0},"47218":{"status":0}}}'>
30852    
30853    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
30854        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
30855        <span x-html="optionsLabelText"></span>
30856    </p>
30857</div>                </div>
30858            
30859                                
30859<script>
30860        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
30861            try {
30862                const attributes = (config && config.attributes) ? config.attributes : null;
30863                if (!attributes) return [];
30864                let attr = null;
30865                if (Array.isArray(attributes)) {
30866                    for (let i = 0; i < attributes.length; i++) {
30867                        const a = attributes[i];
30868                        if (a && a.id == attrId) {
30869                            attr = a;
30870                            break;
30871                        }
30872                    }
30873                } else {
30874                    attr = attributes[attrId];
30875                }
30876                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
30877            } catch (e) {
30878                return [];
30879            }
30880        };
30881
30882        function initConfigurableSwatchOptions_47111() {
30883            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46919"]},{"id":"8","label":"PDF","products":["47093"]},{"id":"9","label":"EPUB","products":["47218"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46919":{"baseOldPrice":{"amount":18.598129841121},"oldPrice":{"amount":19.9},"basePrice":{"amount":18.598129841121},"finalPrice":{"amount":19.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47093":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":14.009344794393},"finalPrice":{"amount":14.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47218":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":14.009344794393},"finalPrice":{"amount":14.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":12.596637655462},"finalPrice":{"amount":14.99},"isApproxPrice":null},"productId":"47111","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46919":{"163":"15"},"47093":{"163":"8"},"47218":{"163":"9"}},"salable":{"163":{"15":["46919"],"8":["47093"],"9":["47218"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"46919":"005098","47093":"005099","47218":"005100"},"output":{"46919":"Kartoniert","47093":"PDF","47218":"EPUB"},"original_name":{"46919":"","47093":"","47218":""},"openaccess_license_link":{"46919":"","47093":"","47218":""},"openaccess_license_name":{"46919":"","47093":"","47218":""},"openaccess_external_link":{"46919":"","47093":"","47218":""},"gpsr_safety_info":{"46919":"","47093":"","47218":""},"description":{"46919":"Dies ist ein Buch \u00fcber die Gefahr. Tats\u00e4chlich gibt es bis heute kein weiteres. Die Gefahr, das soundsovielte Buch zum Thema zu lesen, besteht also nicht. Bleibt die Frage, ob es dieses eine braucht. Wir leben in Zeiten, in denen die Gefahr wieder Konjunktur hat. Sie tritt ein, sie wird geahnt, taxiert, beschworen. \u2013 Nur erkl\u00e4rt wird sie als historisches, \u00e4sthetisches und semantisches Ph\u00e4nomen bisher nicht. Es gibt hingegen ganze soziologische Bibliotheken \u00fcber das Risiko. Das ist der plausible Komplement\u00e4rbegriff \u2013 solange es um Gewinne und Kalk\u00fcle, solange es um Wirtschaft geht. Die Semantik aber hat sich langsam, aber sicher verschoben \u2013 zugunsten der Gefahr. Die Weltlage legt das nahe bzw. best\u00e4tigt das. Die Gefahr hat eine lange und interessante Geschichte hinter sich, bevor sie die Gegenwart erreicht. Je nach Perspektive. Genau das aber ist bis heute g\u00e4nzlich unbearbeitet. Mit diesem Buch liegt erstmals ein historisch fundiertes, medienwissenschaftlich informiertes, gut lesbares philosophisches Essay zum Thema vor.","47093":"Dies ist ein Buch \u00fcber die Gefahr. Tats\u00e4chlich gibt es bis heute kein weiteres. Die Gefahr, das soundsovielte Buch zum Thema zu lesen, besteht also nicht. Bleibt die Frage, ob es dieses eine braucht. Wir leben in Zeiten, in denen die Gefahr wieder Konjunktur hat. Sie tritt ein, sie wird geahnt, taxiert, beschworen. \u2013 Nur erkl\u00e4rt wird sie als historisches, \u00e4sthetisches und semantisches Ph\u00e4nomen bisher nicht. Es gibt hingegen ganze soziologische Bibliotheken \u00fcber das Risiko. Das ist der plausible Komplement\u00e4rbegriff \u2013 solange es um Gewinne und Kalk\u00fcle, solange es um Wirtschaft geht. Die Semantik aber hat sich langsam, aber sicher verschoben \u2013 zugunsten der Gefahr. Die Weltlage legt das nahe bzw. best\u00e4tigt das. Die Gefahr hat eine lange und interessante Geschichte hinter sich, bevor sie die Gegenwart erreicht. Je nach Perspektive. Genau das aber ist bis heute g\u00e4nzlich unbearbeitet. Mit diesem Buch liegt erstmals ein historisch fundiertes, medienwissenschaftlich informiertes, gut lesbares philosophisches Essay zum Thema vor.","47218":"Dies ist ein Buch \u00fcber die Gefahr. Tats\u00e4chlich gibt es bis heute kein weiteres. Die Gefahr, das soundsovielte Buch zum Thema zu lesen, besteht also nicht. Bleibt die Frage, ob es dieses eine braucht. Wir leben in Zeiten, in denen die Gefahr wieder Konjunktur hat. Sie tritt ein, sie wird geahnt, taxiert, beschworen. \u2013 Nur erkl\u00e4rt wird sie als historisches, \u00e4sthetisches und semantisches Ph\u00e4nomen bisher nicht. Es gibt hingegen ganze soziologische Bibliotheken \u00fcber das Risiko. Das ist der plausible Komplement\u00e4rbegriff \u2013 solange es um Gewinne und Kalk\u00fcle, solange es um Wirtschaft geht. Die Semantik aber hat sich langsam, aber sicher verschoben \u2013 zugunsten der Gefahr. Die Weltlage legt das nahe bzw. best\u00e4tigt das. Die Gefahr hat eine lange und interessante Geschichte hinter sich, bevor sie die Gegenwart erreicht. Je nach Perspektive. Genau das aber ist bis heute g\u00e4nzlich unbearbeitet. Mit diesem Buch liegt erstmals ein historisch fundiertes, medienwissenschaftlich informiertes, gut lesbares philosophisches Essay zum Thema vor."},"doi":{"46919":"","47093":"10.28937\/978-3-7873-5099-5","47218":""},"isbn":{"46919":"978-3-7873-5098-8","47093":"978-3-7873-5099-5","47218":"978-3-7873-5100-8"},"marketing_short_text":{"46919":"","47093":"","47218":""},"recension_text":{"46919":"<div class=\"reviews\">\r\n<div class=\"review\">Christians hat ein kleines B\u00fcchlein mit geballtem Inhalt vorgelegt, das einem fast vergessenen Begleiter des Menschen endlich einen begrifflichen Rahmen geben will.<\/div>\r\n<div class=\"source\">Michael Hesse in der Frankfurter Rundschau vom 29.07.2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Nils Schniederjann bespricht \u00dcber die Gefahr bei Deutschlandfunk Kultur. Besonders hebt er Christians\u2019 ph\u00e4nomenologischen Blick hervor, der weder in \"rei\u00dferische Heldenverehrung\" noch in moralische Verurteilung verf\u00e4llt. Entstanden sei so ein \"gelehrtes, materialreiches Panorama eines Ph\u00e4nomens, das gerade jetzt wieder allgegenw\u00e4rtig scheint\".<\/div>\r\n<div class=\"source\"><a href=\"https:\/\/www.deutschlandfunkkultur.de\/buchkritik-heiko-christians-ueber-die-gefahr-eine-vorsichtige-annaeherung-100.html\"><em>Deutschlandfunk Kultur, Studio 9, 1. Juli 2026<\/em><\/a><\/div>\r\n<\/div>
30883","47093":"<div class=\"reviews\">\r\n<div class=\"review\">Christians hat ein kleines B\u00fcchlein mit geballtem Inhalt vorgelegt, das einem fast vergessenen Begleiter des Menschen endlich einen begrifflichen Rahmen geben will.<\/div>\r\n<div class=\"source\">Michael Hesse in der Frankfurter Rundschau vom 29.07.2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Nils Schniederjann bespricht \u00dcber die Gefahr bei Deutschlandfunk Kultur. Besonders hebt er Christians\u2019 ph\u00e4nomenologischen Blick hervor, der weder in \"rei\u00dferische Heldenverehrung\" noch in moralische Verurteilung verf\u00e4llt. Entstanden sei so ein \"gelehrtes, materialreiches Panorama eines Ph\u00e4nomens, das gerade jetzt wieder allgegenw\u00e4rtig scheint\".<\/div>\r\n<div class=\"source\"><a href=\"https:\/\/www.deutschlandfunkkultur.de\/buchkritik-heiko-christians-ueber-die-gefahr-eine-vorsichtige-annaeherung-100.html\"><em>Deutschlandfunk Kultur, Studio 9, 1. Juli 2026<\/em><\/a><\/div>\r\n<\/div>","47218":"<div class=\"reviews\">\r\n<div class=\"review\">Christians hat ein kleines B\u00fcchlein mit geballtem Inhalt vorgelegt, das einem fast vergessenen Begleiter des Menschen endlich einen begrifflichen Rahmen geben will.<\/div>\r\n<div class=\"source\">Michael Hesse in der Frankfurter Rundschau vom 29.07.2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Nils Schniederjann bespricht \u00dcber die Gefahr bei Deutschlandfunk Kultur. Besonders hebt er Christians\u2019 ph\u00e4nomenologischen Blick hervor, der weder in \"rei\u00dferische Heldenverehrung\" noch in moralische Verurteilung verf\u00e4llt. Entstanden sei so ein \"gelehrtes, materialreiches Panorama eines Ph\u00e4nomens, das gerade jetzt wieder allgegenw\u00e4rtig scheint\".<\/div>\r\n<div class=\"source\"><a href=\"https:\/\/www.deutschlandfunkkultur.de\/buchkritik-heiko-christians-ueber-die-gefahr-eine-vorsichtige-annaeherung-100.html\"><em>Deutschlandfunk Kultur, Studio 9, 1. Juli 2026<\/em><\/a><\/div>\r\n<\/div>"},"language":{"46919":"","47093":"","47218":""},"cover":{"46919":"Kartoniert","47093":"","47218":""},"pages":{"46919":"144","47093":"144","47218":"144"},"edition":{"46919":"","47093":"Unver\u00e4ndertes eBook der 1. Auflage von 2026","47218":"Unver\u00e4ndertes EPUB der 1. Auflage von 2026"},"pod":{"46919":"Nein","47093":"Nein","47218":"Nein"},"copyright_year":{"46919":"","47093":"","47218":""},"vlb_tix_link":{"46919":"https:\/\/neu.vlbtix.de\/products\/9783787350988?type=gtin","47093":"","47218":""},"defaultValues":{"163":"15"}};
30884            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
30885
30886            if (typeof window.amxnotif_wrap_attributes === 'function') {
30887                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
30888                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
30889            }
30890
30891            const configurableOptionsComponent = initConfigurableOptions(
30892                '47111',
30893                config
30894            );
30895            const swatchOptionsComponent = initSwatchOptions(
30896                swatchConfig
30897            );
30898
30899            // DWS - Configurable product preselect start
30900            const confProdPreSelect = () => {
30901                return {
30902                    preselectQuerystringItems() {
30903                        var data = {"id":"46919","output":"15"};
30904                        const urlQueryParams = new URLSearchParams(window.location.search);
30905
30906                                                this.$nextTick(() => {
30907                            setTimeout(() => {
30908                                const rootEl = this.$root || this.$el;
30909                                if (!rootEl) return;
30910
30911                                const applySelection = (attrCode, attrValue) => {
30912                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
30913
30914                                    const attributes = Object.values(this.optionConfig.attributes || {});
30915                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
30916
30917                                    if (targetAttr) {
30918                                        const attrId = String(targetAttr.id);
30919                                        const optionVal = String(attrValue);
30920
30921                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
30922
30923                                        if (inputEl) {
30924                                                                                        inputEl.click();
30925                                            inputEl.dispatchEvent(new Event('change', {
30926                                                bubbles: true
30927                                            }));
30928                                        } else {
30929                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
30930                                            if (selectEl) {
30931                                                selectEl.value = optionVal;
30932                                                selectEl.dispatchEvent(new Event('change', {
30933                                                    bubbles: true
30934                                                }));
30935                                            }
30936                                        }
30937
30938                                                                                this.changeOption(attrId, optionVal, false);
30939                                    }
30940                                };
30941
30942                                                                if (data && typeof data === 'object') {
30943                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
30944                                }
30945
30946                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
30947                                    if (attribute && attribute.code) {
30948                                        let optionValue = urlQueryParams.get(attribute.code);
30949                                        if (optionValue) {
30950                                            let optionId = false;
30951                                            const attributes = Object.values(this.optionConfig.attributes || {});
30952                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
30953
30954                                            let found = false;
30955                                            Object.values(targetAttr.options).map(option => {
30956                                                if (found === false && option.label === optionValue) {
30957                                                    optionId = option.id;
30958                                                    found = true;
30959                                                }
30960                                            });
30961
30962                                            const attrId = String(targetAttr.id);
30963                                            let optionVal = String(optionValue);
30964                                            if (found) {
30965                                                optionVal = String(optionId);
30966                                            }
30967
30968                                            applySelection(attribute.code, optionVal);
30969                                        }
30970                                    }
30971                                });
30972                            }, 100);
30973                        });
30974                    }
30975                }
30976            };
30977            // DWS - Configurable product preselect end
30978
30979            const result = Object.assign(
30980                configurableOptionsComponent,
30981                swatchOptionsComponent, {
30982                    productId: '47111',
30983                    productIndex: 0,
30984                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
30985                    showSwatches: false,
30986                    precalcOptions: {},
30987                    originalInit: configurableOptionsComponent.init,
30988                    init() {
30989                        try {
30990                            this.precalcOptions = {};
30991                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
30992                            this.preselectQuerystringItems();
30993                            if (Array.isArray(attrSource)) {
30994                                attrSource.forEach(attr => {
30995                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
30996                                });
30997                            } else if (attrSource && typeof attrSource === 'object') {
30998                                Object.keys(attrSource).forEach(id => {
30999                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
31000                                });
31001                            }
31002                        } catch (e) {
31003                            console.error('Pre-calc error:', e);
31004                        }
31005
31006                        if (typeof this.originalInit === 'function') {
31007                            this.originalInit();
31008                        }
31009
31010                        try {
31011                            this.initShowSwatchesIntersect();
31012                        } catch (e) {
31013                            console.error('intersect error:', e);
31014                        }
31015                    },
31016
31017                    updateGallery() {
31018                        if (!this.productIndex) return;
31019
31020                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
31021                                method: 'GET',
31022                                headers: {
31023                                    'Content-Type': 'application/json',
31024                                    'X-Requested-With': 'XMLHttpRequest'
31025                                }
31026                            })
31027                            .then(response => response.json())
31028                            .then(data => {
31029                                if (data && data.medium) {
31030                                    window.dispatchEvent(new CustomEvent("update-gallery-47111", {
31031                                        detail: data.medium
31032                                    }));
31033                                }
31034                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
31035                    },
31036
31037
31038                    initShowSwatchesIntersect() {
31039                        const observer = new IntersectionObserver(entries => {
31040                            if (entries[0].isIntersecting) {
31041                                this.showSwatches = true;
31042                                observer.disconnect();
31043                            }
31044                        }, {
31045                            rootMargin: '512px'
31046                        });
31047                        observer.observe(this.$el);
31048                    },
31049                    getOptions(attrId) {
31050                        return this.precalcOptions[attrId] || [];
31051                    },
31052                    getOptionsByAttrId() {
31053                        return this.getOptions(this.$el.dataset.attributeId);
31054                    },
31055                    _getItemId() {
31056                        if (this.item && this.item.id) return this.item.id;
31057                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
31058                    },
31059                    getSwatchOptionHtmlId() {
31060                        const itemId = this._getItemId();
31061                        return itemId ? this.$id(`attribute-option-47111-${itemId}`) : '';
31062                    },
31063                    getSwatchOptionHtmlIdGroup() {
31064                        const itemId = this._getItemId();
31065                        return itemId ? [`attribute-option-47111-${itemId}`] : [];
31066                    },
31067                    getAttributeSwatchData(attributeId) {
31068                        const data = Object.assign({}, this.swatchConfig[attributeId]);
31069                        if (data['additional_data']) {
31070                            try {
31071                                data['details'] = JSON.parse(data['additional_data']);
31072                            } catch (e) {
31073                                data['details'] = {};
31074                            }
31075                        }
31076                        return data;
31077                    },
31078                    getSwatchType(attributeId, optionId) {
31079                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
31080                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
31081                        }
31082                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
31083                            this.swatchConfig[attributeId].details.swatch_input_type :
31084                            "empty";
31085                        if (type === 'visual') {
31086                            const config = this.swatchConfig[attributeId];
31087                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
31088                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
31089                            }
31090                            // Fallback to first option type
31091                            for (const oId in config) {
31092                                if (config[oId] && typeof config[oId].type !== 'undefined') {
31093                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
31094                                }
31095                            }
31096                        }
31097                        return type;
31098                    },
31099                    mapSwatchTypeNumberToTypeCode(type) {
31100                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
31101                    },
31102                    isTextSwatch() {
31103                        const itemId = this._getItemId();
31104                        if (!this.$el || !itemId) return false;
31105                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
31106                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
31107                    },
31108
31109                    getSwatchText() {
31110                        const itemId = this._getItemId();
31111                        if (this.item) return this.item.label || '';
31112                        if (!this.$el || !itemId) return '';
31113                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
31114                        const options = attrId ? this.getOptions(attrId) : [];
31115                        const opt = options.find(o => o.id == itemId);
31116                        return opt ? opt.label : '';
31117                    },
31118                    getSwatchBackgroundStyle() {
31119                        const itemId = this._getItemId();
31120                        if (!this.$el || !itemId) return '';
31121                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
31122                        if (!attrId) return '';
31123                        const type = this.getSwatchType(attrId, itemId);
31124                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
31125                            this.swatchConfig[attrId][itemId] :
31126                            null;
31127                        if (!swatchData) return '';
31128                        if (type === "color") return 'background-color:' + swatchData.value;
31129                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
31130                        return '';
31131                    },
31132                    swatchOptionClasses() {
31133                        const itemId = this._getItemId();
31134                        if (!this.$el || !itemId) return {};
31135                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
31136                        return {
31137                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
31138                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
31139                            'w-6 h-6': !this.isTextSwatch()
31140                        }
31141                    },
31142
31143                    onFocusSwatchItem() {
31144                        const itemId = this._getItemId();
31145                        if (itemId) this.focusedLabel = itemId;
31146                    },
31147                    onChangeOption() {
31148                        const itemId = this._getItemId();
31149                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
31150                        if (attrId && itemId) this.changeOption(attrId, itemId);
31151                    },
31152                    changeOption(attributeId, value) {
31153                        if (value === '') {
31154                            return;
31155                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
31156                        } else {
31157                            this.selectedValues[attributeId] = value;
31158                        }
31159
31160                        this.findSimpleIndex();
31161                        this.findAllowedAttributeOptions();
31162                        this.updatePrices();
31163                        this.updateGallery();
31164
31165                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
31166                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
31167
31168                        const eventDetail = {
31169                            productId: this.productId,
31170                            optionId: attributeId,
31171                            value: value,
31172                            productIndex: this.productIndex || 0,
31173                            selectedValues: this.selectedValues,
31174                            candidates: candidates,
31175                            sourceElement: this.$el
31176                        };
31177
31178                        // Dispatch for Amasty
31179                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
31180                            detail: eventDetail
31181                        }));
31182
31183                        // Dispatch for Hyva listing
31184                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
31185                            detail: eventDetail
31186                        }));
31187                    },
31188
31189
31190                    clearOptionIfActive() {
31191                        const itemId = this._getItemId();
31192                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
31193                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
31194                            this.changeOption(attrId, '');
31195
31196                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
31197                            if (!input && this.$el?.querySelector) {
31198                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
31199                            }
31200                            if (!input && this.$el?.closest) {
31201                                const root = this.$el.closest('[data-product-id]') || this.$el;
31202                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
31203                            }
31204                            if (input) {
31205                                input.checked = false;
31206                            }
31207                        }
31208                    },
31209                    get optionIsEnabled() {
31210                        const itemId = this._getItemId();
31211                        if (!this.$el || !itemId) return true;
31212                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
31213                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
31214                        return !!allowedOptions.find(opt => opt.id == itemId);
31215                    },
31216                    get isSelected() {
31217                        const itemId = this._getItemId();
31218                        if (!this.$el || !itemId) return false;
31219                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
31220                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
31221                    },
31222                    get isSwatchRequired() {
31223                        if (!this.$el) return false;
31224                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
31225                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
31226                    },
31227                    focusedLabel: false,
31228                    activeTooltipItem: false,
31229                    tooltipPositionElement: false,
31230                    setActiveTooltipItem() {
31231                        const itemId = this._getItemId();
31232                        if (!this.$el || !itemId) return;
31233                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
31234                        this.activeTooltipItem = {
31235                            attribute: attrId,
31236                            item: itemId,
31237                            index: 0
31238                        };
31239                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
31240                    },
31241                    unsetActiveTooltipItem() {
31242                        this.activeTooltipItem = false;
31243                    }
31244                },
31245                confProdPreSelect()
31246            );
31247
31248            if (result.optionConfig && result.optionConfig.attributes) {
31249                const attributes = result.optionConfig.attributes;
31250                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
31251                    let source = attributes;
31252                    if (Array.isArray(attributes)) {
31253                        source = {};
31254                        attributes.forEach(attr => {
31255                            if (attr && attr.id) source[attr.id] = attr;
31256                        });
31257                    }
31258                    const values = Object.values(source);
31259                    const wrapper = Object.assign(values, source);
31260                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
31261                        value: true,
31262                        enumerable: false
31263                    });
31264                    result.optionConfig.attributes = wrapper;
31265                }
31266            }
31267
31268            return result;
31269        }
31270
31271        window.addEventListener('alpine:init', () => {
31272            Alpine.data('initConfigurableSwatchOptions_47111', initConfigurableSwatchOptions_47111);
31273        }, {
31274            once: true
31275        });
31276    </script>
31276
31277    
31278    <div x-data="initConfigurableSwatchOptions_47111" x-defer="intersect">
31279        <div class="pagebuilder-home-hidden">
31280                                            
31281                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
31282                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
31283                        <template x-if="showSwatches">
31284                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-47111-163" role="radiogroup" aria-label="Einband">
31285                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
31286                                    <div :data-option-id="item.id" style="display: contents">
31287                                        <div x-id="getSwatchOptionHtmlIdGroup">
31288    <template x-if="optionIsEnabled">
31289        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
31289self="unsetActiveTooltipItem">
31290            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-47111-163">
31291            <div>
31292                <template x-if="isTextSwatch">
31293                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
31294                </template>
31295                <template x-if="!optionIsActive(163, item.id)">
31296                    <div>
31297                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
31298                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
31299                        </svg>
31300                    </div>
31301                </template>
31302            </div>
31303        </label>
31304    </template>
31305</div>                                    </div>
31306                                </template>
31307                            </div>
31308                        </template>
31309                    </div>
31310                </div>
31311                    </div>
31312    </div>
31313            
31314                                                <div class="meta py-4 pagebuilder-home-hidden">
31315                <div x-data="initMarketingShortText_47111()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
31316                    <!-- Marketing short text -->
31317                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
31318                    </div>
31319
31320                    <!-- Short description -->
31321                                                                <div class="short-description">
31322                            Dies ist ein Buch &uuml;ber die Gefahr. Tats&auml;chlich gibt es bis heute kein weiteres. Die Gefahr, das soundsovielte Buch zum Thema zu lesen, besteht also nicht. Bleibt die Frage, ob es dieses eine ...                            <a href="https://meiner.de/fmv_de/a-ber-die-gefahr-21363" class="underline">mehr</a>
31323                        </div>
31324                                    </div>
31325
31326                <!-- Series  -->
31327                                    <div class="mb-1">
31328                        <span class="sr-only">Reihe:</span>
31329                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
31330                            <span>Blaue Reihe</span>
31331                        </a>
31332                                            </div>
31333                
31334                
31335                                                    <div class="mb-1">
31336                        <span x-data="initEditionText_47111()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
31337                            <!-- Marketing short text -->
31338                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 144                        </span>
31339                    </div>
31340                
31341                            </div>
31342            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
31343                
31344                <div class="justify-end" x-data="initPriceBox()" @update-prices-47111.window="updatePrice($event.detail);">
31345                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="47111" data-price-box="product-id-47111"><span class="normal-price">
31346    <span x-data x-id="['product\u002Dprice\u002D47111']" class="price-container price-final_price tax weee">
31347            <span class="price-label">Ab</span>
31348                <span class="approx-price">ca. </span>
31349        <span :id="$id('product\u002Dprice\u002D47111')" data-price-amount="14.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">14,99&nbsp;&euro;</span></span>
31350        </span>
31351</span>
31352
31353
31354</div>                </div>
31355
31356                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
31357                                            <div class="open-access-container open-access-container-47111                    flex mt-4 ml-auto sm:mt-0 hidden">
31358                            <div class="text-gray-700">
31359                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
31360                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
31361                                        Kostenlos online lesen                                    </a>
31362                                </button>
31363                            </div>
31364                        </div>
31365                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb &Uuml;ber die Gefahr" aria-label="In den Warenkorb &Uuml;ber die Gefahr" data-addto="cart">
31366                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
31367  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
313670 014 0z"></path>
31368</svg>
31369                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
31370                                        In den Warenkorb                                    </span>
31371                                </button>
31372                                                                                                                    
31373<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(47111)" aria-label="Zur Wunschliste hinzuf&uuml;gen &Uuml;ber die Gefahr" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
31374    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
31375  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
31376</svg>
31377</button>
31378                                    </div>
31379            </div>
31380        </div>
31381        
31381<script>
31382            function initMarketingShortText_47111() {
31383                var marketingShortTextConfig = {};
31384                if (typeof window.initConfigurableSwatchOptions_47111 === "function") {
31385                    var fullConfig = window.initConfigurableSwatchOptions_47111().optionConfig
31386                    var marketingShortTextConfig = fullConfig.marketing_short_text;
31387                }
31388                return {
31389                    marketingShortText: '',
31390                    config: marketingShortTextConfig,
31391                    productId: '47111',
31392                    getMarketingShortText(detail) {
31393                        this.marketingShortText = detail.productIndex ?
31394                            this.config[detail.productIndex] :
31395                            null;
31396                    },
31397                    eventListeners: {
31398                        ['@listing-configurable-selection-changed.window'](event) {
31399                            if (this.productId == event.detail.productId) {
31400                                this.getMarketingShortText(event.detail);
31401                            }
31402
31403                        }
31404                    }
31405                }
31406            }
31407
31408            function initEditionText_47111() {
31409                var editionTextConfig = {};
31410                if (typeof window.initConfigurableSwatchOptions_47111 === "function") {
31411                    var fullConfig = window.initConfigurableSwatchOptions_47111().optionConfig
31412                    var editionTextConfig = fullConfig.edition;
31413                }
31414                return {
31415                    editionText: '',
31416                    config: editionTextConfig,
31417                    productId: '47111',
31418                    getEditionText(detail) {
31419                        this.editionText = detail.productIndex ?
31420                            this.config[detail.productIndex] :
31421                            null;
31422                    },
31423                    eventListeners: {
31424                        ['@listing-configurable-selection-changed.window'](event) {
31425                            if (this.productId == event.detail.productId) {
31426                                this.getEditionText(event.detail);
31427                            }
31428
31429                        }
31430                    }
31431                }
31432            }
31433        </script>
31433
31434                    </form>
31435                            
31436    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/46705/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21230">
31437        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="46705">
31438                                    <a href="https://meiner.de/fmv_de/weltuntergang-21230" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
31439            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-46705.window="$el.src = $event.detail" alt="Weltuntergang" title="Weltuntergang" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787350759_1.jpg" :style="{
31440                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
31441                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
31442            }">
31443                    </a>
31444        <div class="product-info flex flex-col flex-grow ">
31445                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
31446                                    <div class="mb-2 text-sm text-gray-500 font-medium">
31447                                                                                    <a href="https://meiner.de/fmv_de/person/Florian-Baab-3674/" class="mb-2">
31448                                    Florian Baab                                                                    </a>
31449                                                                                                                                    </div>
31450                                <a class="product-item-link" href="https://meiner.de/fmv_de/weltuntergang-21230">
31451                    Weltuntergang                </a>
31452                            </div>
31453
31454            <div x-data="initEditionText_46705()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
31455                <!-- Marketing short text -->
31456                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
31457                </div>
31458            </div>
31459
31460                            <div class="py-1 grid  mb-4 ">
31461                    
31462                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":46705,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":46705,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46499":"1","46741":"1","46738":"1"},"childProductsAlertStatus":{"46499":"0","46741":"0","46738":"0"},"indexMapping":{"163:15":46499,"163:9":46741,"163:8":46738},"availabilityMessages":{"46499":"Lieferbar innerhalb von 3-5 Tagen","46741":"Download sofort  verf\u00fcgbar","46738":"Download sofort  verf\u00fcgbar"},"openAccess":{"46705":{"status":0},"46499":{"status":0},"46741":{"status":0},"46738":{"status":0}}},"availabilityMessages":{"46499":"Lieferbar innerhalb von 3-5 Tagen","46741":"Download sofort  verf\u00fcgbar","46738":"Download sofort  verf\u00fcgbar"},"openAccess":{"46705":{"status":0},"46499":{"status":0},"46741":{"status":0},"46738":{"status":0}}}'>
31463        <template x-if="containerVisible">
31464                            <!-- Popup Trigger -->
31465                <div>
31466                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
31467                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
31468                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
31469  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
31470<title>bell</title></svg>
31471</span>
31472                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
31473
31474                    <!-- Popup Modal -->
31475                    <template x-if="showModal">
31476                        <template x-teleport=".page-wrapper">
31477                            <div x-cloak class="fixed inset-0 flex items-center justify-center
31478                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
31479                                <div class="relative bg-white rounded-lg shadow-xl
31480                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
31481                                    <div class="p-6">
31482                                        <!-- Subscription Form for Popup -->
31483                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
31484                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
31485                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
31486                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
31487
31488                                            <div class="flex flex-col gap-3">
31489                                                <div class="flex-grow grow">
31490                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
31491                                                        shadow-xs focus:outline-none focus:outline-hidden
31492                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
31493                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
31494                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
31495                                                </div>
31496                                                <input type="hidden" name="product_id" :value="currentProductId">
31497                                                <input type="hidden" name="type" value="email">
31498
31499                                                
31500                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
31501
31502                                                <div class="amxnotif_guest_action">
31503                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
31504                                                        rounded-md focus:outline-none
31505                                                        focus:outline-hidden focus:ring-2
31506                                                        focus:ring-offset-2 disabled:opacity-50
31507                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
31508                                                        Benachrichtigen                                                    </button>
31509                                                </div>
31510                                            </div>
31511
31512                                                                                            <div class="flex items-start pt-2">
31513                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
31514                                                        text-blue-600 border-gray-300 rounded-sm">
31515                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
31516                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
31517                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
31518                                                </div>
31519                                                                                    </form>
31520                                    </div>
31521
31522                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
31523                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
31524                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
31525  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
31526<title>x</title></svg>
31527                                    </button>
31528                                </div>
31529                            </div>
31530                        </template>
31531                    </template>
31532                </div>
31533                    </template>
31534    </div>
31535
31536<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_46705" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":46705,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46499":"1","46741":"1","46738":"1"},"childProductsAlertStatus":{"46499":"0","46741":"0","46738":"0"},"indexMapping":"{\u0022163:15\u0022:46499,\u0022163:9\u0022:46741,\u0022163:8\u0022:46738}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":46705,"availabilityMessages":{"46499":"Lieferbar innerhalb von 3-5 Tagen","46741":"Download sofort  verf\u00fcgbar","46738":"Download sofort  verf\u00fcgbar"},"openAccess":{"46705":{"status":0},"46499":{"status":0},"46741":{"status":0},"46738":{"status":0}}}'>
31537    
31538    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
31539        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
31540        <span x-html="optionsLabelText"></span>
31541    </p>
31542</div>                </div>
31543            
31544                                
31544<script>
31545        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
31546            try {
31547                const attributes = (config && config.attributes) ? config.attributes : null;
31548                if (!attributes) return [];
31549                let attr = null;
31550                if (Array.isArray(attributes)) {
31551                    for (let i = 0; i < attributes.length; i++) {
31552                        const a = attributes[i];
31553                        if (a && a.id == attrId) {
31554                            attr = a;
31555                            break;
31556                        }
31557                    }
31558                } else {
31559                    attr = attributes[attrId];
31560                }
31561                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
31562            } catch (e) {
31563                return [];
31564            }
31565        };
31566
31567        function initConfigurableSwatchOptions_46705() {
31568            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46499"]},{"id":"8","label":"PDF","products":["46738"]},{"id":"9","label":"EPUB","products":["46741"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46499":{"baseOldPrice":{"amount":18.598129841121},"oldPrice":{"amount":19.9},"basePrice":{"amount":18.598129841121},"finalPrice":{"amount":19.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46741":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":14.009344794393},"finalPrice":{"amount":14.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46738":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":14.009344794393},"finalPrice":{"amount":14.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":12.596637655462},"finalPrice":{"amount":14.99},"isApproxPrice":null},"productId":"46705","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46499":{"163":"15"},"46741":{"163":"9"},"46738":{"163":"8"}},"salable":{"163":{"15":["46499"],"9":["46741"],"8":["46738"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"46499":"005073","46741":"005075","46738":"005074"},"output":{"46499":"Kartoniert","46738":"PDF","46741":"EPUB"},"original_name":{"46499":"","46738":"","46741":""},"openaccess_license_link":{"46499":"","46738":"","46741":""},"openaccess_license_name":{"46499":"","46738":"","46741":""},"openaccess_external_link":{"46499":"","46738":"","46741":""},"gpsr_safety_info":{"46499":"","46738":"","46741":""},"description":{"46499":"Weltuntergang: Ein Wort, das es nur im Deutschen gibt, anderswo spricht man von der Apokalypse und vom Ende der Welt. Sp\u00e4testens seit dem Abwurf der nuklearen Bombe Mitte des 20. Jahrhunderts ist das Konzept reale M\u00f6glichkeit, und Menschen unterschiedlicher Zeiten sind unterschiedlich mit ihm umgegangen. So entstand eine charakteristisch moderne Form des Weltverh\u00e4ltnisses: Wenn die Zukunft bedroht ist, wird die Gegenwart zum Ort der Entscheidung. Raum f\u00fcr Hoffnung bleibt dennoch, selbst nach dem Untergang des Abendlandes (Spengler) und nach dem Ende der Geschichte (Fukuyama): Solange es die Welt gibt, erm\u00f6glicht jedes Ende einen neuen Anfang. ","46738":"Weltuntergang: Ein Wort, das es nur im Deutschen gibt, anderswo spricht man von der Apokalypse und vom Ende der Welt. Sp\u00e4testens seit dem Abwurf der nuklearen Bombe Mitte des 20. Jahrhunderts ist das Konzept reale M\u00f6glichkeit, und Menschen unterschiedlicher Zeiten sind unterschiedlich mit ihm umgegangen. So entstand eine charakteristisch moderne Form des Weltverh\u00e4ltnisses: Wenn die Zukunft bedroht ist, wird die Gegenwart zum Ort der Entscheidung. Raum f\u00fcr Hoffnung bleibt dennoch, selbst nach dem Untergang des Abendlandes (Spengler) und nach dem Ende der Geschichte (Fukuyama): Solange es die Welt gibt, erm\u00f6glicht jedes Ende einen neuen Anfang. ","46741":"Weltuntergang: Ein Wort, das es nur im Deutschen gibt, anderswo spricht man von der Apokalypse und vom Ende der Welt. Sp\u00e4testens seit dem Abwurf der nuklearen Bombe Mitte des 20. Jahrhun
31568derts ist das Konzept reale M\u00f6glichkeit, und Menschen unterschiedlicher Zeiten sind unterschiedlich mit ihm umgegangen. So entstand eine charakteristisch moderne Form des Weltverh\u00e4ltnisses: Wenn die Zukunft bedroht ist, wird die Gegenwart zum Ort der Entscheidung. Raum f\u00fcr Hoffnung bleibt dennoch, selbst nach dem Untergang des Abendlandes (Spengler) und nach dem Ende der Geschichte (Fukuyama): Solange es die Welt gibt, erm\u00f6glicht jedes Ende einen neuen Anfang. "},"doi":{"46499":"","46738":"10.28937\/978-3-7873-5074-2","46741":""},"isbn":{"46499":"978-3-7873-5073-5","46738":"978-3-7873-5074-2","46741":"978-3-7873-5075-9"},"marketing_short_text":{"46499":"","46738":"","46741":""},"recension_text":{"46499":"","46738":"","46741":""},"language":{"46499":"","46738":"","46741":""},"cover":{"46499":"Kartoniert","46738":"","46741":""},"pages":{"46499":"138 Seiten","46738":"138","46741":"138"},"edition":{"46499":"","46738":"Unver\u00e4ndertes eBook der 1. Auflage von 2026","46741":"Unver\u00e4ndertes EPUB der 1. Auflage von 2026"},"pod":{"46499":"Nein","46738":"Nein","46741":"Nein"},"copyright_year":{"46499":"","46738":"","46741":""},"vlb_tix_link":{"46499":"https:\/\/neu.vlbtix.de\/products\/9783787350735?type=gtin","46738":"","46741":""},"defaultValues":{"163":"15"}};
31569            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
31570
31571            if (typeof window.amxnotif_wrap_attributes === 'function') {
31572                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
31573                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
31574            }
31575
31576            const configurableOptionsComponent = initConfigurableOptions(
31577                '46705',
31578                config
31579            );
31580            const swatchOptionsComponent = initSwatchOptions(
31581                swatchConfig
31582            );
31583
31584            // DWS - Configurable product preselect start
31585            const confProdPreSelect = () => {
31586                return {
31587                    preselectQuerystringItems() {
31588                        var data = {"id":"46499","output":"15"};
31589                        const urlQueryParams = new URLSearchParams(window.location.search);
31590
31591                                                this.$nextTick(() => {
31592                            setTimeout(() => {
31593                                const rootEl = this.$root || this.$el;
31594                                if (!rootEl) return;
31595
31596                                const applySelection = (attrCode, attrValue) => {
31597                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
31598
31599                                    const attributes = Object.values(this.optionConfig.attributes || {});
31600                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
31601
31602                                    if (targetAttr) {
31603                                        const attrId = String(targetAttr.id);
31604                                        const optionVal = String(attrValue);
31605
31606                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
31607
31608                                        if (inputEl) {
31609                                                                                        inputEl.click();
31610                                            inputEl.dispatchEvent(new Event('change', {
31611                                                bubbles: true
31612                                            }));
31613                                        } else {
31614                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
31615                                            if (selectEl) {
31616                                                selectEl.value = optionVal;
31617                                                selectEl.dispatchEvent(new Event('change', {
31618                                                    bubbles: true
31619                                                }));
31620                                            }
31621                                        }
31622
31623                                                                                this.changeOption(attrId, optionVal, false);
31624                                    }
31625                                };
31626
31627                                                                if (data && typeof data === 'object') {
31628                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
31629                                }
31630
31631                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
31632                                    if (attribute && attribute.code) {
31633                                        let optionValue = urlQueryParams.get(attribute.code);
31634                                        if (optionValue) {
31635                                            let optionId = false;
31636                                            const attributes = Object.values(this.optionConfig.attributes || {});
31637                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
31638
31639                                            let found = false;
31640                                            Object.values(targetAttr.options).map(option => {
31641                                                if (found === false && option.label === optionValue) {
31642                                                    optionId = option.id;
31643                                                    found = true;
31644                                                }
31645                                            });
31646
31647                                            const attrId = String(targetAttr.id);
31648                                            let optionVal = String(optionValue);
31649                                            if (found) {
31650                                                optionVal = String(optionId);
31651                                            }
31652
31653                                            applySelection(attribute.code, optionVal);
31654                                        }
31655                                    }
31656                                });
31657                            }, 100);
31658                        });
31659                    }
31660                }
31661            };
31662            // DWS - Configurable product preselect end
31663
31664            const result = Object.assign(
31665                configurableOptionsComponent,
31666                swatchOptionsComponent, {
31667                    productId: '46705',
31668                    productIndex: 0,
31669                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
31670                    showSwatches: false,
31671                    precalcOptions: {},
31672                    originalInit: configurableOptionsComponent.init,
31673                    init() {
31674                        try {
31675                            this.precalcOptions = {};
31676                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
31677                            this.preselectQuerystringItems();
31678                            if (Array.isArray(attrSource)) {
31679                                attrSource.forEach(attr => {
31680                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
31681                                });
31682                            } else if (attrSource && typeof attrSource === 'object') {
31683                                Object.keys(attrSource).forEach(id => {
31684                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
31685                                });
31686                            }
31687                        } catch (e) {
31688                            console.error('Pre-calc error:', e);
31689                        }
31690
31691                        if (typeof this.originalInit === 'function') {
31692                            this.originalInit();
31693                        }
31694
31695                        try {
31696                            this.initShowSwatchesIntersect();
31697                        } catch (e) {
31698                            console.error('intersect error:', e);
31699                        }
31700                    },
31701
31702                    updateGallery() {
31703                        if (!this.productIndex) return;
31704
31705                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
31706                                method: 'GET',
31707                                headers: {
31708                                    'Content-Type': 'application/json',
31709                                    'X-Requested-With': 'XMLHttpRequest'
31710                                }
31711                            })
31712                            .then(response => response.json())
31713                            .then(data => {
31714                                if (data && data.medium) {
31715                                    window.dispatchEvent(new CustomEvent("update-gallery-46705", {
31716                                        detail: data.medium
31717                                    }));
31718                                }
31719                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
31720                    },
31721
31722
31723                    initShowSwatchesIntersect() {
31724                        const observer = new IntersectionObserver(entries => {
31725                            if (entries[0].isIntersecting) {
31726                                this.showSwatches = true;
31727                                observer.disconnect();
31728                            }
31729                        }, {
31730                            rootMargin: '512px'
31731                        });
31732                        observer.observe(this.$el);
31733                    },
31734                    getOptions(attrId) {
31735                        return this.precalcOptions[attrId] || [];
31736                    },
31737                    getOptionsByAttrId() {
31738                        return this.getOptions(this.$el.dataset.attributeId);
31739                    },
31740                    _getItemId() {
31741                        if (this.item && this.item.id) return this.item.id;
31742                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
31743                    },
31744                    getSwatchOptionHtmlId() {
31745                        const itemId = this._getItemId();
31746                        return itemId ? this.$id(`attribute-option-46705-${itemId}`) : '';
31747                    },
31748                    getSwatchOptionHtmlIdGroup() {
31749                        const itemId = this._getItemId();
31750                        return itemId ? [`attribute-option-46705-${itemId}`] : [];
31751                    },
31752                    getAttributeSwatchData(attributeId) {
31753                        const data = Object.assign({}, this.swatchConfig[attributeId]);
31754                        if (data['additional_data']) {
31755                            try {
31756                                data['details'] = JSON.parse(data['additional_data']);
31757                            } catch (e) {
31758                                data['details'] = {};
31759                            }
31760                        }
31761                        return data;
31762                    },
31763                    getSwatchType(attributeId, optionId) {
31764                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
31765                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
31766                        }
31767                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
31768                            this.swatchConfig[attributeId].details.swatch_input_type :
31769                            "empty";
31770                        if (type === 'visual') {
31771                            const config = this.swatchConfig[attributeId];
31772                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
31773                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
31774                            }
31775                            // Fallback to first option type
31776                            for (const oId in config) {
31777                                if (config[oId] && typeof config[oId].type !== 'undefined') {
31778                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
31779                                }
31780                            }
31781                        }
31782                        return type;
31783                    },
31784                    mapSwatchTypeNumberToTypeCode(type) {
31785                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
31786                    },
31787                    isTextSwatch() {
31788                        const itemId = this._getItemId();
31789                        if (!this.$el || !itemId) return false;
31790                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
31791                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
31792                    },
31793
31794                    getSwatchText() {
31795                        const itemId = this._getItemId();
31796                        if (this.item) return this.item.label || '';
31797                        if (!this.$el || !itemId) return '';
31798                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
31799                        const options = attrId ? this.getOptions(attrId) : [];
31800                        const opt = options.find(o => o.id == itemId);
31801                        return opt ? opt.label : '';
31802                    },
31803                    getSwatchBackgroundStyle() {
31804                        const itemId = this._getItemId();
31805                        if (!this.$el || !itemId) return '';
31806                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
31807                        if (!attrId) return '';
31808                        const type = this.getSwatchType(attrId, itemId);
31809                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
31810                            this.swatchConfig[attrId][itemId] :
31811                            null;
31812                        if (!swatchData) return '';
31813                        if (type === "color") return 'background-color:' + swatchData.value;
31814                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
31815                        return '';
31816                    },
31817                    swatchOptionClasses() {
31818                        const itemId = this._getItemId();
31819                        if (!this.$el || !itemId) return {};
31820                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
31821                        return {
31822                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
31823                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
31824                            'w-6 h-6': !this.isTextSwatch()
31825                        }
31826                    },
31827
31828                    onFocusSwatchItem() {
31829                        const itemId = this._getItemId();
31830                        if (itemId) this.focusedLabel = itemId;
31831                    },
31832                    onChangeOption() {
31833                        const itemId = this._getItemId();
31834                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
31835                        if (attrId && itemId) this.changeOption(attrId, itemId);
31836                    },
31837                    changeOption(attributeId, value) {
31838                        if (value === '') {
31839                            return;
31840                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
31841                        } else {
31842                            this.selectedValues[attributeId] = value;
31843                        }
31844
31845                        this.findSimpleIndex();
31846                        this.findAllowedAttributeOptions();
31847                        this.updatePrices();
31848                        this.updateGallery();
31849
31850                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
31851                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
31852
31853                        const eventDetail = {
31854                            productId: this.productId,
31855                            optionId: attributeId,
31856                            value: value,
31857                            productIndex: this.productIndex || 0,
31858                            selectedValues: this.selectedValues,
31859                            candidates: candidates,
31860                            sourceElement: this.$el
31861                        };
31862
31863                        // Dispatch for Amasty
31864                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
31865                            detail: eventDetail
31866                        }));
31867
31868                        // Dispatch for Hyva listing
31869                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
31870                            detail: eventDetail
31871                        }));
31872                    },
31873
31874
31875                    clearOptionIfActive() {
31876                        const itemId = this._getItemId();
31877                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
31878                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
31879                            this.changeOption(attrId, '');
31880
31881                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
31882                            if (!input && this.$el?.querySelector) {
31883                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
31884                            }
31885                            if (!input && this.$el?.closest) {
31886                                const root = this.$el.closest('[data-product-id]') || this.$el;
31887                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
31888                            }
31889                            if (input) {
31890                                input.checked = false;
31891                            }
31892                        }
31893                    },
31894                    get optionIsEnabled() {
31895                        const itemId = this._getItemId();
31896                        if (!this.$el || !itemId) return true;
31897                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
31898                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
31899                        return !!allowedOptions.find(opt => opt.id == itemId);
31900                    },
31901                    get isSelected() {
31902                        const itemId = this._getItemId();
31903                        if (!this.$el || !itemId) return false;
31904                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
31905                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
31906                    },
31907                    get isSwatchRequired() {
31908                        if (!this.$el) return false;
31909                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
31910                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
31911                    },
31912                    focusedLabel: false,
31913                    activeTooltipItem: false,
31914                    tooltipPositionElement: false,
31915                    setActiveTooltipItem() {
31916                        const itemId = this._getItemId();
31917                        if (!this.$el || !itemId) return;
31918                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
31919                        this.activeTooltipItem = {
31920                            attribute: attrId,
31921                            item: itemId,
31922                            index: 0
31923                        };
31924                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
31925                    },
31926                    unsetActiveTooltipItem() {
31927                        this.activeTooltipItem = false;
31928                    }
31929                },
31930                confProdPreSelect()
31931            );
31932
31933            if (result.optionConfig && result.optionConfig.attributes) {
31934                const attributes = result.optionConfig.attributes;
31935                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
31936                    let source = attributes;
31937                    if (Array.isArray(attributes)) {
31938                        source = {};
31939                        attributes.forEach(attr => {
31940                            if (attr && attr.id) source[attr.id] = attr;
31941                        });
31942                    }
31943                    const values = Object.values(source);
31944                    const wrapper = Object.assign(values, source);
31945                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
31946                        value: true,
31947                        enumerable: false
31948                    });
31949                    result.optionConfig.attributes = wrapper;
31950                }
31951            }
31952
31953            return result;
31954        }
31955
31956        window.addEventListener('alpine:init', () => {
31957            Alpine.data('initConfigurableSwatchOptions_46705', initConfigurableSwatchOptions_46705);
31958        }, {
31959            once: true
31960        });
31961    </script>
31961
31962    
31963    <div x-data="initConfigurableSwatchOptions_46705" x-defer="intersect">
31964        <div class="pagebuilder-home-hidden">
31965                                            
31966                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
31967                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
31968                        <template x-if="showSwatches">
31969                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-46705-163" role="radiogroup" aria-label="Einband">
31970                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
31971                                    <div :data-option-id="item.id" style="display: contents">
31972                                        <div x-id="getSwatchOptionHtmlIdGroup">
31973    <template x-if="optionIsEnabled">
31974        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
31974self="unsetActiveTooltipItem">
31975            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-46705-163">
31976            <div>
31977                <template x-if="isTextSwatch">
31978                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
31979                </template>
31980                <template x-if="!optionIsActive(163, item.id)">
31981                    <div>
31982                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
31983                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
31984                        </svg>
31985                    </div>
31986                </template>
31987            </div>
31988        </label>
31989    </template>
31990</div>                                    </div>
31991                                </template>
31992                            </div>
31993                        </template>
31994                    </div>
31995                </div>
31996                    </div>
31997    </div>
31998            
31999                                                <div class="meta py-4 pagebuilder-home-hidden">
32000                <div x-data="initMarketingShortText_46705()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
32001                    <!-- Marketing short text -->
32002                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
32003                    </div>
32004
32005                    <!-- Short description -->
32006                                                                <div class="short-description">
32007                            Weltuntergang: Ein Wort, das es nur im Deutschen gibt, anderswo spricht man von der Apokalypse und vom Ende der Welt. Sp&auml;testens seit dem Abwurf der nuklearen Bombe Mitte des 20. Jahrhunderts ...
32008                            <a href="https://meiner.de/fmv_de/weltuntergang-21230" class="underline">mehr</a>
32009                        </div>
32010                                    </div>
32011
32012                <!-- Series  -->
32013                                    <div class="mb-1">
32014                        <span class="sr-only">Reihe:</span>
32015                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
32016                            <span>Blaue Reihe</span>
32017                        </a>
32018                                            </div>
32019                
32020                
32021                                                    <div class="mb-1">
32022                        <span x-data="initEditionText_46705()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
32023                            <!-- Marketing short text -->
32024                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 138 Seiten                        </span>
32025                    </div>
32026                
32027                            </div>
32028            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
32029                
32030                <div class="justify-end" x-data="initPriceBox()" @update-prices-46705.window="updatePrice($event.detail);">
32031                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="46705" data-price-box="product-id-46705"><span class="normal-price">
32032    <span x-data x-id="['product\u002Dprice\u002D46705']" class="price-container price-final_price tax weee">
32033            <span class="price-label">Ab</span>
32034                <span class="approx-price">ca. </span>
32035        <span :id="$id('product\u002Dprice\u002D46705')" data-price-amount="14.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">14,99&nbsp;&euro;</span></span>
32036        </span>
32037</span>
32038
32039
32040</div>                </div>
32041
32042                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
32043                                            <div class="open-access-container open-access-container-46705                    flex mt-4 ml-auto sm:mt-0 hidden">
32044                            <div class="text-gray-700">
32045                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
32046                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
32047                                        Kostenlos online lesen                                    </a>
32048                                </button>
32049                            </div>
32050                        </div>
32051                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Weltuntergang" aria-label="In den Warenkorb Weltuntergang" data-addto="cart">
32052                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
32053  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
320530 014 0z"></path>
32054</svg>
32055                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
32056                                        In den Warenkorb                                    </span>
32057                                </button>
32058                                                                                                                    
32059<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(46705)" aria-label="Zur Wunschliste hinzuf&uuml;gen Weltuntergang" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
32060    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
32061  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
32062</svg>
32063</button>
32064                                    </div>
32065            </div>
32066        </div>
32067        
32067<script>
32068            function initMarketingShortText_46705() {
32069                var marketingShortTextConfig = {};
32070                if (typeof window.initConfigurableSwatchOptions_46705 === "function") {
32071                    var fullConfig = window.initConfigurableSwatchOptions_46705().optionConfig
32072                    var marketingShortTextConfig = fullConfig.marketing_short_text;
32073                }
32074                return {
32075                    marketingShortText: '',
32076                    config: marketingShortTextConfig,
32077                    productId: '46705',
32078                    getMarketingShortText(detail) {
32079                        this.marketingShortText = detail.productIndex ?
32080                            this.config[detail.productIndex] :
32081                            null;
32082                    },
32083                    eventListeners: {
32084                        ['@listing-configurable-selection-changed.window'](event) {
32085                            if (this.productId == event.detail.productId) {
32086                                this.getMarketingShortText(event.detail);
32087                            }
32088
32089                        }
32090                    }
32091                }
32092            }
32093
32094            function initEditionText_46705() {
32095                var editionTextConfig = {};
32096                if (typeof window.initConfigurableSwatchOptions_46705 === "function") {
32097                    var fullConfig = window.initConfigurableSwatchOptions_46705().optionConfig
32098                    var editionTextConfig = fullConfig.edition;
32099                }
32100                return {
32101                    editionText: '',
32102                    config: editionTextConfig,
32103                    productId: '46705',
32104                    getEditionText(detail) {
32105                        this.editionText = detail.productIndex ?
32106                            this.config[detail.productIndex] :
32107                            null;
32108                    },
32109                    eventListeners: {
32110                        ['@listing-configurable-selection-changed.window'](event) {
32111                            if (this.productId == event.detail.productId) {
32112                                this.getEditionText(event.detail);
32113                            }
32114
32115                        }
32116                    }
32117                }
32118            }
32119        </script>
32119
32120                    </form>
32121                            
32122    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/39968/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk17366">
32123        <input name="form_key" type="hidden" value="YDP9RAeVFUo72arn">        <input type="hidden" name="product" value="39968">
32124                                    <a href="https://meiner.de/fmv_de/kritik-der-digitalisierung-17366" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
32125            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-39968.window="$el.src = $event.detail" alt="Kritik der Digitalisierung" title="Kritik der Digitalisierung" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351923_1.jpg" :style="{
32126                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
32127                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
32128            }">
32129                    </a>
32130        <div class="product-info flex flex-col flex-grow ">
32131                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
32132                                    <div class="mb-2 text-sm text-gray-500 font-medium">
32133                                                                                    <a href="https://meiner.de/fmv_de/person/Daniel-Martin-Feige-3273/" class="mb-2">
32134                                    Daniel Martin Feige                                                                    </a>
32135                                                                                                                                    </div>
32136                                <a class="product-item-link" href="https://meiner.de/fmv_de/kritik-der-digitalisierung-17366">
32137                    Kritik der Digitalisierung                </a>
32138                            </div>
32139
32140            <div x-data="initEditionText_39968()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
32141                <!-- Marketing short text -->
32142                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
32143                </div>
32144            </div>
32145
32146                            <div class="py-1 grid  mb-4 ">
32147                    
32148                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":39968,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":39968,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2RlL2RpZS1zYWNoZS1kZXItbG9naWs~","childProducts":{"47023":"1","47057":"1","47058":"1"},"childProductsAlertStatus":{"47023":"0","47057":"0","47058":"0"},"indexMapping":{"163:15":47023,"163:8":47057,"163:9":47058},"availabilityMessages":{"47023":"Lieferbar innerhalb von 3-5 Tagen","47057":"Download sofort  verf\u00fcgbar","47058":"Download sofort  verf\u00fcgbar"},"openAccess":{"39968":{"status":0},"47023":{"status":0},"47057":{"status":0},"47058":{"status":0}}},"availabilityMessages":{"47023":"Lieferbar innerhalb von 3-5 Tagen","47057":"Download sofort  verf\u00fcgbar","47058":"Download sofort  verf\u00fcgbar"},"openAccess":{"39968":{"status":0},"47023":{"status":0},"47057":{"status":0},"47058":{"status":0}}}'>
32149        <template x-if="containerVisible">
32150                            <!-- Popup Trigger -->
32151                <div>
32152                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
32153                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
32154                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
32155  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
32156<title>bell</title></svg>
32157</span>
32158                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
32159
32160                    <!-- Popup Modal -->
32161                    <template x-if="showModal">
32162                        <template x-teleport=".page-wrapper">
32163                            <div x-cloak class="fixed inset-0 flex items-center justify-center
32164                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
32165                                <div class="relative bg-white rounded-lg shadow-xl
32166                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
32167                                    <div class="p-6">
32168                                        <!-- Subscription Form for Popup -->
32169                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
32170                                            <input name="form_key" type="hidden" value="YDP9RAeVFUo72arn">
32171                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
32172                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
32173
32174                                            <div class="flex flex-col gap-3">
32175                                                <div class="flex-grow grow">
32176                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
32177                                                        shadow-xs focus:outline-none focus:outline-hidden
32178                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
32179                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
32180                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
32181                                                </div>
32182                                                <input type="hidden" name="product_id" :value="currentProductId">
32183                                                <input type="hidden" name="type" value="email">
32184
32185                                                                                                    <input type="hidden" name="parent_id" value="4130">
32186                                                
32187                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvZm12X2RlL2RpZS1zYWNoZS1kZXItbG9naWs~">
32188
32189                                                <div class="amxnotif_guest_action">
32190                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
32191                                                        rounded-md focus:outline-none
32192                                                        focus:outline-hidden focus:ring-2
32193                                                        focus:ring-offset-2 disabled:opacity-50
32194                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
32195                                                        Benachrichtigen                                                    </button>
32196                                                </div>
32197                                            </div>
32198
32199                                                                                            <div class="flex items-start pt-2">
32200                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
32201                                                        text-blue-600 border-gray-300 rounded-sm">
32202                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
32203                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
32204                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
32205                                                </div>
32206                                                                                    </form>
32207                                    </div>
32208
32209                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
32210                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
32211                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
32212  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
32213<title>x</title></svg>
32214                                    </button>
32215                                </div>
32216                            </div>
32217                        </template>
32218                    </template>
32219                </div>
32220                    </template>
32221    </div>
32222
32223<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_39968" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":39968,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2RlL2RpZS1zYWNoZS1kZXItbG9naWs~","childProducts":{"47023":"1","47057":"1","47058":"1"},"childProductsAlertStatus":{"47023":"0","47057":"0","47058":"0"},"indexMapping":"{\u0022163:15\u0022:47023,\u0022163:8\u0022:47057,\u0022163:9\u0022:47058}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":39968,"availabilityMessages":{"47023":"Lieferbar innerhalb von 3-5 Tagen","47057":"Download sofort  verf\u00fcgbar","47058":"Download sofort  verf\u00fcgbar"},"openAccess":{"39968":{"status":0},"47023":{"status":0},"47057":{"status":0},"47058":{"status":0}}}'>
32224    
32225    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
32226        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
32227        <span x-html="optionsLabelText"></span>
32228    </p>
32229</div>                </div>
32230            
32231                                
32231<script>
32232        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
32233            try {
32234                const attributes = (config && config.attributes) ? config.attributes : null;
32235                if (!attributes) return [];
32236                let attr = null;
32237                if (Array.isArray(attributes)) {
32238                    for (let i = 0; i < attributes.length; i++) {
32239                        const a = attributes[i];
32240                        if (a && a.id == attrId) {
32241                            attr = a;
32242                            break;
32243                        }
32244                    }
32245                } else {
32246                    attr = attributes[attrId];
32247                }
32248                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
32249            } catch (e) {
32250                return [];
32251            }
32252        };
32253
32254        function initConfigurableSwatchOptions_39968() {
32255            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["47023"]},{"id":"8","label":"PDF","products":["47057"]},{"id":"9","label":"EPUB","products":["47058"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"47023":{"baseOldPrice":{"amount":18.598129841121},"oldPrice":{"amount":19.9},"basePrice":{"amount":18.598129841121},"finalPrice":{"amount":19.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47057":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":14.009344794393},"finalPrice":{"amount":14.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47058":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":14.009344794393},"finalPrice":{"amount":14.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":12.596637655462},"finalPrice":{"amount":14.99},"isApproxPrice":null},"productId":"39968","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"47023":{"163":"15"},"47057":{"163":"8"},"47058":{"163":"9"}},"salable":{"163":{"15":["47023"],"8":["47057"],"9":["47058"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"47023":"005190","47057":"005191","47058":"005192"},"output":{"47023":"Kartoniert","47057":"PDF","47058":"EPUB"},"original_name":{"47023":"","47057":"","47058":""},"openaccess_license_link":{"47023":"","47057":"","47058":""},"openaccess_license_name":{"47023":"","47057":"","47058":""},"openaccess_external_link":{"47023":"","47057":"","47058":""},"gpsr_safety_info":{"47023":"","47057":"","47058":""},"description":{"47023":"\u203aDigitalisierung\u2039 ist in aller Munde: Ihre mangelhafte Umsetzung wird ebenso angemahnt, wie vor ihren Folgen gewarnt wird. Das neue Buch von Daniel Martin Feige zeigt, dass die mit der Digitalisierung verbundenen Technologien weder neutrale noch unschuldige Mittel zu beliebigen Zwecken sind und soziale Medien keine Orte des Diskurses. Es weist nach, dass wir Begriffe wie Geist, Denken und Handeln KI-Systemen nicht sinnvoll zuschreiben k\u00f6nnen und entsprechende Diskurse einer Umarbeitung von Begriffen dienen, die wir eigentlich nur auf Menschen anwenden k\u00f6nnen.<br\/><br\/>Feige entwickelt seine Kritik an der Datifizierung unseres gesellschaftlichen Lebens in drei Schritten: aus technikphilosophischer, anthropologischer und kunstphilosophischer Perspektive. Dabei macht er plausibel, dass Kunst unter den Bedingungen der Digitalisierung eine kritische Rolle erf\u00fcllen kann und dass wir auf umstrittene Begriffe wie Autonomie und selbst Genie nicht verzichten k\u00f6nnen.<br\/><br\/>Sein Buch bietet zum ersten Mal den systematischen Entwurf einer kritischen Theorie der Digitalisierung. Dass sich vor dem Hintergrund seiner Diagnose sowohl Analysen, die die Digitalisierung bis in die Vor- und Fr\u00fchgeschichte verl\u00e4ngern, als auch Diskurse, die der K\u00fcnstlichen Intelligenz die F\u00e4higkeit zu handeln und zu denken zusprechen, als h\u00f6c
32255hst problematisch erweisen, zeigt Feige in seinem differenziert argumentierenden Essay.","47057":"\u203aDigitalisierung\u2039 ist in aller Munde: Ihre mangelhafte Umsetzung wird ebenso angemahnt, wie vor ihren Folgen gewarnt wird. Das neue Buch von Daniel Martin Feige zeigt, dass die mit der Digitalisierung verbundenen Technologien weder neutrale noch unschuldige Mittel zu beliebigen Zwecken sind und soziale Medien keine Orte des Diskurses. Es weist nach, dass wir Begriffe wie Geist, Denken und Handeln KI-Systemen nicht sinnvoll zuschreiben k\u00f6nnen und entsprechende Diskurse einer Umarbeitung von Begriffen dienen, die wir eigentlich nur auf Menschen anwenden k\u00f6nnen.<br\/><br\/>Feige entwickelt seine Kritik an der Datifizierung unseres gesellschaftlichen Lebens in drei Schritten: aus technikphilosophischer, anthropologischer und kunstphilosophischer Perspektive. Dabei macht er plausibel, dass Kunst unter den Bedingungen der Digitalisierung eine kritische Rolle erf\u00fcllen kann und dass wir auf umstrittene Begriffe wie Autonomie und selbst Genie nicht verzichten k\u00f6nnen.<br\/><br\/>Sein Buch bietet zum ersten Mal den systematischen Entwurf einer kritischen Theorie der Digitalisierung. Dass sich vor dem Hintergrund seiner Diagnose sowohl Analysen, die die Digitalisierung bis in die Vor- und Fr\u00fchgeschichte verl\u00e4ngern, als auch Diskurse, die der K\u00fcnstlichen Intelligenz die F\u00e4higkeit zu handeln und zu denken zusprechen, als h\u00f6chst problematisch erweisen, zeigt Feige in seinem differenziert argumentierenden Essay.","47058":"\u203aDigitalisierung\u2039 ist in aller Munde: Ihre mangelhafte Umsetzung wird ebenso angemahnt, wie vor ihren Folgen gewarnt wird. Das neue Buch von Daniel Martin Feige zeigt, dass die mit der Digitalisierung verbundenen Technologien weder neutrale noch unschuldige Mittel zu beliebigen Zwecken sind und soziale Medien keine Orte des Diskurses. Es weist nach, dass wir Begriffe wie Geist, Denken und Handeln KI-Systemen nicht sinnvoll zuschreiben k\u00f6nnen und entsprechende Diskurse einer Umarbeitung von Begriffen dienen, die wir eigentlich nur auf Menschen anwenden k\u00f6nnen.<br\/><br\/>Feige entwickelt seine Kritik an der Datifizierung unseres gesellschaftlichen Lebens in drei Schritten: aus technikphilosophischer, anthropologischer und kunstphilosophischer Perspektive. Dabei macht er plausibel, dass Kunst unter den Bedingungen der Digitalisierung eine kritische Rolle erf\u00fcllen kann und dass wir auf umstrittene Begriffe wie Autonomie und selbst Genie nicht verzichten k\u00f6nnen.<br\/><br\/>Sein Buch bietet zum ersten Mal den systematischen Entwurf einer kritischen Theorie der Digitalisierung. Dass sich vor dem Hintergrund seiner Diagnose sowohl Analysen, die die Digitalisierung bis in die Vor- und Fr\u00fchgeschichte verl\u00e4ngern, als auch Diskurse, die der K\u00fcnstlichen Intelligenz die F\u00e4higkeit zu handeln und zu denken zusprechen, als h\u00f6chst problematisch erweisen, zeigt Feige in seinem differenziert argumentierenden Essay."},"doi":{"47023":"","47057":"10.28937\/978-3-7873-5191-6","47058":""},"isbn":{"47023":"978-3-7873-5190-9","47057":"978-3-7873-5191-6","47058":"978-3-7873-5192-3"},"marketing_short_text":{"47023":"","47057":"","47058":""},"recension_text":{"47023":"<div class=\"reviews\">\r\n<div class=\"review\">\u203aKritik der Digitalisierung\u2039 ist eine wichtige und philosophisch fundierte Auseinandersetzung mit den Technologien, Konzepten und Begriffen, die unser Leben heute pr\u00e4gen. Wer dieses Buch gelesen hat, wird \u00fcber \u203aDigitalisierung\u2039 oder \u203ak\u00fcnstliche Intelligenz\u2039 sicher pr\u00e4ziser denken und sprechen k\u00f6nnen als vor der Lekt\u00fcre.<\/div>\r\n<div class=\"source\"><\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Daniel Martin Feige zeigt mit seinem Essay \u203aKritik der Digitalisierung\u2039 gekonnt M\u00f6glichkeiten der Reaktualisierung der \u00e4lteren kritischen Theorie zur Analyse des Digitalzeitalters auf.\n<\/div>\r\n<div class=\"source\">Dr. Marcel Remme, f\u00fcr lehrerbibliothek.de, 2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Feige bietet eine gr\u00fcndliche und systematische Darstellung.<\/div>\r\n<div class=\"source\">Thomas Gro\u00df in zeitzeichen 08\/2025<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Feige gelingt es, die Tiefe philosophischen Nachdenkens f\u00fcr den KI-Diskurs zu erschlie\u00dfen, ohne bereits den Anspruch zu erheben, sie ganz au
32255szuloten. Er zeigt, was m\u00f6glich ist, wenn man die philosophische Tradition in Anspruch nimmt und \u00fcber reine Schlagworte und eine blo\u00df politische Bewertung der Digitalisierung hinauskommt.<\/div>\r\n<div class=\"source\">Marc P\u00fcschel in Junge Welt vom 29.07.2025<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Dieses Buch zeigt sehr anschaulich, warum digitale Systeme nur etwas Nachgebautes sind. Warum sie das, was menschliche Vernunft leisten kann, eben nicht leisten, auch nicht die sogenannte K\u00fcnstliche Intelligenz. Und dass es deshalb fatal ist, wenn wir uns der Logik des Digitalen unterwerfen. [\u2026] Das ist die Pointe dieses spannenden Buchs von Daniel Martin Feige, seine \u203aKritik der Digitalisierung\u2039: Nicht dass der Mensch digitale Technik nutzt, ist das Problem. Sondern dass er zugleich beginnt, die eigene Vernunft auszuschalten.<\/div>\r\n<div class=\"source\">Wilm H\u00fcffer auf SWR Kultur<\/div>\r\n<\/div>","47057":"<div class=\"reviews\">\r\n<div class=\"review\">\u203aKritik der Digitalisierung\u2039 ist eine wichtige und philosophisch fundierte Auseinandersetzung mit den Technologien, Konzepten und Begriffen, die unser Leben heute pr\u00e4gen. Wer dieses Buch gelesen hat, wird \u00fcber \u203aDigitalisierung\u2039 oder \u203ak\u00fcnstliche Intelligenz\u2039 sicher pr\u00e4ziser denken und sprechen k\u00f6nnen als vor der Lekt\u00fcre.<\/div>\r\n<div class=\"source\"><\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Daniel Martin Feige zeigt mit seinem Essay \u203aKritik der Digitalisierung\u2039 gekonnt M\u00f6glichkeiten der Reaktualisierung der \u00e4lteren kritischen Theorie zur Analyse des Digitalzeitalters auf.\n<\/div>\r\n<div class=\"source\">Dr. Marcel Remme, f\u00fcr lehrerbibliothek.de, 2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Feige bietet eine gr\u00fcndliche und systematische Darstellung.<\/div>\r\n<div class=\"source\">Thomas Gro\u00df in zeitzeichen 08\/2025<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Feige gelingt es, die Tiefe philosophischen Nachdenkens f\u00fcr den KI-Diskurs zu erschlie\u00dfen, ohne bereits den Anspruch zu erheben, sie ganz auszuloten. Er zeigt, was m\u00f6glich ist, wenn man die philosophische Tradition in Anspruch nimmt und \u00fcber reine Schlagworte und eine blo\u00df politische Bewertung der Digitalisierung hinauskommt.<\/div>\r\n<div class=\"source\">Marc P\u00fcschel in Junge Welt vom 29.07.2025<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Dieses Buch zeigt sehr anschaulich, warum digitale Systeme nur etwas Nachgebautes sind. Warum sie das, was menschliche Vernunft leisten kann, eben nicht leisten, auch nicht die sogenannte K\u00fcnstliche Intelligenz. Und dass es deshalb fatal ist, wenn wir uns der Logik des Digitalen unterwerfen. [\u2026] Das ist die Pointe dieses spannenden Buchs von Daniel Martin Feige, seine \u203aKritik der Digitalisierung\u2039: Nicht dass der Mensch digitale Technik nutzt, ist das Problem. Sondern dass er zugleich beginnt, die eigene Vernunft auszuschalten.<\/div>\r\n<div class=\"source\">Wilm H\u00fcffer auf SWR Kultur<\/div>\r\n<\/div>","47058":"<div class=\"reviews\">\r\n<div class=\"review\">\u203aKritik der Digitalisierung\u2039 ist eine wichtige und philosophisch fundierte Auseinandersetzung mit den Technologien, Konzepten und Begriffen, die unser Leben heute pr\u00e4gen. Wer dieses Buch gelesen hat, wird \u00fcber \u203aDigitalisierung\u2039 oder \u203ak\u00fcnstliche Intelligenz\u2039 sicher pr\u00e4ziser denken und sprechen k\u00f6nnen als vor der Lekt\u00fcre.<\/div>\r\n<div class=\"source\"><\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Daniel Martin Feige zeigt mit seinem Essay \u203aKritik der Digitalisierung\u2039 gekonnt M\u00f6glichkeiten der Reaktualisierung der \u00e4lteren kritischen Theorie zur Analyse des Digitalzeitalters auf.\n<\/div>\r\n<div class=\"source\">Dr. Marcel Remme, f\u00fcr lehrerbibliothek.de, 2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Feige bietet eine gr\u00fcndliche und systematische Darstellung.<\/div>\r\n<div class=\"source\">Thomas Gro\u00df in zeitzeichen 08\/2025<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Feige gelingt es, die Tiefe philosophischen Nachdenkens f\u00fcr den KI-Diskurs zu erschlie\u00dfen, ohne bereits den Anspruch zu erheben, sie ganz au
32255szuloten. Er zeigt, was m\u00f6glich ist, wenn man die philosophische Tradition in Anspruch nimmt und \u00fcber reine Schlagworte und eine blo\u00df politische Bewertung der Digitalisierung hinauskommt.<\/div>\r\n<div class=\"source\">Marc P\u00fcschel in Junge Welt vom 29.07.2025<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Dieses Buch zeigt sehr anschaulich, warum digitale Systeme nur etwas Nachgebautes sind. Warum sie das, was menschliche Vernunft leisten kann, eben nicht leisten, auch nicht die sogenannte K\u00fcnstliche Intelligenz. Und dass es deshalb fatal ist, wenn wir uns der Logik des Digitalen unterwerfen. [\u2026] Das ist die Pointe dieses spannenden Buchs von Daniel Martin Feige, seine \u203aKritik der Digitalisierung\u2039: Nicht dass der Mensch digitale Technik nutzt, ist das Problem. Sondern dass er zugleich beginnt, die eigene Vernunft auszuschalten.<\/div>\r\n<div class=\"source\">Wilm H\u00fcffer auf SWR Kultur<\/div>\r\n<\/div>"},"language":{"47023":"","47057":"","47058":""},"cover":{"47023":"Kartoniert","47057":"","47058":""},"pages":{"47023":"186 Seiten","47057":"186 Seiten","47058":"186 Seiten"},"edition":{"47023":"2., geringf\u00fcgig korrigierte Auflage","47057":"2., geringf\u00fcgig korrigierte Auflage","47058":"2., geringf\u00fcgig korrigierte Auflage"},"pod":{"47023":"Nein","47057":"Nein","47058":"Nein"},"copyright_year":{"47023":"","47057":"","47058":""},"vlb_tix_link":{"47023":"https:\/\/neu.vlbtix.de\/products\/9783787351909?type=gtin","47057":"","47058":""},"defaultValues":{"163":"15"}};
32256            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
32257
32258            if (typeof window.amxnotif_wrap_attributes === 'function') {
32259                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
32260                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
32261            }
32262
32263            const configurableOptionsComponent = initConfigurableOptions(
32264                '39968',
32265                config
32266            );
32267            const swatchOptionsComponent = initSwatchOptions(
32268                swatchConfig
32269            );
32270
32271            // DWS - Configurable product preselect start
32272            const confProdPreSelect = () => {
32273                return {
32274                    preselectQuerystringItems() {
32275                        var data = {"id":"47023","output":"15"};
32276                        const urlQueryParams = new URLSearchParams(window.location.search);
32277
32278                                                this.$nextTick(() => {
32279                            setTimeout(() => {
32280                                const rootEl = this.$root || this.$el;
32281                                if (!rootEl) return;
32282
32283                                const applySelection = (attrCode, attrValue) => {
32284                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
32285
32286                                    const attributes = Object.values(this.optionConfig.attributes || {});
32287                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
32288
32289                                    if (targetAttr) {
32290                                        const attrId = String(targetAttr.id);
32291                                        const optionVal = String(attrValue);
32292
32293                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
32294
32295                                        if (inputEl) {
32296                                                                                        inputEl.click();
32297                                            inputEl.dispatchEvent(new Event('change', {
32298                                                bubbles: true
32299                                            }));
32300                                        } else {
32301                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
32302                                            if (selectEl) {
32303                                                selectEl.value = optionVal;
32304                                                selectEl.dispatchEvent(new Event('change', {
32305                                                    bubbles: true
32306                                                }));
32307                                            }
32308                                        }
32309
32310                                                                                this.changeOption(attrId, optionVal, false);
32311                                    }
32312                                };
32313
32314                                                                if (data && typeof data === 'object') {
32315                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
32316                                }
32317
32318                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
32319                                    if (attribute && attribute.code) {
32320                                        let optionValue = urlQueryParams.get(attribute.code);
32321                                        if (optionValue) {
32322                                            let optionId = false;
32323                                            const attributes = Object.values(this.optionConfig.attributes || {});
32324                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
32325
32326                                            let found = false;
32327                                            Object.values(targetAttr.options).map(option => {
32328                                                if (found === false && option.label === optionValue) {
32329                                                    optionId = option.id;
32330                                                    found = true;
32331                                                }
32332                                            });
32333
32334                                            const attrId = String(targetAttr.id);
32335                                            let optionVal = String(optionValue);
32336                                            if (found) {
32337                                                optionVal = String(optionId);
32338                                            }
32339
32340                                            applySelection(attribute.code, optionVal);
32341                                        }
32342                                    }
32343                                });
32344                            }, 100);
32345                        });
32346                    }
32347                }
32348            };
32349            // DWS - Configurable product preselect end
32350
32351            const result = Object.assign(
32352                configurableOptionsComponent,
32353                swatchOptionsComponent, {
32354                    productId: '39968',
32355                    productIndex: 0,
32356                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
32357                    showSwatches: false,
32358                    precalcOptions: {},
32359                    originalInit: configurableOptionsComponent.init,
32360                    init() {
32361                        try {
32362                            this.precalcOptions = {};
32363                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
32364                            this.preselectQuerystringItems();
32365                            if (Array.isArray(attrSource)) {
32366                                attrSource.forEach(attr => {
32367                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
32368                                });
32369                            } else if (attrSource && typeof attrSource === 'object') {
32370                                Object.keys(attrSource).forEach(id => {
32371                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
32372                                });
32373                            }
32374                        } catch (e) {
32375                            console.error('Pre-calc error:', e);
32376                        }
32377
32378                        if (typeof this.originalInit === 'function') {
32379                            this.originalInit();
32380                        }
32381
32382                        try {
32383                            this.initShowSwatchesIntersect();
32384                        } catch (e) {
32385                            console.error('intersect error:', e);
32386                        }
32387                    },
32388
32389                    updateGallery() {
32390                        if (!this.productIndex) return;
32391
32392                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
32393                                method: 'GET',
32394                                headers: {
32395                                    'Content-Type': 'application/json',
32396                                    'X-Requested-With': 'XMLHttpRequest'
32397                                }
32398                            })
32399                            .then(response => response.json())
32400                            .then(data => {
32401                                if (data && data.medium) {
32402                                    window.dispatchEvent(new CustomEvent("update-gallery-39968", {
32403                                        detail: data.medium
32404                                    }));
32405                                }
32406                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
32407                    },
32408
32409
32410                    initShowSwatchesIntersect() {
32411                        const observer = new IntersectionObserver(entries => {
32412                            if (entries[0].isIntersecting) {
32413                                this.showSwatches = true;
32414                                observer.disconnect();
32415                            }
32416                        }, {
32417                            rootMargin: '512px'
32418                        });
32419                        observer.observe(this.$el);
32420                    },
32421                    getOptions(attrId) {
32422                        return this.precalcOptions[attrId] || [];
32423                    },
32424                    getOptionsByAttrId() {
32425                        return this.getOptions(this.$el.dataset.attributeId);
32426                    },
32427                    _getItemId() {
32428                        if (this.item && this.item.id) return this.item.id;
32429                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
32430                    },
32431                    getSwatchOptionHtmlId() {
32432                        const itemId = this._getItemId();
32433                        return itemId ? this.$id(`attribute-option-39968-${itemId}`) : '';
32434                    },
32435                    getSwatchOptionHtmlIdGroup() {
32436                        const itemId = this._getItemId();
32437                        return itemId ? [`attribute-option-39968-${itemId}`] : [];
32438                    },
32439                    getAttributeSwatchData(attributeId) {
32440                        const data = Object.assign({}, this.swatchConfig[attributeId]);
32441                        if (data['additional_data']) {
32442                            try {
32443                                data['details'] = JSON.parse(data['additional_data']);
32444                            } catch (e) {
32445                                data['details'] = {};
32446                            }
32447                        }
32448                        return data;
32449                    },
32450                    getSwatchType(attributeId, optionId) {
32451                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
32452                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
32453                        }
32454                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
32455                            this.swatchConfig[attributeId].details.swatch_input_type :
32456                            "empty";
32457                        if (type === 'visual') {
32458                            const config = this.swatchConfig[attributeId];
32459                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
32460                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
32461                            }
32462                            // Fallback to first option type
32463                            for (const oId in config) {
32464                                if (config[oId] && typeof config[oId].type !== 'undefined') {
32465                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
32466                                }
32467                            }
32468                        }
32469                        return type;
32470                    },
32471                    mapSwatchTypeNumberToTypeCode(type) {
32472                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
32473                    },
32474                    isTextSwatch() {
32475                        const itemId = this._getItemId();
32476                        if (!this.$el || !itemId) return false;
32477                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
32478                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
32479                    },
32480
32481                    getSwatchText() {
32482                        const itemId = this._getItemId();
32483                        if (this.item) return this.item.label || '';
32484                        if (!this.$el || !itemId) return '';
32485                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
32486                        const options = attrId ? this.getOptions(attrId) : [];
32487                        const opt = options.find(o => o.id == itemId);
32488                        return opt ? opt.label : '';
32489                    },
32490                    getSwatchBackgroundStyle() {
32491                        const itemId = this._getItemId();
32492                        if (!this.$el || !itemId) return '';
32493                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
32494                        if (!attrId) return '';
32495                        const type = this.getSwatchType(attrId, itemId);
32496                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
32497                            this.swatchConfig[attrId][itemId] :
32498                            null;
32499                        if (!swatchData) return '';
32500                        if (type === "color") return 'background-color:' + swatchData.value;
32501                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
32502                        return '';
32503                    },
32504                    swatchOptionClasses() {
32505                        const itemId = this._getItemId();
32506                        if (!this.$el || !itemId) return {};
32507                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
32508                        return {
32509                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
32510                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
32511                            'w-6 h-6': !this.isTextSwatch()
32512                        }
32513                    },
32514
32515                    onFocusSwatchItem() {
32516                        const itemId = this._getItemId();
32517                        if (itemId) this.focusedLabel = itemId;
32518                    },
32519                    onChangeOption() {
32520                        const itemId = this._getItemId();
32521                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
32522                        if (attrId && itemId) this.changeOption(attrId, itemId);
32523                    },
32524                    changeOption(attributeId, value) {
32525                        if (value === '') {
32526                            return;
32527                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
32528                        } else {
32529                            this.selectedValues[attributeId] = value;
32530                        }
32531
32532                        this.findSimpleIndex();
32533                        this.findAllowedAttributeOptions();
32534                        this.updatePrices();
32535                        this.updateGallery();
32536
32537                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
32538                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
32539
32540                        const eventDetail = {
32541                            productId: this.productId,
32542                            optionId: attributeId,
32543                            value: value,
32544                            productIndex: this.productIndex || 0,
32545                            selectedValues: this.selectedValues,
32546                            candidates: candidates,
32547                            sourceElement: this.$el
32548                        };
32549
32550                        // Dispatch for Amasty
32551                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
32552                            detail: eventDetail
32553                        }));
32554
32555                        // Dispatch for Hyva listing
32556                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
32557                            detail: eventDetail
32558                        }));
32559                    },
32560
32561
32562                    clearOptionIfActive() {
32563                        const itemId = this._getItemId();
32564                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
32565                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
32566                            this.changeOption(attrId, '');
32567
32568                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
32569                            if (!input && this.$el?.querySelector) {
32570                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
32571                            }
32572                            if (!input && this.$el?.closest) {
32573                                const root = this.$el.closest('[data-product-id]') || this.$el;
32574                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
32575                            }
32576                            if (input) {
32577                                input.checked = false;
32578                            }
32579                        }
32580                    },
32581                    get optionIsEnabled() {
32582                        const itemId = this._getItemId();
32583                        if (!this.$el || !itemId) return true;
32584                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
32585                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
32586                        return !!allowedOptions.find(opt => opt.id == itemId);
32587                    },
32588                    get isSelected() {
32589                        const itemId = this._getItemId();
32590                        if (!this.$el || !itemId) return false;
32591                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
32592                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
32593                    },
32594                    get isSwatchRequired() {
32595                        if (!this.$el) return false;
32596                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
32597                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
32598                    },
32599                    focusedLabel: false,
32600                    activeTooltipItem: false,
32601                    tooltipPositionElement: false,
32602                    setActiveTooltipItem() {
32603                        const itemId = this._getItemId();
32604                        if (!this.$el || !itemId) return;
32605                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
32606                        this.activeTooltipItem = {
32607                            attribute: attrId,
32608                            item: itemId,
32609                            index: 0
32610                        };
32611                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
32612                    },
32613                    unsetActiveTooltipItem() {
32614                        this.activeTooltipItem = false;
32615                    }
32616                },
32617                confProdPreSelect()
32618            );
32619
32620            if (result.optionConfig && result.optionConfig.attributes) {
32621                const attributes = result.optionConfig.attributes;
32622                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
32623                    let source = attributes;
32624                    if (Array.isArray(attributes)) {
32625                        source = {};
32626                        attributes.forEach(attr => {
32627                            if (attr && attr.id) source[attr.id] = attr;
32628                        });
32629                    }
32630                    const values = Object.values(source);
32631                    const wrapper = Object.assign(values, source);
32632                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
32633                        value: true,
32634                        enumerable: false
32635                    });
32636                    result.optionConfig.attributes = wrapper;
32637                }
32638            }
32639
32640            return result;
32641        }
32642
32643        window.addEventListener('alpine:init', () => {
32644            Alpine.data('initConfigurableSwatchOptions_39968', initConfigurableSwatchOptions_39968);
32645        }, {
32646            once: true
32647        });
32648    </script>
32648
32649    
32650    <div x-data="initConfigurableSwatchOptions_39968" x-defer="intersect">
32651        <div class="pagebuilder-home-hidden">
32652                                            
32653                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
32654                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
32655                        <template x-if="showSwatches">
32656                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-39968-163" role="radiogroup" aria-label="Einband">
32657                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
32658                                    <div :data-option-id="item.id" style="display: contents">
32659                                        <div x-id="getSwatchOptionHtmlIdGroup">
32660    <template x-if="optionIsEnabled">
32661        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
32661self="unsetActiveTooltipItem">
32662            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-39968-163">
32663            <div>
32664                <template x-if="isTextSwatch">
32665                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
32666                </template>
32667                <template x-if="!optionIsActive(163, item.id)">
32668                    <div>
32669                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
32670                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
32671                        </svg>
32672                    </div>
32673                </template>
32674            </div>
32675        </label>
32676    </template>
32677</div>                                    </div>
32678                                </template>
32679                            </div>
32680                        </template>
32681                    </div>
32682                </div>
32683                    </div>
32684    </div>
32685            
32686                                                <div class="meta py-4 pagebuilder-home-hidden">
32687                <div x-data="initMarketingShortText_39968()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
32688                    <!-- Marketing short text -->
32689                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
32690                    </div>
32691
32692                    <!-- Short description -->
32693                                                                <div class="short-description">
32694                            &rsaquo;Digitalisierung&lsaquo; ist in aller Munde: Ihre mangelhafte Umsetzung wird ebenso angemahnt, wie vor ihren Folgen gewarnt wird. Das neue Buch von Daniel Martin Feige zeigt, dass die mit der ...                            <a href="https://meiner.de/fmv_de/kritik-der-digitalisierung-17366" class="underline">mehr</a>
32695                        </div>
32696                                    </div>
32697
32698                <!-- Series  -->
32699                                    <div class="mb-1">
32700                        <span class="sr-only">Reihe:</span>
32701                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
32702                            <span>Blaue Reihe</span>
32703                        </a>
32704                                            </div>
32705                
32706                
32707                                                    <div class="mb-1">
32708                        <span x-data="initEditionText_39968()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
32709                            <!-- Marketing short text -->
32710                            <span class="edition-text" x-html="editionText"></span>&nbsp;2025, 186 Seiten                        </span>
32711                    </div>
32712                
32713                            </div>
32714            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
32715                
32716                <div class="justify-end" x-data="initPriceBox()" @update-prices-39968.window="updatePrice($event.detail);">
32717                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="39968" data-price-box="product-id-39968"><span class="normal-price">
32718    <span x-data x-id="['product\u002Dprice\u002D39968']" class="price-container price-final_price tax weee">
32719            <span class="price-label">Ab</span>
32720                <span class="approx-price">ca. </span>
32721        <span :id="$id('product\u002Dprice\u002D39968')" data-price-amount="14.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">14,99&nbsp;&euro;</span></span>
32722        </span>
32723</span>
32724
32725
32726</div>                </div>
32727
32728                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
32729                                            <div class="open-access-container open-access-container-39968                    flex mt-4 ml-auto sm:mt-0 hidden">
32730                            <div class="text-gray-700">
32731                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
32732                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
32733                                        Kostenlos online lesen                                    </a>
32734                                </button>
32735                            </div>
32736                        </div>
32737                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Kritik der Digitalisierung" aria-label="In den Warenkorb Kritik der Digitalisierung" data-addto="cart">
32738                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
32739  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
327390 014 0z"></path>
32740</svg>
32741                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
32742                                        In den Warenkorb                                    </span>
32743                                </button>
32744                                                                                                                    
32745<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(39968)" aria-label="Zur Wunschliste hinzuf&uuml;gen Kritik der Digitalisierung" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
32746    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
32747  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
32748</svg>
32749</button>
32750                                    </div>
32751            </div>
32752        </div>
32753        
32753<script>
32754            function initMarketingShortText_39968() {
32755                var marketingShortTextConfig = {};
32756                if (typeof window.initConfigurableSwatchOptions_39968 === "function") {
32757                    var fullConfig = window.initConfigurableSwatchOptions_39968().optionConfig
32758                    var marketingShortTextConfig = fullConfig.marketing_short_text;
32759                }
32760                return {
32761                    marketingShortText: '',
32762                    config: marketingShortTextConfig,
32763                    productId: '39968',
32764                    getMarketingShortText(detail) {
32765                        this.marketingShortText = detail.productIndex ?
32766                            this.config[detail.productIndex] :
32767                            null;
32768                    },
32769                    eventListeners: {
32770                        ['@listing-configurable-selection-changed.window'](event) {
32771                            if (this.productId == event.detail.productId) {
32772                                this.getMarketingShortText(event.detail);
32773                            }
32774
32775                        }
32776                    }
32777                }
32778            }
32779
32780            function initEditionText_39968() {
32781                var editionTextConfig = {};
32782                if (typeof window.initConfigurableSwatchOptions_39968 === "function") {
32783                    var fullConfig = window.initConfigurableSwatchOptions_39968().optionConfig
32784                    var editionTextConfig = fullConfig.edition;
32785                }
32786                return {
32787                    editionText: '',
32788                    config: editionTextConfig,
32789                    productId: '39968',
32790                    getEditionText(detail) {
32791                        this.editionText = detail.productIndex ?
32792                            this.config[detail.productIndex] :
32793                            null;
32794                    },
32795                    eventListeners: {
32796                        ['@listing-configurable-selection-changed.window'](event) {
32797                            if (this.productId == event.detail.productId) {
32798                                this.getEditionText(event.detail);
32799                            }
32800
32801                        }
32802                    }
32803                }
32804            }
32805        </script>
32805
32806                    </form>
32807                            
32808    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/43703/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk17423">
32809        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="43703">
32810                                    <a href="https://meiner.de/fmv_de/schockierende-ungleichheit-17423" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
32811            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-43703.window="$el.src = $event.detail" alt="Schockierende Ungleichheit" title="Schockierende Ungleichheit" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351893_1.jpg" :style="{
32812                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
32813                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
32814            }">
32815                    </a>
32816        <div class="product-info flex flex-col flex-grow ">
32817                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
32818                                    <div class="mb-2 text-sm text-gray-500 font-medium">
32819                                                                                    <a href="https://meiner.de/fmv_de/person/Wolfgang-Detel-3526/" class="mb-2">
32820                                    Wolfgang Detel                                                                    </a>
32821                                                                                                                                    </div>
32822                                <a class="product-item-link" href="https://meiner.de/fmv_de/schockierende-ungleichheit-17423">
32823                    Schockierende Ungleichheit                </a>
32824                            </div>
32825
32826            <div x-data="initEditionText_43703()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
32827                <!-- Marketing short text -->
32828                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
32829                </div>
32830            </div>
32831
32832                            <div class="py-1 grid  mb-4 ">
32833                    
32834                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":43703,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":43703,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46975":"1","46991":"1","46992":"1"},"childProductsAlertStatus":{"46975":"0","46991":"0","46992":"0"},"indexMapping":{"163:15":46975,"163:8":46991,"163:9":46992},"availabilityMessages":{"46975":"Lieferbar innerhalb von 3-5 Tagen","46991":"Download sofort  verf\u00fcgbar","46992":"Download sofort  verf\u00fcgbar"},"openAccess":{"43703":{"status":0},"46975":{"status":0},"46991":{"status":0},"46992":{"status":0}}},"availabilityMessages":{"46975":"Lieferbar innerhalb von 3-5 Tagen","46991":"Download sofort  verf\u00fcgbar","46992":"Download sofort  verf\u00fcgbar"},"openAccess":{"43703":{"status":0},"46975":{"status":0},"46991":{"status":0},"46992":{"status":0}}}'>
32835        <template x-if="containerVisible">
32836                            <!-- Popup Trigger -->
32837                <div>
32838                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
32839                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
32840                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
32841  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
32842<title>bell</title></svg>
32843</span>
32844                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
32845
32846                    <!-- Popup Modal -->
32847                    <template x-if="showModal">
32848                        <template x-teleport=".page-wrapper">
32849                            <div x-cloak class="fixed inset-0 flex items-center justify-center
32850                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
32851                                <div class="relative bg-white rounded-lg shadow-xl
32852                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
32853                                    <div class="p-6">
32854                                        <!-- Subscription Form for Popup -->
32855                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
32856                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
32857                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
32858                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
32859
32860                                            <div class="flex flex-col gap-3">
32861                                                <div class="flex-grow grow">
32862                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
32863                                                        shadow-xs focus:outline-none focus:outline-hidden
32864                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
32865                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
32866                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
32867                                                </div>
32868                                                <input type="hidden" name="product_id" :value="currentProductId">
32869                                                <input type="hidden" name="type" value="email">
32870
32871                                                
32872                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
32873
32874                                                <div class="amxnotif_guest_action">
32875                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
32876                                                        rounded-md focus:outline-none
32877                                                        focus:outline-hidden focus:ring-2
32878                                                        focus:ring-offset-2 disabled:opacity-50
32879                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
32880                                                        Benachrichtigen                                                    </button>
32881                                                </div>
32882                                            </div>
32883
32884                                                                                            <div class="flex items-start pt-2">
32885                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
32886                                                        text-blue-600 border-gray-300 rounded-sm">
32887                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
32888                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
32889                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
32890                                                </div>
32891                                                                                    </form>
32892                                    </div>
32893
32894                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
32895                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
32896                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
32897  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
32898<title>x</title></svg>
32899                                    </button>
32900                                </div>
32901                            </div>
32902                        </template>
32903                    </template>
32904                </div>
32905                    </template>
32906    </div>
32907
32908<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_43703" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":43703,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46975":"
329081","46991":"1","46992":"1"},"childProductsAlertStatus":{"46975":"0","46991":"0","46992":"0"},"indexMapping":"{\u0022163:15\u0022:46975,\u0022163:8\u0022:46991,\u0022163:9\u0022:46992}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":43703,"availabilityMessages":{"46975":"Lieferbar innerhalb von 3-5 Tagen","46991":"Download sofort  verf\u00fcgbar","46992":"Download sofort  verf\u00fcgbar"},"openAccess":{"43703":{"status":0},"46975":{"status":0},"46991":{"status":0},"46992":{"status":0}}}'>
32909    
32910    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
32911        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
32912        <span x-html="optionsLabelText"></span>
32913    </p>
32914</div>                </div>
32915            
32916                                
32916<script>
32917        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
32918            try {
32919                const attributes = (config && config.attributes) ? config.attributes : null;
32920                if (!attributes) return [];
32921                let attr = null;
32922                if (Array.isArray(attributes)) {
32923                    for (let i = 0; i < attributes.length; i++) {
32924                        const a = attributes[i];
32925                        if (a && a.id == attrId) {
32926                            attr = a;
32927                            break;
32928                        }
32929                    }
32930                } else {
32931                    attr = attributes[attrId];
32932                }
32933                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
32934            } catch (e) {
32935                return [];
32936            }
32937        };
32938
32939        function initConfigurableSwatchOptions_43703() {
32940            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46975"]},{"id":"8","label":"PDF","products":["46991"]},{"id":"9","label":"EPUB","products":["46992"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46975":{"baseOldPrice":{"amount":27.943924233645},"oldPrice":{"amount":29.9},"basePrice":{"amount":27.943924233645},"finalPrice":{"amount":29.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46991":{"baseOldPrice":{"amount":20.551400869159},"oldPrice":{"amount":21.99},"basePrice":{"amount":20.551400869159},"finalPrice":{"amount":21.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46992":{"baseOldPrice":{"amount":20.551400869159},"oldPrice":{"amount":21.99},"basePrice":{"amount":20.551400869159},"finalPrice":{"amount":21.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":20.551400869159},"oldPrice":{"amount":21.99},"basePrice":{"amount":18.478990596639},"finalPrice":{"amount":21.99},"isApproxPrice":null},"productId":"43703","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46975":{"163":"15"},"46991":{"163":"8"},"46992":{"163":"9"}},"salable":{"163":{"15":["46975"],"8":["46991"],"9":["46992"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"46975":"005187","46991":"005188","46992":"005189"},"output":{"46975":"Kartoniert","46991":"PDF","46992":"EPUB"},"original_name":{"46975":"","46991":"","46992":""},"openaccess_license_link":{"46975":"","46991":"","46992":""},"openaccess_license_name":{"46975":"","46991":"","46992":""},"openaccess_external_link":{"46975":"","46991":"","46992":""},"gpsr_safety_info":{"46975":"","46991":"","46992":""},"description":{"46975":"In vielen demokratischen Staaten brennt die H\u00fctte, auch in Deutschland. Rechtspopulismus, Faschismus, alarmierende soziale Ungleichheit, prek\u00e4re Arbeitsverh\u00e4ltnisse, wachsende Staatsschulden, Abbau sozialer und kultureller Errungenschaften bedr\u00e4ngen fast \u00fcberall die Demokratie.<br\/><br\/>In seinem engagierten politischen Essay nimmt der Philosoph Wolfgang Detel eine der zentralen Ursachen f\u00fcr diese Entwicklung in den Fokus, n\u00e4mlich die extreme und weiter zunehmende \u00f6konomische Ungleichheit. Und er schl\u00e4gt einen Weg vor, der neben den \u00fcblichen L\u00f6sungen der Staatsschuldenkrise \u2013 weitere Schuldenaufnahme und Abbau von Sozialleistungen \u2013 zu erheblichen Mehreinnahmen f\u00fchren w\u00fcrde: die finanziell st\u00e4rkere Beteiligung der Ultra-Reichen. Damit st\u00fcnden deutlich mehr Mittel etwa f\u00fcr Klimapolitik, Landesverteidigung, Integration von Migranten, Bildung und Milderung der Armut zur Verf\u00fcgung.<br\/><br\/>In sechs Kapiteln analysiert Detel Geschichte und Gegenwart der \u00f6konomischen Ungleichheit und wie die neoliberale Transformation, unterst\u00fctzt durch eine philosophisch-\u00f6konomische Ideologie, diese Ungleichheit in den letzten Jahrzehnten angetrieben hat. In einem weiteren Teil wird eine F\u00fclle 
32940konkreter steuerlicher Ma\u00dfnahmen vorgestellt, die geeignet w\u00e4ren, die \u00f6konomische Ungleichheit in Deutschland erheblich abzumildern. Abschlie\u00dfend werden mit Bezug u. a. auf Axel Honneth, Michael Sandel und Thomas Piketty Entw\u00fcrfe zur nachhaltigen Transformation der neoliberalen Marktwirtschaft skizziert.","46991":"In vielen demokratischen Staaten brennt die H\u00fctte, auch in Deutschland. Rechtspopulismus, Faschismus, alarmierende soziale Ungleichheit, prek\u00e4re Arbeitsverh\u00e4ltnisse, wachsende Staatsschulden, Abbau sozialer und kultureller Errungenschaften bedr\u00e4ngen fast \u00fcberall die Demokratie.<br\/><br\/>In seinem engagierten politischen Essay nimmt der Philosoph Wolfgang Detel eine der zentralen Ursachen f\u00fcr diese Entwicklung in den Fokus, n\u00e4mlich die extreme und weiter zunehmende \u00f6konomische Ungleichheit. Und er schl\u00e4gt einen Weg vor, der neben den \u00fcblichen L\u00f6sungen der Staatsschuldenkrise \u2013 weitere Schuldenaufnahme und Abbau von Sozialleistungen \u2013 zu erheblichen Mehreinnahmen f\u00fchren w\u00fcrde: die finanziell st\u00e4rkere Beteiligung der Ultra-Reichen. Damit st\u00fcnden deutlich mehr Mittel etwa f\u00fcr Klimapolitik, Landesverteidigung, Integration von Migranten, Bildung und Milderung der Armut zur Verf\u00fcgung.<br\/><br\/>In sechs Kapiteln analysiert Detel Geschichte und Gegenwart der \u00f6konomischen Ungleichheit und wie die neoliberale Transformation, unterst\u00fctzt durch eine philosophisch-\u00f6konomische Ideologie, diese Ungleichheit in den letzten Jahrzehnten angetrieben hat. In einem weiteren Teil wird eine F\u00fclle konkreter steuerlicher Ma\u00dfnahmen vorgestellt, die geeignet w\u00e4ren, die \u00f6konomische Ungleichheit in Deutschland erheblich abzumildern. Abschlie\u00dfend werden mit Bezug u. a. auf Axel Honneth, Michael Sandel und Thomas Piketty Entw\u00fcrfe zur nachhaltigen Transformation der neoliberalen Marktwirtschaft skizziert.","46992":"In vielen demokratischen Staaten brennt die H\u00fctte, auch in Deutschland. Rechtspopulismus, Faschismus, alarmierende soziale Ungleichheit, prek\u00e4re Arbeitsverh\u00e4ltnisse, wachsende Staatsschulden, Abbau sozialer und kultureller Errungenschaften bedr\u00e4ngen fast \u00fcberall die Demokratie.<br\/><br\/>In seinem engagierten politischen Essay nimmt der Philosoph Wolfgang Detel eine der zentralen Ursachen f\u00fcr diese Entwicklung in den Fokus, n\u00e4mlich die extreme und weiter zunehmende \u00f6konomische Ungleichheit. Und er schl\u00e4gt einen Weg vor, der neben den \u00fcblichen L\u00f6sungen der Staatsschuldenkrise \u2013 weitere Schuldenaufnahme und Abbau von Sozialleistungen \u2013 zu erheblichen Mehreinnahmen f\u00fchren w\u00fcrde: die finanziell st\u00e4rkere Beteiligung der Ultra-Reichen. Damit st\u00fcnden deutlich mehr Mittel etwa f\u00fcr Klimapolitik, Landesverteidigung, Integration von Migranten, Bildung und Milderung der Armut zur Verf\u00fcgung.<br\/><br\/>In sechs Kapiteln analysiert Detel Geschichte und Gegenwart der \u00f6konomischen Ungleichheit und wie die neoliberale Transformation, unterst\u00fctzt durch eine philosophisch-\u00f6konomische Ideologie, diese Ungleichheit in den letzten Jahrzehnten angetrieben hat. In einem weiteren Teil wird eine F\u00fclle konkreter steuerlicher Ma\u00dfnahmen vorgestellt, die geeignet w\u00e4ren, die \u00f6konomische Ungleichheit in Deutschland erheblich abzumildern. Abschlie\u00dfend werden mit Bezug u. a. auf Axel Honneth, Michael Sandel und Thomas Piketty Entw\u00fcrfe zur nachhaltigen Transformation der neoliberalen Marktwirtschaft skizziert."},"doi":{"46975":"","46991":"10.28937\/978-3-7873-5188-6","46992":""},"isbn":{"46975":"978-3-7873-5187-9","46991":"978-3-7873-5188-6","46992":"978-3-7873-5189-3"},"marketing_short_text":{"46975":"","46991":"","46992":""},"recension_text":{"46975":"<div class=\"reviews\">\r\n<div class=\"review\">Wer sich mit der Faktenresistenz der aktuellen Sozialstaatsdebatte nicht abfinden will, ist mit [diesem] Buch bestens bedient.<\/div>\r\n<div class=\"source\">Joachim Maiworm in BIG Business Crime, Juli 2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">
32940[Detels] an Aristoteles gesch\u00e4rfter Blick verbindet philosophische Reflexion mit konkreten politischen Vorschl\u00e4gen, die sich auf wissenschaftliche Studien st\u00fctzen. Besonders sein Zehn-Punkte-Programm hebt das Buch \u00fcber reine Gesellschaftskritik hinaus. [...] Ein anregender und erhellender Beitrag.<\/div>\r\n<div class=\"source\">Franz Segbers in Publik-Forum 08\/2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Warum drohen so viele Demokratien zu kollabieren? Der Philosoph Wolfgang Detel macht die wachsende Ungleichheit als zentrale Ursache aus. Eine Analyse der neoliberalen Wurzeln der Misere \u2013 und ein Pl\u00e4doyer, durch eine st\u00e4rkere Besteuerung der Ultrareichen Demokratie, Sozialstaat und Zukunftsinvestitionen zu sichern.<\/div>\r\n<div class=\"source\">Platz 6 der Sachbuch-Bestenliste Februar 2026 von <a href=\"https:\/\/bilder.deutschlandfunk.de\/4d\/b8\/db\/7a\/4db8db7a-e5ed-438f-8873-d4bfa1815b5f\/sachbuchbestenliste-die-besten-sachbuecher-im-januar-2026-100.pdf\">Dlf Kultur<\/a>, <a href=\"https:\/\/www.zdf.de\/video\/reportagen\/aspekte-106\/bestenliste-104\">ZDF <\/a>und <a href=\"https:\/\/www.zeit.de\/kultur\/literatur\/2026-01\/sachbuch-bestenliste-literatur-buchempfehlungen-februar-2026\">ZEIT<\/a>\u200b\r\n<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Dieses Buch ist ein gro\u00dfer Wurf. Es bietet einen exzellenten \u00dcberblick \u00fcber die gegenw\u00e4rtige Debatte zu Ursachen und Folgen der Ungleichheit und verbindet philosophische Reflexion mit \u00f6konomischer und politischer Analyse. Das gelingt in einer Sprache, die allgemeinverst\u00e4ndlich bleibt, ohne banal zu werden. Ein Buch f\u00fcr jedermann also.<\/div>\r\n<div class=\"source\">Michael Hesse in der Frankfurter Rundschau am 17.03.2026<\/div>\r\n<\/div>","46991":"<div class=\"reviews\">\r\n<div class=\"review\">Wer sich mit der Faktenresistenz der aktuellen Sozialstaatsdebatte nicht abfinden will, ist mit [diesem] Buch bestens bedient.<\/div>\r\n<div class=\"source\">Joachim Maiworm in BIG Business Crime, Juli 2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">[Detels] an Aristoteles gesch\u00e4rfter Blick verbindet philosophische Reflexion mit konkreten politischen Vorschl\u00e4gen, die sich auf wissenschaftliche Studien st\u00fctzen. Besonders sein Zehn-Punkte-Programm hebt das Buch \u00fcber reine Gesellschaftskritik hinaus. [...] Ein anregender und erhellender Beitrag.<\/div>\r\n<div class=\"source\">Franz Segbers in Publik-Forum 08\/2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Warum drohen so viele Demokratien zu kollabieren? Der Philosoph Wolfgang Detel macht die wachsende Ungleichheit als zentrale Ursache aus. Eine Analyse der neoliberalen Wurzeln der Misere \u2013 und ein Pl\u00e4doyer, durch eine st\u00e4rkere Besteuerung der Ultrareichen Demokratie, Sozialstaat und Zukunftsinvestitionen zu sichern.<\/div>\r\n<div class=\"source\">Platz 6 der Sachbuch-Bestenliste Februar 2026 von <a href=\"https:\/\/bilder.deutschlandfunk.de\/4d\/b8\/db\/7a\/4db8db7a-e5ed-438f-8873-d4bfa1815b5f\/sachbuchbestenliste-die-besten-sachbuecher-im-januar-2026-100.pdf\">Dlf Kultur<\/a>, <a href=\"https:\/\/www.zdf.de\/video\/reportagen\/aspekte-106\/bestenliste-104\">ZDF <\/a>und <a href=\"https:\/\/www.zeit.de\/kultur\/literatur\/2026-01\/sachbuch-bestenliste-literatur-buchempfehlungen-februar-2026\">ZEIT<\/a>\u200b\r\n<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Dieses Buch ist ein gro\u00dfer Wurf. Es bietet einen exzellenten \u00dcberblick \u00fcber die gegenw\u00e4rtige Debatte zu Ursachen und Folgen der Ungleichheit und verbindet philosophische Reflexion mit \u00f6konomischer und politischer Analyse. Das gelingt in einer Sprache, die allgemeinverst\u00e4ndlich bleibt, ohne banal zu werden. Ein Buch f\u00fcr jedermann also.<\/div>\r\n<div class=\"source\">Michael Hesse in der Frankfurter Rundschau am 17.03.2026<\/div>\r\n<\/div>","46992":"<div class=\"reviews\">\r\n<div class=\"review\">Wer sich mit der Faktenresistenz der aktuellen Sozialstaatsdebatte nicht abfinden will, ist mit [diesem] Buch bestens bedient.<\/div>\r\n<div class=\"source\">Joachim Maiworm in BIG Business Crime, Juli 2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">
32940[Detels] an Aristoteles gesch\u00e4rfter Blick verbindet philosophische Reflexion mit konkreten politischen Vorschl\u00e4gen, die sich auf wissenschaftliche Studien st\u00fctzen. Besonders sein Zehn-Punkte-Programm hebt das Buch \u00fcber reine Gesellschaftskritik hinaus. [...] Ein anregender und erhellender Beitrag.<\/div>\r\n<div class=\"source\">Franz Segbers in Publik-Forum 08\/2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Warum drohen so viele Demokratien zu kollabieren? Der Philosoph Wolfgang Detel macht die wachsende Ungleichheit als zentrale Ursache aus. Eine Analyse der neoliberalen Wurzeln der Misere \u2013 und ein Pl\u00e4doyer, durch eine st\u00e4rkere Besteuerung der Ultrareichen Demokratie, Sozialstaat und Zukunftsinvestitionen zu sichern.<\/div>\r\n<div class=\"source\">Platz 6 der Sachbuch-Bestenliste Februar 2026 von <a href=\"https:\/\/bilder.deutschlandfunk.de\/4d\/b8\/db\/7a\/4db8db7a-e5ed-438f-8873-d4bfa1815b5f\/sachbuchbestenliste-die-besten-sachbuecher-im-januar-2026-100.pdf\">Dlf Kultur<\/a>, <a href=\"https:\/\/www.zdf.de\/video\/reportagen\/aspekte-106\/bestenliste-104\">ZDF <\/a>und <a href=\"https:\/\/www.zeit.de\/kultur\/literatur\/2026-01\/sachbuch-bestenliste-literatur-buchempfehlungen-februar-2026\">ZEIT<\/a>\u200b\r\n<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Dieses Buch ist ein gro\u00dfer Wurf. Es bietet einen exzellenten \u00dcberblick \u00fcber die gegenw\u00e4rtige Debatte zu Ursachen und Folgen der Ungleichheit und verbindet philosophische Reflexion mit \u00f6konomischer und politischer Analyse. Das gelingt in einer Sprache, die allgemeinverst\u00e4ndlich bleibt, ohne banal zu werden. Ein Buch f\u00fcr jedermann also.<\/div>\r\n<div class=\"source\">Michael Hesse in der Frankfurter Rundschau am 17.03.2026<\/div>\r\n<\/div>"},"language":{"46975":"","46991":"","46992":""},"cover":{"46975":"Kartoniert","46991":"","46992":""},"pages":{"46975":"412 Seiten","46991":"420 Seiten","46992":"420 Seiten"},"edition":{"46975":"2., um ein Nachwort erg\u00e4nzte Auflage","46991":"2., um ein Nachwort erg\u00e4nzte Auflage","46992":"2., um ein Nachwort erg\u00e4nzte Auflage"},"pod":{"46975":"Nein","46991":"Nein","46992":"Nein"},"copyright_year":{"46975":"","46991":"","46992":""},"vlb_tix_link":{"46975":"https:\/\/neu.vlbtix.de\/products\/9783787351879?type=gtin","46991":"","46992":""},"defaultValues":{"163":"15"}};
32941            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
32942
32943            if (typeof window.amxnotif_wrap_attributes === 'function') {
32944                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
32945                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
32946            }
32947
32948            const configurableOptionsComponent = initConfigurableOptions(
32949                '43703',
32950                config
32951            );
32952            const swatchOptionsComponent = initSwatchOptions(
32953                swatchConfig
32954            );
32955
32956            // DWS - Configurable product preselect start
32957            const confProdPreSelect = () => {
32958                return {
32959                    preselectQuerystringItems() {
32960                        var data = {"id":"46975","output":"15"};
32961                        const urlQueryParams = new URLSearchParams(window.location.search);
32962
32963                                                this.$nextTick(() => {
32964                            setTimeout(() => {
32965                                const rootEl = this.$root || this.$el;
32966                                if (!rootEl) return;
32967
32968                                const applySelection = (attrCode, attrValue) => {
32969                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
32970
32971                                    const attributes = Object.values(this.optionConfig.attributes || {});
32972                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
32973
32974                                    if (targetAttr) {
32975                                        const attrId = String(targetAttr.id);
32976                                        const optionVal = String(attrValue);
32977
32978                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
32979
32980                                        if (inputEl) {
32981                                                                                        inputEl.click();
32982                                            inputEl.dispatchEvent(new Event('change', {
32983                                                bubbles: true
32984                                            }));
32985                                        } else {
32986                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
32987                                            if (selectEl) {
32988                                                selectEl.value = optionVal;
32989                                                selectEl.dispatchEvent(new Event('change', {
32990                                                    bubbles: true
32991                                                }));
32992                                            }
32993                                        }
32994
32995                                                                                this.changeOption(attrId, optionVal, false);
32996                                    }
32997                                };
32998
32999                                                                if (data && typeof data === 'object') {
33000                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
33001                                }
33002
33003                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
33004                                    if (attribute && attribute.code) {
33005                                        let optionValue = urlQueryParams.get(attribute.code);
33006                                        if (optionValue) {
33007                                            let optionId = false;
33008                                            const attributes = Object.values(this.optionConfig.attributes || {});
33009                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
33010
33011                                            let found = false;
33012                                            Object.values(targetAttr.options).map(option => {
33013                                                if (found === false && option.label === optionValue) {
33014                                                    optionId = option.id;
33015                                                    found = true;
33016                                                }
33017                                            });
33018
33019                                            const attrId = String(targetAttr.id);
33020                                            let optionVal = String(optionValue);
33021                                            if (found) {
33022                                                optionVal = String(optionId);
33023                                            }
33024
33025                                            applySelection(attribute.code, optionVal);
33026                                        }
33027                                    }
33028                                });
33029                            }, 100);
33030                        });
33031                    }
33032                }
33033            };
33034            // DWS - Configurable product preselect end
33035
33036            const result = Object.assign(
33037                configurableOptionsComponent,
33038                swatchOptionsComponent, {
33039                    productId: '43703',
33040                    productIndex: 0,
33041                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
33042                    showSwatches: false,
33043                    precalcOptions: {},
33044                    originalInit: configurableOptionsComponent.init,
33045                    init() {
33046                        try {
33047                            this.precalcOptions = {};
33048                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
33049                            this.preselectQuerystringItems();
33050                            if (Array.isArray(attrSource)) {
33051                                attrSource.forEach(attr => {
33052                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
33053                                });
33054                            } else if (attrSource && typeof attrSource === 'object') {
33055                                Object.keys(attrSource).forEach(id => {
33056                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
33057                                });
33058                            }
33059                        } catch (e) {
33060                            console.error('Pre-calc error:', e);
33061                        }
33062
33063                        if (typeof this.originalInit === 'function') {
33064                            this.originalInit();
33065                        }
33066
33067                        try {
33068                            this.initShowSwatchesIntersect();
33069                        } catch (e) {
33070                            console.error('intersect error:', e);
33071                        }
33072                    },
33073
33074                    updateGallery() {
33075                        if (!this.productIndex) return;
33076
33077                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
33078                                method: 'GET',
33079                                headers: {
33080                                    'Content-Type': 'application/json',
33081                                    'X-Requested-With': 'XMLHttpRequest'
33082                                }
33083                            })
33084                            .then(response => response.json())
33085                            .then(data => {
33086                                if (data && data.medium) {
33087                                    window.dispatchEvent(new CustomEvent("update-gallery-43703", {
33088                                        detail: data.medium
33089                                    }));
33090                                }
33091                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
33092                    },
33093
33094
33095                    initShowSwatchesIntersect() {
33096                        const observer = new IntersectionObserver(entries => {
33097                            if (entries[0].isIntersecting) {
33098                                this.showSwatches = true;
33099                                observer.disconnect();
33100                            }
33101                        }, {
33102                            rootMargin: '512px'
33103                        });
33104                        observer.observe(this.$el);
33105                    },
33106                    getOptions(attrId) {
33107                        return this.precalcOptions[attrId] || [];
33108                    },
33109                    getOptionsByAttrId() {
33110                        return this.getOptions(this.$el.dataset.attributeId);
33111                    },
33112                    _getItemId() {
33113                        if (this.item && this.item.id) return this.item.id;
33114                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
33115                    },
33116                    getSwatchOptionHtmlId() {
33117                        const itemId = this._getItemId();
33118                        return itemId ? this.$id(`attribute-option-43703-${itemId}`) : '';
33119                    },
33120                    getSwatchOptionHtmlIdGroup() {
33121                        const itemId = this._getItemId();
33122                        return itemId ? [`attribute-option-43703-${itemId}`] : [];
33123                    },
33124                    getAttributeSwatchData(attributeId) {
33125                        const data = Object.assign({}, this.swatchConfig[attributeId]);
33126                        if (data['additional_data']) {
33127                            try {
33128                                data['details'] = JSON.parse(data['additional_data']);
33129                            } catch (e) {
33130                                data['details'] = {};
33131                            }
33132                        }
33133                        return data;
33134                    },
33135                    getSwatchType(attributeId, optionId) {
33136                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
33137                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
33138                        }
33139                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
33140                            this.swatchConfig[attributeId].details.swatch_input_type :
33141                            "empty";
33142                        if (type === 'visual') {
33143                            const config = this.swatchConfig[attributeId];
33144                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
33145                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
33146                            }
33147                            // Fallback to first option type
33148                            for (const oId in config) {
33149                                if (config[oId] && typeof config[oId].type !== 'undefined') {
33150                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
33151                                }
33152                            }
33153                        }
33154                        return type;
33155                    },
33156                    mapSwatchTypeNumberToTypeCode(type) {
33157                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
33158                    },
33159                    isTextSwatch() {
33160                        const itemId = this._getItemId();
33161                        if (!this.$el || !itemId) return false;
33162                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
33163                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
33164                    },
33165
33166                    getSwatchText() {
33167                        const itemId = this._getItemId();
33168                        if (this.item) return this.item.label || '';
33169                        if (!this.$el || !itemId) return '';
33170                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
33171                        const options = attrId ? this.getOptions(attrId) : [];
33172                        const opt = options.find(o => o.id == itemId);
33173                        return opt ? opt.label : '';
33174                    },
33175                    getSwatchBackgroundStyle() {
33176                        const itemId = this._getItemId();
33177                        if (!this.$el || !itemId) return '';
33178                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
33179                        if (!attrId) return '';
33180                        const type = this.getSwatchType(attrId, itemId);
33181                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
33182                            this.swatchConfig[attrId][itemId] :
33183                            null;
33184                        if (!swatchData) return '';
33185                        if (type === "color") return 'background-color:' + swatchData.value;
33186                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
33187                        return '';
33188                    },
33189                    swatchOptionClasses() {
33190                        const itemId = this._getItemId();
33191                        if (!this.$el || !itemId) return {};
33192                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
33193                        return {
33194                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
33195                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
33196                            'w-6 h-6': !this.isTextSwatch()
33197                        }
33198                    },
33199
33200                    onFocusSwatchItem() {
33201                        const itemId = this._getItemId();
33202                        if (itemId) this.focusedLabel = itemId;
33203                    },
33204                    onChangeOption() {
33205                        const itemId = this._getItemId();
33206                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
33207                        if (attrId && itemId) this.changeOption(attrId, itemId);
33208                    },
33209                    changeOption(attributeId, value) {
33210                        if (value === '') {
33211                            return;
33212                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
33213                        } else {
33214                            this.selectedValues[attributeId] = value;
33215                        }
33216
33217                        this.findSimpleIndex();
33218                        this.findAllowedAttributeOptions();
33219                        this.updatePrices();
33220                        this.updateGallery();
33221
33222                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
33223                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
33224
33225                        const eventDetail = {
33226                            productId: this.productId,
33227                            optionId: attributeId,
33228                            value: value,
33229                            productIndex: this.productIndex || 0,
33230                            selectedValues: this.selectedValues,
33231                            candidates: candidates,
33232                            sourceElement: this.$el
33233                        };
33234
33235                        // Dispatch for Amasty
33236                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
33237                            detail: eventDetail
33238                        }));
33239
33240                        // Dispatch for Hyva listing
33241                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
33242                            detail: eventDetail
33243                        }));
33244                    },
33245
33246
33247                    clearOptionIfActive() {
33248                        const itemId = this._getItemId();
33249                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
33250                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
33251                            this.changeOption(attrId, '');
33252
33253                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
33254                            if (!input && this.$el?.querySelector) {
33255                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
33256                            }
33257                            if (!input && this.$el?.closest) {
33258                                const root = this.$el.closest('[data-product-id]') || this.$el;
33259                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
33260                            }
33261                            if (input) {
33262                                input.checked = false;
33263                            }
33264                        }
33265                    },
33266                    get optionIsEnabled() {
33267                        const itemId = this._getItemId();
33268                        if (!this.$el || !itemId) return true;
33269                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
33270                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
33271                        return !!allowedOptions.find(opt => opt.id == itemId);
33272                    },
33273                    get isSelected() {
33274                        const itemId = this._getItemId();
33275                        if (!this.$el || !itemId) return false;
33276                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
33277                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
33278                    },
33279                    get isSwatchRequired() {
33280                        if (!this.$el) return false;
33281                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
33282                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
33283                    },
33284                    focusedLabel: false,
33285                    activeTooltipItem: false,
33286                    tooltipPositionElement: false,
33287                    setActiveTooltipItem() {
33288                        const itemId = this._getItemId();
33289                        if (!this.$el || !itemId) return;
33290                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
33291                        this.activeTooltipItem = {
33292                            attribute: attrId,
33293                            item: itemId,
33294                            index: 0
33295                        };
33296                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
33297                    },
33298                    unsetActiveTooltipItem() {
33299                        this.activeTooltipItem = false;
33300                    }
33301                },
33302                confProdPreSelect()
33303            );
33304
33305            if (result.optionConfig && result.optionConfig.attributes) {
33306                const attributes = result.optionConfig.attributes;
33307                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
33308                    let source = attributes;
33309                    if (Array.isArray(attributes)) {
33310                        source = {};
33311                        attributes.forEach(attr => {
33312                            if (attr && attr.id) source[attr.id] = attr;
33313                        });
33314                    }
33315                    const values = Object.values(source);
33316                    const wrapper = Object.assign(values, source);
33317                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
33318                        value: true,
33319                        enumerable: false
33320                    });
33321                    result.optionConfig.attributes = wrapper;
33322                }
33323            }
33324
33325            return result;
33326        }
33327
33328        window.addEventListener('alpine:init', () => {
33329            Alpine.data('initConfigurableSwatchOptions_43703', initConfigurableSwatchOptions_43703);
33330        }, {
33331            once: true
33332        });
33333    </script>
33333
33334    
33335    <div x-data="initConfigurableSwatchOptions_43703" x-defer="intersect">
33336        <div class="pagebuilder-home-hidden">
33337                                            
33338                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
33339                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
33340                        <template x-if="showSwatches">
33341                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-43703-163" role="radiogroup" aria-label="Einband">
33342                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
33343                                    <div :data-option-id="item.id" style="display: contents">
33344                                        <div x-id="getSwatchOptionHtmlIdGroup">
33345    <template x-if="optionIsEnabled">
33346        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
33346self="unsetActiveTooltipItem">
33347            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-43703-163">
33348            <div>
33349                <template x-if="isTextSwatch">
33350                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
33351                </template>
33352                <template x-if="!optionIsActive(163, item.id)">
33353                    <div>
33354                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
33355                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
33356                        </svg>
33357                    </div>
33358                </template>
33359            </div>
33360        </label>
33361    </template>
33362</div>                                    </div>
33363                                </template>
33364                            </div>
33365                        </template>
33366                    </div>
33367                </div>
33368                    </div>
33369    </div>
33370            
33371                                                <div class="meta py-4 pagebuilder-home-hidden">
33372                <div x-data="initMarketingShortText_43703()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
33373                    <!-- Marketing short text -->
33374                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
33375                    </div>
33376
33377                    <!-- Short description -->
33378                                                                <div class="short-description">
33379                            In vielen demokratischen Staaten brennt die H&uuml;tte, auch in Deutschland. Rechtspopulismus, Faschismus, alarmierende soziale Ungleichheit, prek&auml;re Arbeitsverh&auml;ltnisse, wachsende Staatsschulden, ...                            <a href="https://meiner.de/fmv_de/schockierende-ungleichheit-17423" class="underline">mehr</a>
33380                        </div>
33381                                    </div>
33382
33383                <!-- Series  -->
33384                                    <div class="mb-1">
33385                        <span class="sr-only">Reihe:</span>
33386                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
33387                            <span>Blaue Reihe</span>
33388                        </a>
33389                                            </div>
33390                
33391                
33392                                                    <div class="mb-1">
33393                        <span x-data="initEditionText_43703()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
33394                            <!-- Marketing short text -->
33395                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 412 Seiten                        </span>
33396                    </div>
33397                
33398                            </div>
33399            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
33400                
33401                <div class="justify-end" x-data="initPriceBox()" @update-prices-43703.window="updatePrice($event.detail);">
33402                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="43703" data-price-box="product-id-43703"><span class="normal-price">
33403    <span x-data x-id="['product\u002Dprice\u002D43703']" class="price-container price-final_price tax weee">
33404            <span class="price-label">Ab</span>
33405                <span class="approx-price">ca. </span>
33406        <span :id="$id('product\u002Dprice\u002D43703')" data-price-amount="21.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">21,99&nbsp;&euro;</span></span>
33407        </span>
33408</span>
33409
33410
33411</div>                </div>
33412
33413                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
33414                                            <div class="open-access-container open-access-container-43703                    flex mt-4 ml-auto sm:mt-0 hidden">
33415                            <div class="text-gray-700">
33416                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
33417                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
33418                                        Kostenlos online lesen                                    </a>
33419                                </button>
33420                            </div>
33421                        </div>
33422                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Schockierende Ungleichheit" aria-label="In den Warenkorb Schockierende Ungleichheit" data-addto="cart">
33423                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
33424  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
334240 014 0z"></path>
33425</svg>
33426                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
33427                                        In den Warenkorb                                    </span>
33428                                </button>
33429                                                                                                                    
33430<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(43703)" aria-label="Zur Wunschliste hinzuf&uuml;gen Schockierende Ungleichheit" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
33431    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
33432  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
33433</svg>
33434</button>
33435                                    </div>
33436            </div>
33437        </div>
33438        
33438<script>
33439            function initMarketingShortText_43703() {
33440                var marketingShortTextConfig = {};
33441                if (typeof window.initConfigurableSwatchOptions_43703 === "function") {
33442                    var fullConfig = window.initConfigurableSwatchOptions_43703().optionConfig
33443                    var marketingShortTextConfig = fullConfig.marketing_short_text;
33444                }
33445                return {
33446                    marketingShortText: '',
33447                    config: marketingShortTextConfig,
33448                    productId: '43703',
33449                    getMarketingShortText(detail) {
33450                        this.marketingShortText = detail.productIndex ?
33451                            this.config[detail.productIndex] :
33452                            null;
33453                    },
33454                    eventListeners: {
33455                        ['@listing-configurable-selection-changed.window'](event) {
33456                            if (this.productId == event.detail.productId) {
33457                                this.getMarketingShortText(event.detail);
33458                            }
33459
33460                        }
33461                    }
33462                }
33463            }
33464
33465            function initEditionText_43703() {
33466                var editionTextConfig = {};
33467                if (typeof window.initConfigurableSwatchOptions_43703 === "function") {
33468                    var fullConfig = window.initConfigurableSwatchOptions_43703().optionConfig
33469                    var editionTextConfig = fullConfig.edition;
33470                }
33471                return {
33472                    editionText: '',
33473                    config: editionTextConfig,
33474                    productId: '43703',
33475                    getEditionText(detail) {
33476                        this.editionText = detail.productIndex ?
33477                            this.config[detail.productIndex] :
33478                            null;
33479                    },
33480                    eventListeners: {
33481                        ['@listing-configurable-selection-changed.window'](event) {
33482                            if (this.productId == event.detail.productId) {
33483                                this.getEditionText(event.detail);
33484                            }
33485
33486                        }
33487                    }
33488                }
33489            }
33490        </script>
33490
33491                    </form>
33492                            
33493    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/46704/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21148">
33494        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="46704">
33495                                    <a href="https://meiner.de/fmv_de/ethik-der-beratung-21148" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
33496            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-46704.window="$el.src = $event.detail" alt="Ethik der Beratung" title="Ethik der Beratung" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787350605_1.jpg" :style="{
33497                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
33498                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
33499            }">
33500                    </a>
33501        <div class="product-info flex flex-col flex-grow ">
33502                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
33503                                    <div class="mb-2 text-sm text-gray-500 font-medium">
33504                                                                                    <a href="https://meiner.de/fmv_de/person/Rolf-Lachmann-21149/" class="mb-2">
33505                                    Rolf Lachmann                                                                    </a>
33506                                                                                                                                    </div>
33507                                <a class="product-item-link" href="https://meiner.de/fmv_de/ethik-der-beratung-21148">
33508                    Ethik der Beratung                </a>
33509                            </div>
33510
33511            <div x-data="initEditionText_46704()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
33512                <!-- Marketing short text -->
33513                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
33514                </div>
33515            </div>
33516
33517                            <div class="py-1 grid  mb-4 ">
33518                    
33519                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":46704,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":46704,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46498":"1","46764":"1","46765":"1"},"childProductsAlertStatus":{"46498":"0","46764":"0","46765":"0"},"indexMapping":{"163:15":46498,"163:8":46764,"163:9":46765},"availabilityMessages":{"46498":"Lieferbar innerhalb von 3-5 Tagen","46764":"Download sofort  verf\u00fcgbar","46765":"Download sofort  verf\u00fcgbar"},"openAccess":{"46704":{"status":0},"46498":{"status":0},"46764":{"status":0},"46765":{"status":0}}},"availabilityMessages":{"46498":"Lieferbar innerhalb von 3-5 Tagen","46764":"Download sofort  verf\u00fcgbar","46765":"Download sofort  verf\u00fcgbar"},"openAccess":{"46704":{"status":0},"46498":{"status":0},"46764":{"status":0},"46765":{"status":0}}}'>
33520        <template x-if="containerVisible">
33521                            <!-- Popup Trigger -->
33522                <div>
33523                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
33524                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
33525                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
33526  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
33527<title>bell</title></svg>
33528</span>
33529                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
33530
33531                    <!-- Popup Modal -->
33532                    <template x-if="showModal">
33533                        <template x-teleport=".page-wrapper">
33534                            <div x-cloak class="fixed inset-0 flex items-center justify-center
33535                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
33536                                <div class="relative bg-white rounded-lg shadow-xl
33537                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
33538                                    <div class="p-6">
33539                                        <!-- Subscription Form for Popup -->
33540                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
33541                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
33542                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
33543                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
33544
33545                                            <div class="flex flex-col gap-3">
33546                                                <div class="flex-grow grow">
33547                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
33548                                                        shadow-xs focus:outline-none focus:outline-hidden
33549                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
33550                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
33551                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
33552                                                </div>
33553                                                <input type="hidden" name="product_id" :value="currentProductId">
33554                                                <input type="hidden" name="type" value="email">
33555
33556                                                
33557                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
33558
33559                                                <div class="amxnotif_guest_action">
33560                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
33561                                                        rounded-md focus:outline-none
33562                                                        focus:outline-hidden focus:ring-2
33563                                                        focus:ring-offset-2 disabled:opacity-50
33564                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
33565                                                        Benachrichtigen                                                    </button>
33566                                                </div>
33567                                            </div>
33568
33569                                                                                            <div class="flex items-start pt-2">
33570                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
33571                                                        text-blue-600 border-gray-300 rounded-sm">
33572                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
33573                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
33574                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
33575                                                </div>
33576                                                                                    </form>
33577                                    </div>
33578
33579                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
33580                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
33581                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
33582  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
33583<title>x</title></svg>
33584                                    </button>
33585                                </div>
33586                            </div>
33587                        </template>
33588                    </template>
33589                </div>
33590                    </template>
33591    </div>
33592
33593<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_46704" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":46704,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46498":"1","46764":"1","46765":"1"},"childProductsAlertStatus":{"46498":"0","46764":"0","46765":"0"},"indexMapping":"{\u0022163:15\u0022:46498,\u0022163:8\u0022:46764,\u0022163:9\u0022:46765}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":46704,"availabilityMessages":{"46498":"Lieferbar innerhalb von 3-5 Tagen","46764":"Download sofort  verf\u00fcgbar","46765":"Download sofort  verf\u00fcgbar"},"openAccess":{"46704":{"status":0},"46498":{"status":0},"46764":{"status":0},"46765":{"status":0}}}'>
33594    
33595    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
33596        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
33597        <span x-html="optionsLabelText"></span>
33598    </p>
33599</div>                </div>
33600            
33601                                
33601<script>
33602        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
33603            try {
33604                const attributes = (config && config.attributes) ? config.attributes : null;
33605                if (!attributes) return [];
33606                let attr = null;
33607                if (Array.isArray(attributes)) {
33608                    for (let i = 0; i < attributes.length; i++) {
33609                        const a = attributes[i];
33610                        if (a && a.id == attrId) {
33611                            attr = a;
33612                            break;
33613                        }
33614                    }
33615                } else {
33616                    attr = attributes[attrId];
33617                }
33618                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
33619            } catch (e) {
33620                return [];
33621            }
33622        };
33623
33624        function initConfigurableSwatchOptions_46704() {
33625            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46498"]},{"id":"8","label":"PDF","products":["46764"]},{"id":"9","label":"EPUB","products":["46765"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46498":{"baseOldPrice":{"amount":27.943924233645},"oldPrice":{"amount":29.9},"basePrice":{"amount":27.943924233645},"finalPrice":{"amount":29.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46764":{"baseOldPrice":{"amount":20.551400869159},"oldPrice":{"amount":21.99},"basePrice":{"amount":20.551400869159},"finalPrice":{"amount":21.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46765":{"baseOldPrice":{"amount":20.551400869159},"oldPrice":{"amount":21.99},"basePrice":{"amount":20.551400869159},"finalPrice":{"amount":21.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":20.551400869159},"oldPrice":{"amount":21.99},"basePrice":{"amount":18.478990596639},"finalPrice":{"amount":21.99},"isApproxPrice":null},"productId":"46704","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46498":{"163":"15"},"46764":{"163":"8"},"46765":{"163":"9"}},"salable":{"163":{"15":["46498"],"8":["46764"],"9":["46765"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"46498":"005058","46764":"005059","46765":"005060"},"output":{"46498":"Kartoniert","46764":"PDF","46765":"EPUB"},"original_name":{"46498":"","46764":"","46765":""},"openaccess_license_link":{"46498":"","46764":"","46765":""},"openaccess_license_name":{"46498":"","46764":"","46765":""},"openaccess_external_link":{"46498":"","46764":"","46765":""},"gpsr_safety_info":{"46498":"","46764":"","46765":""},"description":{"46498":"Professionelle pers\u00f6nliche Beratungen sind heute nahezu allgegenw\u00e4rtig. Berater:innen sollten aber nicht nur konkrete Hilfestellung leisten, sondern auch ein Bewusstsein f\u00fcr die ethischen Fragen haben, die sich jeweils stellen. Hierf\u00fcr will dieses Buch eine Handreichung bieten.<br\/><br\/>Beinahe \u00fcberall gibt es mittlerweile ein enges Netz von Beratungseinrichtungen, angefangen von der Verbraucherberatung \u00fcber die Beratung zur Berufs- oder Studienwahl, die Schul- und Laufbahnberatung, die Ern\u00e4hrungs-, Gesundheits- und Suchtberatung, die Schuldner- und Verm\u00f6gensberatung bis hin zur Rechtsberatung. Dass in einer Beratungssituation auch ethische Dimensionen zum Tragen kommen, wird besonders deutlich, wenn man unter Ethik nicht lediglich die Summe moralischer Normen, sondern auch Haltungen versteht. Die Studie von Rolf Lachmann untersucht ausgehend von verschiedenen ethischen Grundpositionen die Leitmotive Vernunft, Hilfe, Macht und Freiheit und fasst die Beratung grundlegend als eine \u00bbRedepraxis der Befreiung\u00ab auf.<br\/><br\/><br\/><br\/>Ein Buch f\u00fcr alle, die ihre Beratungst\u00e4tigkeit philosophisch reflektieren m\u
3362500f6chten!","46764":"Professionelle pers\u00f6nliche Beratungen sind heute nahezu allgegenw\u00e4rtig. Berater:innen sollten aber nicht nur konkrete Hilfestellung leisten, sondern auch ein Bewusstsein f\u00fcr die ethischen Fragen haben, die sich jeweils stellen. Hierf\u00fcr will dieses Buch eine Handreichung bieten.<br\/><br\/>Beinahe \u00fcberall gibt es mittlerweile ein enges Netz von Beratungseinrichtungen, angefangen von der Verbraucherberatung \u00fcber die Beratung zur Berufs- oder Studienwahl, die Schul- und Laufbahnberatung, die Ern\u00e4hrungs-, Gesundheits- und Suchtberatung, die Schuldner- und Verm\u00f6gensberatung bis hin zur Rechtsberatung. Dass in einer Beratungssituation auch ethische Dimensionen zum Tragen kommen, wird besonders deutlich, wenn man unter Ethik nicht lediglich die Summe moralischer Normen, sondern auch Haltungen versteht. Die Studie von Rolf Lachmann untersucht ausgehend von verschiedenen ethischen Grundpositionen die Leitmotive Vernunft, Hilfe, Macht und Freiheit und fasst die Beratung grundlegend als eine \u00bbRedepraxis der Befreiung\u00ab auf.<br\/><br\/><br\/><br\/>Ein Buch f\u00fcr alle, die ihre Beratungst\u00e4tigkeit philosophisch reflektieren m\u00f6chten!","46765":"Professionelle pers\u00f6nliche Beratungen sind heute nahezu allgegenw\u00e4rtig. Berater:innen sollten aber nicht nur konkrete Hilfestellung leisten, sondern auch ein Bewusstsein f\u00fcr die ethischen Fragen haben, die sich jeweils stellen. Hierf\u00fcr will dieses Buch eine Handreichung bieten.<br\/><br\/>Beinahe \u00fcberall gibt es mittlerweile ein enges Netz von Beratungseinrichtungen, angefangen von der Verbraucherberatung \u00fcber die Beratung zur Berufs- oder Studienwahl, die Schul- und Laufbahnberatung, die Ern\u00e4hrungs-, Gesundheits- und Suchtberatung, die Schuldner- und Verm\u00f6gensberatung bis hin zur Rechtsberatung. Dass in einer Beratungssituation auch ethische Dimensionen zum Tragen kommen, wird besonders deutlich, wenn man unter Ethik nicht lediglich die Summe moralischer Normen, sondern auch Haltungen versteht. Die Studie von Rolf Lachmann untersucht ausgehend von verschiedenen ethischen Grundpositionen die Leitmotive Vernunft, Hilfe, Macht und Freiheit und fasst die Beratung grundlegend als eine \u00bbRedepraxis der Befreiung\u00ab auf.<br\/><br\/><br\/><br\/>Ein Buch f\u00fcr alle, die ihre Beratungst\u00e4tigkeit philosophisch reflektieren m\u00f6chten!"},"doi":{"46498":"","46764":"10.28937\/978-3-7873-5059-9","46765":""},"isbn":{"46498":"978-3-7873-5058-2","46764":"978-3-7873-5059-9","46765":"978-3-7873-5060-5"},"marketing_short_text":{"46498":"","46764":"","46765":""},"recension_text":{"46498":"","46764":"","46765":""},"language":{"46498":"","46764":"","46765":""},"cover":{"46498":"Kartoniert","46764":"","46765":""},"pages":{"46498":"299 Seiten","46764":"299 Seiten","46765":"299 Seiten"},"edition":{"46498":"","46764":"Unver\u00e4ndertes eBook der 1. Auflage von 2026","46765":"Unver\u00e4ndertes EPUB der 1. Auflage von 2026"},"pod":{"46498":"Nein","46764":"Nein","46765":"Nein"},"copyright_year":{"46498":"","46764":"","46765":""},"vlb_tix_link":{"46498":"https:\/\/neu.vlbtix.de\/products\/9783787350582?type=gtin","46764":"","46765":""},"defaultValues":{"163":"15"}};
33626            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
33627
33628            if (typeof window.amxnotif_wrap_attributes === 'function') {
33629                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
33630                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
33631            }
33632
33633            const configurableOptionsComponent = initConfigurableOptions(
33634                '46704',
33635                config
33636            );
33637            const swatchOptionsComponent = initSwatchOptions(
33638                swatchConfig
33639            );
33640
33641            // DWS - Configurable product preselect start
33642            const confProdPreSelect = () => {
33643                return {
33644                    preselectQuerystringItems() {
33645                        var data = {"id":"46498","output":"15"};
33646                        const urlQueryParams = new URLSearchParams(window.location.search);
33647
33648                                                this.$nextTick(() => {
33649                            setTimeout(() => {
33650                                const rootEl = this.$root || this.$el;
33651                                if (!rootEl) return;
33652
33653                                const applySelection = (attrCode, attrValue) => {
33654                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
33655
33656                                    const attributes = Object.values(this.optionConfig.attributes || {});
33657                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
33658
33659                                    if (targetAttr) {
33660                                        const attrId = String(targetAttr.id);
33661                                        const optionVal = String(attrValue);
33662
33663                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
33664
33665                                        if (inputEl) {
33666                                                                                        inputEl.click();
33667                                            inputEl.dispatchEvent(new Event('change', {
33668                                                bubbles: true
33669                                            }));
33670                                        } else {
33671                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
33672                                            if (selectEl) {
33673                                                selectEl.value = optionVal;
33674                                                selectEl.dispatchEvent(new Event('change', {
33675                                                    bubbles: true
33676                                                }));
33677                                            }
33678                                        }
33679
33680                                                                                this.changeOption(attrId, optionVal, false);
33681                                    }
33682                                };
33683
33684                                                                if (data && typeof data === 'object') {
33685                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
33686                                }
33687
33688                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
33689                                    if (attribute && attribute.code) {
33690                                        let optionValue = urlQueryParams.get(attribute.code);
33691                                        if (optionValue) {
33692                                            let optionId = false;
33693                                            const attributes = Object.values(this.optionConfig.attributes || {});
33694                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
33695
33696                                            let found = false;
33697                                            Object.values(targetAttr.options).map(option => {
33698                                                if (found === false && option.label === optionValue) {
33699                                                    optionId = option.id;
33700                                                    found = true;
33701                                                }
33702                                            });
33703
33704                                            const attrId = String(targetAttr.id);
33705                                            let optionVal = String(optionValue);
33706                                            if (found) {
33707                                                optionVal = String(optionId);
33708                                            }
33709
33710                                            applySelection(attribute.code, optionVal);
33711                                        }
33712                                    }
33713                                });
33714                            }, 100);
33715                        });
33716                    }
33717                }
33718            };
33719            // DWS - Configurable product preselect end
33720
33721            const result = Object.assign(
33722                configurableOptionsComponent,
33723                swatchOptionsComponent, {
33724                    productId: '46704',
33725                    productIndex: 0,
33726                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
33727                    showSwatches: false,
33728                    precalcOptions: {},
33729                    originalInit: configurableOptionsComponent.init,
33730                    init() {
33731                        try {
33732                            this.precalcOptions = {};
33733                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
33734                            this.preselectQuerystringItems();
33735                            if (Array.isArray(attrSource)) {
33736                                attrSource.forEach(attr => {
33737                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
33738                                });
33739                            } else if (attrSource && typeof attrSource === 'object') {
33740                                Object.keys(attrSource).forEach(id => {
33741                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
33742                                });
33743                            }
33744                        } catch (e) {
33745                            console.error('Pre-calc error:', e);
33746                        }
33747
33748                        if (typeof this.originalInit === 'function') {
33749                            this.originalInit();
33750                        }
33751
33752                        try {
33753                            this.initShowSwatchesIntersect();
33754                        } catch (e) {
33755                            console.error('intersect error:', e);
33756                        }
33757                    },
33758
33759                    updateGallery() {
33760                        if (!this.productIndex) return;
33761
33762                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
33763                                method: 'GET',
33764                                headers: {
33765                                    'Content-Type': 'application/json',
33766                                    'X-Requested-With': 'XMLHttpRequest'
33767                                }
33768                            })
33769                            .then(response => response.json())
33770                            .then(data => {
33771                                if (data && data.medium) {
33772                                    window.dispatchEvent(new CustomEvent("update-gallery-46704", {
33773                                        detail: data.medium
33774                                    }));
33775                                }
33776                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
33777                    },
33778
33779
33780                    initShowSwatchesIntersect() {
33781                        const observer = new IntersectionObserver(entries => {
33782                            if (entries[0].isIntersecting) {
33783                                this.showSwatches = true;
33784                                observer.disconnect();
33785                            }
33786                        }, {
33787                            rootMargin: '512px'
33788                        });
33789                        observer.observe(this.$el);
33790                    },
33791                    getOptions(attrId) {
33792                        return this.precalcOptions[attrId] || [];
33793                    },
33794                    getOptionsByAttrId() {
33795                        return this.getOptions(this.$el.dataset.attributeId);
33796                    },
33797                    _getItemId() {
33798                        if (this.item && this.item.id) return this.item.id;
33799                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
33800                    },
33801                    getSwatchOptionHtmlId() {
33802                        const itemId = this._getItemId();
33803                        return itemId ? this.$id(`attribute-option-46704-${itemId}`) : '';
33804                    },
33805                    getSwatchOptionHtmlIdGroup() {
33806                        const itemId = this._getItemId();
33807                        return itemId ? [`attribute-option-46704-${itemId}`] : [];
33808                    },
33809                    getAttributeSwatchData(attributeId) {
33810                        const data = Object.assign({}, this.swatchConfig[attributeId]);
33811                        if (data['additional_data']) {
33812                            try {
33813                                data['details'] = JSON.parse(data['additional_data']);
33814                            } catch (e) {
33815                                data['details'] = {};
33816                            }
33817                        }
33818                        return data;
33819                    },
33820                    getSwatchType(attributeId, optionId) {
33821                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
33822                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
33823                        }
33824                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
33825                            this.swatchConfig[attributeId].details.swatch_input_type :
33826                            "empty";
33827                        if (type === 'visual') {
33828                            const config = this.swatchConfig[attributeId];
33829                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
33830                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
33831                            }
33832                            // Fallback to first option type
33833                            for (const oId in config) {
33834                                if (config[oId] && typeof config[oId].type !== 'undefined') {
33835                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
33836                                }
33837                            }
33838                        }
33839                        return type;
33840                    },
33841                    mapSwatchTypeNumberToTypeCode(type) {
33842                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
33843                    },
33844                    isTextSwatch() {
33845                        const itemId = this._getItemId();
33846                        if (!this.$el || !itemId) return false;
33847                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
33848                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
33849                    },
33850
33851                    getSwatchText() {
33852                        const itemId = this._getItemId();
33853                        if (this.item) return this.item.label || '';
33854                        if (!this.$el || !itemId) return '';
33855                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
33856                        const options = attrId ? this.getOptions(attrId) : [];
33857                        const opt = options.find(o => o.id == itemId);
33858                        return opt ? opt.label : '';
33859                    },
33860                    getSwatchBackgroundStyle() {
33861                        const itemId = this._getItemId();
33862                        if (!this.$el || !itemId) return '';
33863                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
33864                        if (!attrId) return '';
33865                        const type = this.getSwatchType(attrId, itemId);
33866                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
33867                            this.swatchConfig[attrId][itemId] :
33868                            null;
33869                        if (!swatchData) return '';
33870                        if (type === "color") return 'background-color:' + swatchData.value;
33871                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
33872                        return '';
33873                    },
33874                    swatchOptionClasses() {
33875                        const itemId = this._getItemId();
33876                        if (!this.$el || !itemId) return {};
33877                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
33878                        return {
33879                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
33880                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
33881                            'w-6 h-6': !this.isTextSwatch()
33882                        }
33883                    },
33884
33885                    onFocusSwatchItem() {
33886                        const itemId = this._getItemId();
33887                        if (itemId) this.focusedLabel = itemId;
33888                    },
33889                    onChangeOption() {
33890                        const itemId = this._getItemId();
33891                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
33892                        if (attrId && itemId) this.changeOption(attrId, itemId);
33893                    },
33894                    changeOption(attributeId, value) {
33895                        if (value === '') {
33896                            return;
33897                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
33898                        } else {
33899                            this.selectedValues[attributeId] = value;
33900                        }
33901
33902                        this.findSimpleIndex();
33903                        this.findAllowedAttributeOptions();
33904                        this.updatePrices();
33905                        this.updateGallery();
33906
33907                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
33908                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
33909
33910                        const eventDetail = {
33911                            productId: this.productId,
33912                            optionId: attributeId,
33913                            value: value,
33914                            productIndex: this.productIndex || 0,
33915                            selectedValues: this.selectedValues,
33916                            candidates: candidates,
33917                            sourceElement: this.$el
33918                        };
33919
33920                        // Dispatch for Amasty
33921                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
33922                            detail: eventDetail
33923                        }));
33924
33925                        // Dispatch for Hyva listing
33926                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
33927                            detail: eventDetail
33928                        }));
33929                    },
33930
33931
33932                    clearOptionIfActive() {
33933                        const itemId = this._getItemId();
33934                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
33935                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
33936                            this.changeOption(attrId, '');
33937
33938                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
33939                            if (!input && this.$el?.querySelector) {
33940                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
33941                            }
33942                            if (!input && this.$el?.closest) {
33943                                const root = this.$el.closest('[data-product-id]') || this.$el;
33944                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
33945                            }
33946                            if (input) {
33947                                input.checked = false;
33948                            }
33949                        }
33950                    },
33951                    get optionIsEnabled() {
33952                        const itemId = this._getItemId();
33953                        if (!this.$el || !itemId) return true;
33954                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
33955                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
33956                        return !!allowedOptions.find(opt => opt.id == itemId);
33957                    },
33958                    get isSelected() {
33959                        const itemId = this._getItemId();
33960                        if (!this.$el || !itemId) return false;
33961                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
33962                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
33963                    },
33964                    get isSwatchRequired() {
33965                        if (!this.$el) return false;
33966                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
33967                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
33968                    },
33969                    focusedLabel: false,
33970                    activeTooltipItem: false,
33971                    tooltipPositionElement: false,
33972                    setActiveTooltipItem() {
33973                        const itemId = this._getItemId();
33974                        if (!this.$el || !itemId) return;
33975                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
33976                        this.activeTooltipItem = {
33977                            attribute: attrId,
33978                            item: itemId,
33979                            index: 0
33980                        };
33981                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
33982                    },
33983                    unsetActiveTooltipItem() {
33984                        this.activeTooltipItem = false;
33985                    }
33986                },
33987                confProdPreSelect()
33988            );
33989
33990            if (result.optionConfig && result.optionConfig.attributes) {
33991                const attributes = result.optionConfig.attributes;
33992                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
33993                    let source = attributes;
33994                    if (Array.isArray(attributes)) {
33995                        source = {};
33996                        attributes.forEach(attr => {
33997                            if (attr && attr.id) source[attr.id] = attr;
33998                        });
33999                    }
34000                    const values = Object.values(source);
34001                    const wrapper = Object.assign(values, source);
34002                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
34003                        value: true,
34004                        enumerable: false
34005                    });
34006                    result.optionConfig.attributes = wrapper;
34007                }
34008            }
34009
34010            return result;
34011        }
34012
34013        window.addEventListener('alpine:init', () => {
34014            Alpine.data('initConfigurableSwatchOptions_46704', initConfigurableSwatchOptions_46704);
34015        }, {
34016            once: true
34017        });
34018    </script>
34018
34019    
34020    <div x-data="initConfigurableSwatchOptions_46704" x-defer="intersect">
34021        <div class="pagebuilder-home-hidden">
34022                                            
34023                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
34024                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
34025                        <template x-if="showSwatches">
34026                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-46704-163" role="radiogroup" aria-label="Einband">
34027                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
34028                                    <div :data-option-id="item.id" style="display: contents">
34029                                        <div x-id="getSwatchOptionHtmlIdGroup">
34030    <template x-if="optionIsEnabled">
34031        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
34031self="unsetActiveTooltipItem">
34032            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-46704-163">
34033            <div>
34034                <template x-if="isTextSwatch">
34035                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
34036                </template>
34037                <template x-if="!optionIsActive(163, item.id)">
34038                    <div>
34039                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
34040                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
34041                        </svg>
34042                    </div>
34043                </template>
34044            </div>
34045        </label>
34046    </template>
34047</div>                                    </div>
34048                                </template>
34049                            </div>
34050                        </template>
34051                    </div>
34052                </div>
34053                    </div>
34054    </div>
34055            
34056                                                <div class="meta py-4 pagebuilder-home-hidden">
34057                <div x-data="initMarketingShortText_46704()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
34058                    <!-- Marketing short text -->
34059                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
34060                    </div>
34061
34062                    <!-- Short description -->
34063                                                                <div class="short-description">
34064                            Professionelle pers&ouml;nliche Beratungen sind heute nahezu allgegenw&auml;rtig. Berater:innen sollten aber nicht nur konkrete Hilfestellung leisten, sondern auch ein Bewusstsein f&uuml;r die ethischen Fragen ...                            <a href="https://meiner.de/fmv_de/ethik-der-beratung-21148" class="underline">mehr</a>
34065                        </div>
34066                                    </div>
34067
34068                <!-- Series  -->
34069                                    <div class="mb-1">
34070                        <span class="sr-only">Reihe:</span>
34071                        <a href="https://meiner.de/fmv_de/programm/reihen/blaue-reihe">
34072                            <span>Blaue Reihe</span>
34073                        </a>
34074                                            </div>
34075                
34076                
34077                                                    <div class="mb-1">
34078                        <span x-data="initEditionText_46704()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
34079                            <!-- Marketing short text -->
34080                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 299 Seiten                        </span>
34081                    </div>
34082                
34083                            </div>
34084            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
34085                
34086                <div class="justify-end" x-data="initPriceBox()" @update-prices-46704.window="updatePrice($event.detail);">
34087                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="46704" data-price-box="product-id-46704"><span class="normal-price">
34088    <span x-data x-id="['product\u002Dprice\u002D46704']" class="price-container price-final_price tax weee">
34089            <span class="price-label">Ab</span>
34090                <span class="approx-price">ca. </span>
34091        <span :id="$id('product\u002Dprice\u002D46704')" data-price-amount="21.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">21,99&nbsp;&euro;</span></span>
34092        </span>
34093</span>
34094
34095
34096</div>                </div>
34097
34098                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
34099                                            <div class="open-access-container open-access-container-46704                    flex mt-4 ml-auto sm:mt-0 hidden">
34100                            <div class="text-gray-700">
34101                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
34102                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
34103                                        Kostenlos online lesen                                    </a>
34104                                </button>
34105                            </div>
34106                        </div>
34107                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Ethik der Beratung" aria-label="In den Warenkorb Ethik der Beratung" data-addto="cart">
34108                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
34109  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
341090 014 0z"></path>
34110</svg>
34111                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
34112                                        In den Warenkorb                                    </span>
34113                                </button>
34114                                                                                                                    
34115<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(46704)" aria-label="Zur Wunschliste hinzuf&uuml;gen Ethik der Beratung" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
34116    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
34117  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
34118</svg>
34119</button>
34120                                    </div>
34121            </div>
34122        </div>
34123        
34123<script>
34124            function initMarketingShortText_46704() {
34125                var marketingShortTextConfig = {};
34126                if (typeof window.initConfigurableSwatchOptions_46704 === "function") {
34127                    var fullConfig = window.initConfigurableSwatchOptions_46704().optionConfig
34128                    var marketingShortTextConfig = fullConfig.marketing_short_text;
34129                }
34130                return {
34131                    marketingShortText: '',
34132                    config: marketingShortTextConfig,
34133                    productId: '46704',
34134                    getMarketingShortText(detail) {
34135                        this.marketingShortText = detail.productIndex ?
34136                            this.config[detail.productIndex] :
34137                            null;
34138                    },
34139                    eventListeners: {
34140                        ['@listing-configurable-selection-changed.window'](event) {
34141                            if (this.productId == event.detail.productId) {
34142                                this.getMarketingShortText(event.detail);
34143                            }
34144
34145                        }
34146                    }
34147                }
34148            }
34149
34150            function initEditionText_46704() {
34151                var editionTextConfig = {};
34152                if (typeof window.initConfigurableSwatchOptions_46704 === "function") {
34153                    var fullConfig = window.initConfigurableSwatchOptions_46704().optionConfig
34154                    var editionTextConfig = fullConfig.edition;
34155                }
34156                return {
34157                    editionText: '',
34158                    config: editionTextConfig,
34159                    productId: '46704',
34160                    getEditionText(detail) {
34161                        this.editionText = detail.productIndex ?
34162                            this.config[detail.productIndex] :
34163                            null;
34164                    },
34165                    eventListeners: {
34166                        ['@listing-configurable-selection-changed.window'](event) {
34167                            if (this.productId == event.detail.productId) {
34168                                this.getEditionText(event.detail);
34169                            }
34170
34171                        }
34172                    }
34173                }
34174            }
34175        </script>
34175
34176                    </form>
34177                    </div>
34178        
34179<div class="carousel-nav flex items-center justify-center flex-1 p-4">
34180    <button aria-label="Zur&uuml;ck" title="Zur&uuml;ck" class="glider-prev w-8 h-8 mr-1 text-black rounded-full outline-none focus:outline-none hidden">
34181        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true">
34182  <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"></path>
34183</svg>
34184    </button>
34185    <div role="tablist" class="glider-dots select-none flex flex-wrap mx-1 justify-center p-0 focus:outline-none"></div>
34186    <button aria-label="Weiter" title="Weiter" class="glider-next w-8 h-8 ml-1 text-black rounded-full outline-none focus:outline-none hidden">
34187        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true">
34188  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"></path>
34189</svg>
34190    </button>
34191</div>
34192    </div>
34193</div></div></div></div></div></div><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="false" data-element="inner" data-pb-style="IMJKJSS"><h3 data-content-type="heading" data-appearance="default" data-element="main">Methoden im Philosophie- und Ethikunterricht</h3><div class="pagebuilder-column-group card cmsp2-p-5" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-background-lazy-load="false" data-element="main" data-pb-style="QHTY39W"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="PD1C0BY"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="CT5JN59"><div data-content-type="text" data-appearance="default" data-element="main" data-pb-style="U65D85F"><p style="text-align: left;">Die <a href="/programm/reihen/methoden-im-philosophie-und-ethikunterricht">von Martina und J&ouml;rg Peters herausgegebene Reihe </a>stellt anhand der wichtigsten deutschsprachigen Beitr&auml;ge die zentralen Methoden f&uuml;r den Philosophie- und Ethikunterricht vor. Sie richtet sich an Lehrerinnen und Lehrer in der Schulpraxis, aber auch an alle anderen in der Vermittlung philosophischer Themen t&auml;tigen Personen. Zum ersten Mal auf dem Gebiet der Philosophie- und Ethikdidaktik wird die ganze Vielfalt an pr&auml;sentativen und diskursiven Methoden in thematisch gegliederten Kompendien pr&auml;sentiert.</p></div></div></div></div><div class="pagebuilder-column-group" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-background-lazy-load="" data-element="main" data-pb-style="B50WSH3"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="ILN4LAN"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="A0EEFDH"><div data-content-type="products" data-appearance="carousel" data-autoplay="false" data-autoplay-speed="4000" data-infinite-loop="false" data-show-arrows="false" data-show-dots="true" data-carousel-mode="default" data-center-padding="90px" data-element="main">        <div class="glider-contain product-items widget-product-carousel">
34194        <div data-role="glider-content" class="mx-auto grid gap-4 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 relative overflow-y-hidden overflow-x-scroll">
34195                            
34196        <div class="item product product-item card card-interactive flex flex-col w-full " data-sku="Werk16786">
34197                                <a href="https://meiner.de/fmv_de/literatur-und-jugendliteratur-im-philosophie-und-ethikunterricht-16786" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
34198            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-44995.window="$el.src = $event.detail" alt="Literatur und Jugendliteratur im Philosophie- und Ethikunterricht" title="Literatur und Jugendliteratur im Philosophie- und Ethikunterricht" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/978378733
341986562_4.jpg" :style="{
34199                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
34200                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
34201            }">
34202                    </a>
34203        <div class="product-info flex flex-col flex-grow ">
34204                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
34205                                    <div class="mb-2 text-sm text-gray-500 font-medium">
34206                                                                                    <a href="https://meiner.de/fmv_de/person/Jorg-Peters-3207/" class="mb-2">
34207                                    J&ouml;rg Peters                                                                    </a>
34208                                                                    <span>|</span>
34209                                                                                            <a href="https://meiner.de/fmv_de/person/Martina-Peters-3206/" class="mb-2">
34210                                    Martina Peters                                                                            (Hrsg.)
34211                                                                    </a>
34212                                                                                                                                    </div>
34213                                <a class="product-item-link" href="https://meiner.de/fmv_de/literatur-und-jugendliteratur-im-philosophie-und-ethikunterricht-16786">
34214                    Literatur und Jugendliteratur im Philosophie- und Ethikunterricht                </a>
34215                            </div>
34216
34217            <div x-data="initEditionText_44995()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
34218                <!-- Marketing short text -->
34219                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
34220                </div>
34221            </div>
34222
34223                            <div class="py-1 grid  mb-4 ">
34224                    
34225                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":false,"isShowAlert":false,"isProductSalable":false,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":44995,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":44995,"isAvailable":false,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"7535":"0"},"childProductsAlertStatus":{"7535":"1"},"indexMapping":{"163:15":7535},"availabilityMessages":{"7535":"Noch nicht erschienen. Erscheint voraussichtlich 02\/2027"},"openAccess":{"44995":{"status":0},"7535":{"status":0}}},"availabilityMessages":{"7535":"Noch nicht erschienen. Erscheint voraussichtlich 02\/2027"},"openAccess":{"44995":{"status":0},"7535":{"status":0}}}'>
34226        <template x-if="containerVisible">
34227                            <!-- Popup Trigger -->
34228                <div>
34229                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
34230                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
34231                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
34232  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
34233<title>bell</title></svg>
34234</span>
34235                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
34236
34237                    <!-- Popup Modal -->
34238                    <template x-if="showModal">
34239                        <template x-teleport=".page-wrapper">
34240                            <div x-cloak class="fixed inset-0 flex items-center justify-center
34241                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
34242                                <div class="relative bg-white rounded-lg shadow-xl
34243                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
34244                                    <div class="p-6">
34245                                        <!-- Subscription Form for Popup -->
34246                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
34247                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
34248                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
34249                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
34250
34251                                            <div class="flex flex-col gap-3">
34252                                                <div class="flex-grow grow">
34253                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
34254                                                        shadow-xs focus:outline-none focus:outline-hidden
34255                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
34256                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
34257                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
34258                                                </div>
34259                                                <input type="hidden" name="product_id" :value="currentProductId">
34260                                                <input type="hidden" name="type" value="email">
34261
34262                                                
34263                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
34264
34265                                                <div class="amxnotif_guest_action">
34266                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
34267                                                        rounded-md focus:outline-none
34268                                                        focus:outline-hidden focu
34268s:ring-2
34269                                                        focus:ring-offset-2 disabled:opacity-50
34270                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
34271                                                        Benachrichtigen                                                    </button>
34272                                                </div>
34273                                            </div>
34274
34275                                                                                            <div class="flex items-start pt-2">
34276                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
34277                                                        text-blue-600 border-gray-300 rounded-sm">
34278                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
34279                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
34280                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
34281                                                </div>
34282                                                                                    </form>
34283                                    </div>
34284
34285                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
34286                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
34287                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
34288  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
34289<title>x</title></svg>
34290                                    </button>
34291                                </div>
34292                            </div>
34293                        </template>
34294                    </template>
34295                </div>
34296                    </template>
34297    </div>
34298
34299<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_44995" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":44995,"isAvailable":false,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"7535":"0"},"childProductsAlertStatus":{"7535":"1"},"indexMapping":"{\u0022163:15\u0022:7535}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":false,"isConfigurable":true,"productIdentifier":44995,"availabilityMessages":{"7535":"Noch nicht erschienen. Erscheint voraussichtlich 02\/2027"},"openAccess":{"44995":{"status":0},"7535":{"status":0}}}'>
34300    
34301    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
34302        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
34303        <span x-html="optionsLabelText"></span>
34304    </p>
34305</div>                </div>
34306            
34307                                
34307<script>
34308        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
34309            try {
34310                const attributes = (config && config.attributes) ? config.attributes : null;
34311                if (!attributes) return [];
34312                let attr = null;
34313                if (Array.isArray(attributes)) {
34314                    for (let i = 0; i < attributes.length; i++) {
34315                        const a = attributes[i];
34316                        if (a && a.id == attrId) {
34317                            attr = a;
34318                            break;
34319                        }
34320                    }
34321                } else {
34322                    attr = attributes[attrId];
34323                }
34324                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
34325            } catch (e) {
34326                return [];
34327            }
34328        };
34329
34330        function initConfigurableSwatchOptions_44995() {
34331            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["7535"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"7535":{"baseOldPrice":{"amount":21.401868158879},"oldPrice":{"amount":22.9},"basePrice":{"amount":21.401868158879},"finalPrice":{"amount":22.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":true}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":0},"oldPrice":{"amount":0},"basePrice":{"amount":0},"finalPrice":{"amount":0},"isApproxPrice":null},"productId":"44995","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"7535":{"163":"15"}},"salable":{"163":[]},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"7535":"003656"},"output":{"7535":"Kartoniert"},"original_name":{"7535":""},"openaccess_license_link":{"7535":""},"openaccess_license_name":{"7535":""},"openaccess_external_link":{"7535":""},"gpsr_safety_info":{"7535":""},"description":{"7535":""},"doi":{"7535":""},"isbn":{"7535":"978-3-7873-3656-2"},"marketing_short_text":{"7535":""},"recension_text":{"7535":""},"language":{"7535":""},"cover":{"7535":"Kartoniert"},"pages":{"7535":""},"edition":{"7535":""},"pod":{"7535":"Nein"},"copyright_year":{"7535":""},"vlb_tix_link":{"7535":"https:\/\/neu.vlbtix.de\/products\/9783787336562?type=gtin"},"defaultValues":{"163":"15"}};
34332            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
34333
34334            if (typeof window.amxnotif_wrap_attributes === 'function') {
34335                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
34336                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
34337            }
34338
34339            const configurableOptionsComponent = initConfigurableOptions(
34340                '44995',
34341                config
34342            );
34343            const swatchOptionsComponent = initSwatchOptions(
34344                swatchConfig
34345            );
34346
34347            // DWS - Configurable product preselect start
34348            const confProdPreSelect = () => {
34349                return {
34350                    preselectQuerystringItems() {
34351                        var data = {"id":"7535","output":"15"};
34352                        const urlQueryParams = new URLSearchParams(window.location.search);
34353
34354                                                this.$nextTick(() => {
34355                            setTimeout(() => {
34356                                const rootEl = this.$root || this.$el;
34357                                if (!rootEl) return;
34358
34359                                const applySelection = (attrCode, attrValue) => {
34360                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
34361
34362                                    const attributes = Object.values(this.optionConfig.attributes || {});
34363                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
34364
34365                                    if (targetAttr) {
34366                                        const attrId = String(targetAttr.id);
34367                                        const optionVal = String(attrValue);
34368
34369                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
34370
34371                                        if (inputEl) {
34372                                                                                        inputEl.click();
34373                                            inputEl.dispatchEvent(new Event('change', {
34374                                                bubbles: true
34375                                            }));
34376                                        } else {
34377                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
34378                                            if (selectEl) {
34379                                                selectEl.value = optionVal;
34380                                                selectEl.dispatchEvent(new Event('change', {
34381                                                    bubbles: true
34382                                                }));
34383                                            }
34384                                        }
34385
34386                                                                                this.changeOption(attrId, optionVal, false);
34387                                    }
34388                                };
34389
34390                                                                if (data && typeof data === 'object') {
34391                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
34392                                }
34393
34394                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
34395                                    if (attribute && attribute.code) {
34396                                        let optionValue = urlQueryParams.get(attribute.code);
34397                                        if (optionValue) {
34398                                            let optionId = false;
34399                                            const attributes = Object.values(this.optionConfig.attributes || {});
34400                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
34401
34402                                            let found = false;
34403                                            Object.values(targetAttr.options).map(option => {
34404                                                if (found === false && option.label === optionValue) {
34405                                                    optionId = option.id;
34406                                                    found = true;
34407                                                }
34408                                            });
34409
34410                                            const attrId = String(targetAttr.id);
34411                                            let optionVal = String(optionValue);
34412                                            if (found) {
34413                                                optionVal = String(optionId);
34414                                            }
34415
34416                                            applySelection(attribute.code, optionVal);
34417                                        }
34418                                    }
34419                                });
34420                            }, 100);
34421                        });
34422                    }
34423                }
34424            };
34425            // DWS - Configurable product preselect end
34426
34427            const result = Object.assign(
34428                configurableOptionsComponent,
34429                swatchOptionsComponent, {
34430                    productId: '44995',
34431                    productIndex: 0,
34432                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
34433                    showSwatches: false,
34434                    precalcOptions: {},
34435                    originalInit: configurableOptionsComponent.init,
34436                    init() {
34437                        try {
34438                            this.precalcOptions = {};
34439                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
34440                            this.preselectQuerystringItems();
34441                            if (Array.isArray(attrSource)) {
34442                                attrSource.forEach(attr => {
34443                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
34444                                });
34445                            } else if (attrSource && typeof attrSource === 'object') {
34446                                Object.keys(attrSource).forEach(id => {
34447                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
34448                                });
34449                            }
34450                        } catch (e) {
34451                            console.error('Pre-calc error:', e);
34452                        }
34453
34454                        if (typeof this.originalInit === 'function') {
34455                            this.originalInit();
34456                        }
34457
34458                        try {
34459                            this.initShowSwatchesIntersect();
34460                        } catch (e) {
34461                            console.error('intersect error:', e);
34462                        }
34463                    },
34464
34465                    updateGallery() {
34466                        if (!this.productIndex) return;
34467
34468                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
34469                                method: 'GET',
34470                                headers: {
34471                                    'Content-Type': 'application/json',
34472                                    'X-Requested-With': 'XMLHttpRequest'
34473                                }
34474                            })
34475                            .then(response => response.json())
34476                            .then(data => {
34477                                if (data && data.medium) {
34478                                    window.dispatchEvent(new CustomEvent("update-gallery-44995", {
34479                                        detail: data.medium
34480                                    }));
34481                                }
34482                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
34483                    },
34484
34485
34486                    initShowSwatchesIntersect() {
34487                        const observer = new IntersectionObserver(entries => {
34488                            if (entries[0].isIntersecting) {
34489                                this.showSwatches = true;
34490                                observer.disconnect();
34491                            }
34492                        }, {
34493                            rootMargin: '512px'
34494                        });
34495                        observer.observe(this.$el);
34496                    },
34497                    getOptions(attrId) {
34498                        return this.precalcOptions[attrId] || [];
34499                    },
34500                    getOptionsByAttrId() {
34501                        return this.getOptions(this.$el.dataset.attributeId);
34502                    },
34503                    _getItemId() {
34504                        if (this.item && this.item.id) return this.item.id;
34505                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
34506                    },
34507                    getSwatchOptionHtmlId() {
34508                        const itemId = this._getItemId();
34509                        return itemId ? this.$id(`attribute-option-44995-${itemId}`) : '';
34510                    },
34511                    getSwatchOptionHtmlIdGroup() {
34512                        const itemId = this._getItemId();
34513                        return itemId ? [`attribute-option-44995-${itemId}`] : [];
34514                    },
34515                    getAttributeSwatchData(attributeId) {
34516                        const data = Object.assign({}, this.swatchConfig[attributeId]);
34517                        if (data['additional_data']) {
34518                            try {
34519                                data['details'] = JSON.parse(data['additional_data']);
34520                            } catch (e) {
34521                                data['details'] = {};
34522                            }
34523                        }
34524                        return data;
34525                    },
34526                    getSwatchType(attributeId, optionId) {
34527                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
34528                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
34529                        }
34530                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
34531                            this.swatchConfig[attributeId].details.swatch_input_type :
34532                            "empty";
34533                        if (type === 'visual') {
34534                            const config = this.swatchConfig[attributeId];
34535                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
34536                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
34537                            }
34538                            // Fallback to first option type
34539                            for (const oId in config) {
34540                                if (config[oId] && typeof config[oId].type !== 'undefined') {
34541                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
34542                                }
34543                            }
34544                        }
34545                        return type;
34546                    },
34547                    mapSwatchTypeNumberToTypeCode(type) {
34548                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
34549                    },
34550                    isTextSwatch() {
34551                        const itemId = this._getItemId();
34552                        if (!this.$el || !itemId) return false;
34553                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
34554                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
34555                    },
34556
34557                    getSwatchText() {
34558                        const itemId = this._getItemId();
34559                        if (this.item) return this.item.label || '';
34560                        if (!this.$el || !itemId) return '';
34561                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
34562                        const options = attrId ? this.getOptions(attrId) : [];
34563                        const opt = options.find(o => o.id == itemId);
34564                        return opt ? opt.label : '';
34565                    },
34566                    getSwatchBackgroundStyle() {
34567                        const itemId = this._getItemId();
34568                        if (!this.$el || !itemId) return '';
34569                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
34570                        if (!attrId) return '';
34571                        const type = this.getSwatchType(attrId, itemId);
34572                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
34573                            this.swatchConfig[attrId][itemId] :
34574                            null;
34575                        if (!swatchData) return '';
34576                        if (type === "color") return 'background-color:' + swatchData.value;
34577                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
34578                        return '';
34579                    },
34580                    swatchOptionClasses() {
34581                        const itemId = this._getItemId();
34582                        if (!this.$el || !itemId) return {};
34583                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
34584                        return {
34585                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
34586                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
34587                            'w-6 h-6': !this.isTextSwatch()
34588                        }
34589                    },
34590
34591                    onFocusSwatchItem() {
34592                        const itemId = this._getItemId();
34593                        if (itemId) this.focusedLabel = itemId;
34594                    },
34595                    onChangeOption() {
34596                        const itemId = this._getItemId();
34597                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
34598                        if (attrId && itemId) this.changeOption(attrId, itemId);
34599                    },
34600                    changeOption(attributeId, value) {
34601                        if (value === '') {
34602                            return;
34603                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
34604                        } else {
34605                            this.selectedValues[attributeId] = value;
34606                        }
34607
34608                        this.findSimpleIndex();
34609                        this.findAllowedAttributeOptions();
34610                        this.updatePrices();
34611                        this.updateGallery();
34612
34613                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
34614                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
34615
34616                        const eventDetail = {
34617                            productId: this.productId,
34618                            optionId: attributeId,
34619                            value: value,
34620                            productIndex: this.productIndex || 0,
34621                            selectedValues: this.selectedValues,
34622                            candidates: candidates,
34623                            sourceElement: this.$el
34624                        };
34625
34626                        // Dispatch for Amasty
34627                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
34628                            detail: eventDetail
34629                        }));
34630
34631                        // Dispatch for Hyva listing
34632                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
34633                            detail: eventDetail
34634                        }));
34635                    },
34636
34637
34638                    clearOptionIfActive() {
34639                        const itemId = this._getItemId();
34640                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
34641                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
34642                            this.changeOption(attrId, '');
34643
34644                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
34645                            if (!input && this.$el?.querySelector) {
34646                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
34647                            }
34648                            if (!input && this.$el?.closest) {
34649                                const root = this.$el.closest('[data-product-id]') || this.$el;
34650                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
34651                            }
34652                            if (input) {
34653                                input.checked = false;
34654                            }
34655                        }
34656                    },
34657                    get optionIsEnabled() {
34658                        const itemId = this._getItemId();
34659                        if (!this.$el || !itemId) return true;
34660                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
34661                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
34662                        return !!allowedOptions.find(opt => opt.id == itemId);
34663                    },
34664                    get isSelected() {
34665                        const itemId = this._getItemId();
34666                        if (!this.$el || !itemId) return false;
34667                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
34668                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
34669                    },
34670                    get isSwatchRequired() {
34671                        if (!this.$el) return false;
34672                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
34673                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
34674                    },
34675                    focusedLabel: false,
34676                    activeTooltipItem: false,
34677                    tooltipPositionElement: false,
34678                    setActiveTooltipItem() {
34679                        const itemId = this._getItemId();
34680                        if (!this.$el || !itemId) return;
34681                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
34682                        this.activeTooltipItem = {
34683                            attribute: attrId,
34684                            item: itemId,
34685                            index: 0
34686                        };
34687                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
34688                    },
34689                    unsetActiveTooltipItem() {
34690                        this.activeTooltipItem = false;
34691                    }
34692                },
34693                confProdPreSelect()
34694            );
34695
34696            if (result.optionConfig && result.optionConfig.attributes) {
34697                const attributes = result.optionConfig.attributes;
34698                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
34699                    let source = attributes;
34700                    if (Array.isArray(attributes)) {
34701                        source = {};
34702                        attributes.forEach(attr => {
34703                            if (attr && attr.id) source[attr.id] = attr;
34704                        });
34705                    }
34706                    const values = Object.values(source);
34707                    const wrapper = Object.assign(values, source);
34708                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
34709                        value: true,
34710                        enumerable: false
34711                    });
34712                    result.optionConfig.attributes = wrapper;
34713                }
34714            }
34715
34716            return result;
34717        }
34718
34719        window.addEventListener('alpine:init', () => {
34720            Alpine.data('initConfigurableSwatchOptions_44995', initConfigurableSwatchOptions_44995);
34721        }, {
34722            once: true
34723        });
34724    </script>
34724
34725    
34726    <div x-data="initConfigurableSwatchOptions_44995" x-defer="intersect">
34727        <div class="pagebuilder-home-hidden">
34728                                            
34729                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
34730                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
34731                        <template x-if="showSwatches">
34732                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-44995-163" role="radiogroup" aria-label="Einband">
34733                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
34734                                    <div :data-option-id="item.id" style="display: contents">
34735                                        <div x-id="getSwatchOptionHtmlIdGroup">
34736    <template x-if="optionIsEnabled">
34737        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
34737self="unsetActiveTooltipItem">
34738            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-44995-163">
34739            <div>
34740                <template x-if="isTextSwatch">
34741                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
34742                </template>
34743                <template x-if="!optionIsActive(163, item.id)">
34744                    <div>
34745                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
34746                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
34747                        </svg>
34748                    </div>
34749                </template>
34750            </div>
34751        </label>
34752    </template>
34753</div>                                    </div>
34754                                </template>
34755                            </div>
34756                        </template>
34757                    </div>
34758                </div>
34759                    </div>
34760    </div>
34761            
34762                                                <div class="meta py-4 pagebuilder-home-hidden">
34763                <div x-data="initMarketingShortText_44995()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
34764                    <!-- Marketing short text -->
34765                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
34766                    </div>
34767
34768                    <!-- Short description -->
34769                                                        </div>
34770
34771                <!-- Series  -->
34772                                    <div class="mb-1">
34773                        <span class="sr-only">Reihe:</span>
34774                        <a href="https://meiner.de/fmv_de/programm/reihen/methoden-im-philosophie-und-ethikunterricht">
34775                            <span>Methoden im Philosophie- und Ethikunterricht</span>
34776                        </a>
34777                                                    7                                            </div>
34778                
34779                
34780                                                    <div x-data="initEditionText_44995()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'block': editionText != '' }">
34781                        <!-- Marketing short text -->
34782                        <div class="edition-text" x-html="editionText"></div>
34783                    </div>
34784                
34785                            </div>
34786            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
34787                
34788                <div class="justify-end" x-data="initPriceBox()" @update-prices-44995.window="updatePrice($event.detail);">
34789                                    </div>
34790
34791                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
34792                                            <div class="open-access-container open-access-container-44995                    flex mt-4 ml-auto sm:mt-0 hidden">
34793                            <div class="text-gray-700">
34794                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
34795                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
34796                                        Kostenlos online lesen                                    </a>
34797                                </button>
34798                            </div>
34799                        </div>
34800                                                                                            <div class="w-auto justify-center mr-auto">
34801                                    <div class="text-right">
34802        <p class="flex items-center justify-end align-middle gap-x-2 stock
34803                before:w-3 before:h-3 before:rounded-full before:shrink-0
34804                unavailable before:bg-red-500" title="Verf&uuml;gbarkeit">Nicht lieferbar</p>
34805    </div>
34806                            </div>
34807                                                                                        
34808<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(44995)" aria-label="Zur Wunschliste hinzuf&uuml;gen Literatur und Jugendliteratur im Philosophie- und Ethikunterricht" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
34809    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
34810  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
34811</svg>
34812</button>
34813                                    </div>
34814            </div>
34815        </div>
34816        
34816<script>
34817            function initMarketingShortText_44995() {
34818                var marketingShortTextConfig = {};
34819                if (typeof window.initConfigurableSwatchOptions_44995 === "function") {
34820                    var fullConfig = window.initConfigurableSwatchOptions_44995().optionConfig
34821                    var marketingShortTextConfig = fullConfig.marketing_short_text;
34822                }
34823                return {
34824                    marketingShortText: '',
34825                    config: marketingShortTextConfig,
34826                    productId: '44995',
34827                    getMarketingShortText(detail) {
34828                        this.marketingShortText = detail.productIndex ?
34829                            this.config[detail.productIndex] :
34830                            null;
34831                    },
34832                    eventListeners: {
34833                        ['@listing-configurable-selection-changed.window'](event) {
34834                            if (this.productId == event.detail.productId) {
34835                                this.getMarketingShortText(event.detail);
34836                            }
34837
34838                        }
34839                    }
34840                }
34841            }
34842
34843            function initEditionText_44995() {
34844                var editionTextConfig = {};
34845                if (typeof window.initConfigurableSwatchOptions_44995 === "function") {
34846                    var fullConfig = window.initConfigurableSwatchOptions_44995().optionConfig
34847                    var editionTextConfig = fullConfig.edition;
34848                }
34849                return {
34850                    editionText: '',
34851                    config: editionTextConfig,
34852                    productId: '44995',
34853                    getEditionText(detail) {
34854                        this.editionText = detail.productIndex ?
34855                            this.config[detail.productIndex] :
34856                            null;
34857                    },
34858                    eventListeners: {
34859                        ['@listing-configurable-selection-changed.window'](event) {
34860                            if (this.productId == event.detail.productId) {
34861                                this.getEditionText(event.detail);
34862                            }
34863
34864                        }
34865                    }
34866                }
34867            }
34868        </script>
34868
34869                    </div>
34870                            
34871    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/9669/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk16787">
34872        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="9669">
34873                                    <a href="https://meiner.de/fmv_de/das-sokratische-gespra-ch-im-philosophie-und-ethikunterricht-16787" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
34874            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-9669.window="$el.src = $event.detail" alt="Das Sokratische Gespr&auml;ch im Philosophie- und Ethikunterricht" title="Das Sokratische Gespr&auml;ch im Philosophie- und Ethikunterricht" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787346424_3.jpg" :style="{
34875                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
34876                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
34877            }">
34878                    </a>
34879        <div class="product-info flex flex-col flex-grow ">
34880                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
34881                                    <div class="mb-2 text-sm text-gray-500 font-medium">
34882                                                                                    <a href="https://meiner.de/fmv_de/person/Jorg-Peters-3207/" class="mb-2">
34883                                    J&ouml;rg Peters                                                                    </a>
34884                                                                    <span>|</span>
34885                                                                                            <a href="https://meiner.de/fmv_de/person/Martina-Peters-3206/" class="mb-2">
34886                                    Martina Peters                                                                            (Hrsg.)
34887                                                                    </a>
34888                                                                                                                                    </div>
34889                                <a class="product-item-link" href="https://meiner.de/fmv_de/das-sokratische
34889-gespra-ch-im-philosophie-und-ethikunterricht-16787">
34890                    Das Sokratische Gespr&auml;ch im Philosophie- und Ethikunterricht                </a>
34891                            </div>
34892
34893            <div x-data="initEditionText_9669()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
34894                <!-- Marketing short text -->
34895                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
34896                </div>
34897            </div>
34898
34899                            <div class="py-1 grid  mb-4 ">
34900                    
34901                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":9669,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":9669,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"14842":"1","7515":"1","24529":"1"},"childProductsAlertStatus":{"14842":"0","7515":"0","24529":"0"},"indexMapping":{"163:8":14842,"163:15":7515,"163:9":24529},"availabilityMessages":{"14842":"Download sofort  verf\u00fcgbar","7515":"Lieferbar innerhalb von 3-5 Tagen","24529":"Download sofort  verf\u00fcgbar"},"openAccess":{"9669":{"status":0},"14842":{"status":0},"7515":{"status":0},"24529":{"status":0}}},"availabilityMessages":{"14842":"Download sofort  verf\u00fcgbar","7515":"Lieferbar innerhalb von 3-5 Tagen","24529":"Download sofort  verf\u00fcgbar"},"openAccess":{"9669":{"status":0},"14842":{"status":0},"7515":{"status":0},"24529":{"status":0}}}'>
34902        <template x-if="containerVisible">
34903                            <!-- Popup Trigger -->
34904                <div>
34905                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
34906                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
34907                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
34908  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
34909<title>bell</title></svg>
34910</span>
34911                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
34912
34913                    <!-- Popup Modal -->
34914                    <template x-if="showModal">
34915                        <template x-teleport=".page-wrapper">
34916                            <div x-cloak class="fixed inset-0 flex items-center justify-center
34917                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
34918                                <div class="relative bg-white rounded-lg shadow-xl
34919                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
34920                                    <div class="p-6">
34921                                        <!-- Subscription Form for Popup -->
34922                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
34923                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
34924                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
34925                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
34926
34927                                            <div class="flex flex-col gap-3">
34928                                                <div class="flex-grow grow">
34929                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
34930                                                        shadow-xs focus:outline-none focus:outline-hidden
34931                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
34932                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
34933                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
34934                                                </div>
34935                                                <input type="hidden" name="product_id" :value="currentProductId">
34936                                                <input type="hidden" name="type" value="email">
34937
34938                                                
34939                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
34940
34941                                                <div class="amxnotif_guest_action">
34942                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
34943                                                        rounded-md focus:outline-none
34944                                                        focus:outline-hidden focu
34944s:ring-2
34945                                                        focus:ring-offset-2 disabled:opacity-50
34946                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
34947                                                        Benachrichtigen                                                    </button>
34948                                                </div>
34949                                            </div>
34950
34951                                                                                            <div class="flex items-start pt-2">
34952                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
34953                                                        text-blue-600 border-gray-300 rounded-sm">
34954                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
34955                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
34956                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
34957                                                </div>
34958                                                                                    </form>
34959                                    </div>
34960
34961                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
34962                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
34963                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
34964  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
34965<title>x</title></svg>
34966                                    </button>
34967                                </div>
34968                            </div>
34969                        </template>
34970                    </template>
34971                </div>
34972                    </template>
34973    </div>
34974
34975<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_9669" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":9669,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"14842":"1","7515":"1","24529":"1"},"childProductsAlertStatus":{"14842":"0","7515":"0","24529":"0"},"indexMapping":"{\u0022163:8\u0022:14842,\u0022163:15\u0022:7515,\u0022163:9\u0022:24529}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":9669,"availabilityMessages":{"14842":"Download sofort  verf\u00fcgbar","7515":"Lieferbar innerhalb von 3-5 Tagen","24529":"Download sofort  verf\u00fcgbar"},"openAccess":{"9669":{"status":0},"14842":{"status":0},"7515":{"status":0},"24529":{"status":0}}}'>
34976    
34977    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
34978        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
34979        <span x-html="optionsLabelText"></span>
34980    </p>
34981</div>                </div>
34982            
34983                                
34983<script>
34984        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
34985            try {
34986                const attributes = (config && config.attributes) ? config.attributes : null;
34987                if (!attributes) return [];
34988                let attr = null;
34989                if (Array.isArray(attributes)) {
34990                    for (let i = 0; i < attributes.length; i++) {
34991                        const a = attributes[i];
34992                        if (a && a.id == attrId) {
34993                            attr = a;
34994                            break;
34995                        }
34996                    }
34997                } else {
34998                    attr = attributes[attrId];
34999                }
35000                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
35001            } catch (e) {
35002                return [];
35003            }
35004        };
35005
35006        function initConfigurableSwatchOptions_9669() {
35007            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["7515"]},{"id":"8","label":"PDF","products":["14842"]},{"id":"9","label":"EPUB","products":["24529"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"14842":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":15.878503672897},"finalPrice":{"amount":16.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"7515":{"baseOldPrice":{"amount":21.401868158879},"oldPrice":{"amount":22.9},"basePrice":{"amount":21.401868158879},"finalPrice":{"amount":22.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"24529":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":15.878503672897},"finalPrice":{"amount":16.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":15.878503672897},"finalPrice":{"amount":16.99},"isApproxPrice":null},"productId":"9669","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"14842":{"163":"8"},"7515":{"163":"15"},"24529":{"163":"9"}},"salable":{"163":{"8":["14842"],"15":["7515"],"9":["24529"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"14842":"003665","7515":"003657","24529":"004642"},"output":{"7515":"Kartoniert","14842":"PDF","24529":"EPUB"},"original_name":{"7515":"","14842":"","24529":""},"openaccess_license_link":{"7515":"","14842":"","24529":""},"openaccess_license_name":{"7515":"","14842":"","24529":""},"openaccess_external_link":{"7515":"","14842":"","24529":""},"gpsr_safety_info":{"7515":"","14842":"","24529":""},"description":{"7515":"Das (Neo-)Sokratische Gespr\u00e4ch ist eine philosophische Unterrichtsmethode, die auf Leonard Nelson zur\u00fcckgeht und von Gustav Heckmann weiterentwickelt wurde. Auch wenn die Methode namentlich an Sokrates ankn\u00fcpft, unterscheidet sich diese Form der Unterredung insofern von der des antiken Philosophen, als die Untersuchungen von philosophischen oder ethischen Problemen bzw. Fragestellungen nicht im Zwiegespr\u00e4ch, sondern in moderierten Gruppengespr\u00e4chen durchgef\u00fchrt werden. <br\/><br\/>Im Theorieteil des achten Bandes der Reihe \u00bbMethoden im Philosophie- und Ethikunterricht\u00ab werden die theoretischen Grundlagen, die Leonard Nelson und Gustav Heckmann in Bezug auf das Sokratische Gespr\u00e4ch entwickelt haben, vorgestellt. Im anschlie\u00dfenden Praxisteil zeigen wichtige Vertreter:innen des Sokratischen Gespr\u00e4chs \u2013 unter anderem Dieter Birnbacher, Klaus Blesenkemper, Klaus Draken, Dieter Krohn, Gisela Raupach-Strey und Ute Siebert \u2013, wie die Methode im Philosophie- und Ethikunterricht angewandt werden kann. Wie alle B\u00fccher dieser Reihe endet auch dieser Band mit einer Auswahlbibliographie.","14842":"Das (Neo-)Sokratische Gespr\u00e4ch ist eine philosophische Unterrichtsmethode, die auf Leonard Nelson zur\u00fcckgeht und von Gustav Heckmann weiterentwickelt wurde. Auch wenn die Methode namentlich an Sokrates ankn\u00fcpft, unterscheidet sich diese Form der Unterredung insofern von der des antiken Philosophen, als die Untersuchungen von philosophischen oder ethischen Problemen bzw. Fragestellungen nicht im Zwiegespr\u00e4ch, sondern in moderierten Gruppengespr\u00e4chen durchgef\u00fchrt werden. <br\/><br\/>Im Theorieteil des achten Bandes der Reihe \u00bbMethoden im Philosophie- und Ethikunterricht\u00ab werden die theoretischen Grundlagen, die Leonard Nelson und Gustav Heckmann in Bezug auf das S
35007okratische Gespr\u00e4ch entwickelt haben, vorgestellt. Im anschlie\u00dfenden Praxisteil zeigen wichtige Vertreter:innen des Sokratischen Gespr\u00e4chs \u2013 unter anderem Dieter Birnbacher, Klaus Blesenkemper, Klaus Draken, Dieter Krohn, Gisela Raupach-Strey und Ute Siebert \u2013, wie die Methode im Philosophie- und Ethikunterricht angewandt werden kann. Wie alle B\u00fccher dieser Reihe endet auch dieser Band mit einer Auswahlbibliographie.","24529":"Das (Neo-)Sokratische Gespr\u00e4ch ist eine philosophische Unterrichtsmethode, die auf Leonard Nelson zur\u00fcckgeht und von Gustav Heckmann weiterentwickelt wurde. Auch wenn die Methode namentlich an Sokrates ankn\u00fcpft, unterscheidet sich diese Form der Unterredung insofern von der des antiken Philosophen, als die Untersuchungen von philosophischen oder ethischen Problemen bzw. Fragestellungen nicht im Zwiegespr\u00e4ch, sondern in moderierten Gruppengespr\u00e4chen durchgef\u00fchrt werden. <br\/><br\/>Im Theorieteil des achten Bandes der Reihe \u00bbMethoden im Philosophie- und Ethikunterricht\u00ab werden die theoretischen Grundlagen, die Leonard Nelson und Gustav Heckmann in Bezug auf das Sokratische Gespr\u00e4ch entwickelt haben, vorgestellt. Im anschlie\u00dfenden Praxisteil zeigen wichtige Vertreter:innen des Sokratischen Gespr\u00e4chs \u2013 unter anderem Dieter Birnbacher, Klaus Blesenkemper, Klaus Draken, Dieter Krohn, Gisela Raupach-Strey und Ute Siebert \u2013, wie die Methode im Philosophie- und Ethikunterricht angewandt werden kann. Wie alle B\u00fccher dieser Reihe endet auch dieser Band mit einer Auswahlbibliographie."},"doi":{"7515":"","14842":"10.28937\/978-3-7873-3665-4","24529":""},"isbn":{"7515":"978-3-7873-3657-9","14842":"978-3-7873-3665-4","24529":"978-3-7873-4642-4"},"marketing_short_text":{"7515":"","14842":"","24529":""},"recension_text":{"7515":"","14842":"","24529":""},"language":{"7515":"","14842":"","24529":""},"cover":{"7515":"Kartoniert","14842":"","24529":""},"pages":{"7515":"230 Seiten","14842":"230 Seiten","24529":"230 Seiten"},"edition":{"7515":"","14842":"Unver\u00e4ndertes eBook der 1. Auflage von 2025","24529":"Unver\u00e4ndertes EPUB der 1. Auflage von 2025"},"pod":{"7515":"Nein","14842":"Nein","24529":"Nein"},"copyright_year":{"7515":"","14842":"","24529":""},"vlb_tix_link":{"7515":"https:\/\/neu.vlbtix.de\/products\/9783787336579?type=gtin","14842":"","24529":""},"defaultValues":{"163":"15"}};
35008            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
35009
35010            if (typeof window.amxnotif_wrap_attributes === 'function') {
35011                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
35012                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
35013            }
35014
35015            const configurableOptionsComponent = initConfigurableOptions(
35016                '9669',
35017                config
35018            );
35019            const swatchOptionsComponent = initSwatchOptions(
35020                swatchConfig
35021            );
35022
35023            // DWS - Configurable product preselect start
35024            const confProdPreSelect = () => {
35025                return {
35026                    preselectQuerystringItems() {
35027                        var data = {"id":"7515","output":"15"};
35028                        const urlQueryParams = new URLSearchParams(window.location.search);
35029
35030                                                this.$nextTick(() => {
35031                            setTimeout(() => {
35032                                const rootEl = this.$root || this.$el;
35033                                if (!rootEl) return;
35034
35035                                const applySelection = (attrCode, attrValue) => {
35036                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
35037
35038                                    const attributes = Object.values(this.optionConfig.attributes || {});
35039                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
35040
35041                                    if (targetAttr) {
35042                                        const attrId = String(targetAttr.id);
35043                                        const optionVal = String(attrValue);
35044
35045                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
35046
35047                                        if (inputEl) {
35048                                                                                        inputEl.click();
35049                                            inputEl.dispatchEvent(new Event('change', {
35050                                                bubbles: true
35051                                            }));
35052                                        } else {
35053                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
35054                                            if (selectEl) {
35055                                                selectEl.value = optionVal;
35056                                                selectEl.dispatchEvent(new Event('change', {
35057                                                    bubbles: true
35058                                                }));
35059                                            }
35060                                        }
35061
35062                                                                                this.changeOption(attrId, optionVal, false);
35063                                    }
35064                                };
35065
35066                                                                if (data && typeof data === 'object') {
35067                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
35068                                }
35069
35070                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
35071                                    if (attribute && attribute.code) {
35072                                        let optionValue = urlQueryParams.get(attribute.code);
35073                                        if (optionValue) {
35074                                            let optionId = false;
35075                                            const attributes = Object.values(this.optionConfig.attributes || {});
35076                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
35077
35078                                            let found = false;
35079                                            Object.values(targetAttr.options).map(option => {
35080                                                if (found === false && option.label === optionValue) {
35081                                                    optionId = option.id;
35082                                                    found = true;
35083                                                }
35084                                            });
35085
35086                                            const attrId = String(targetAttr.id);
35087                                            let optionVal = String(optionValue);
35088                                            if (found) {
35089                                                optionVal = String(optionId);
35090                                            }
35091
35092                                            applySelection(attribute.code, optionVal);
35093                                        }
35094                                    }
35095                                });
35096                            }, 100);
35097                        });
35098                    }
35099                }
35100            };
35101            // DWS - Configurable product preselect end
35102
35103            const result = Object.assign(
35104                configurableOptionsComponent,
35105                swatchOptionsComponent, {
35106                    productId: '9669',
35107                    productIndex: 0,
35108                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
35109                    showSwatches: false,
35110                    precalcOptions: {},
35111                    originalInit: configurableOptionsComponent.init,
35112                    init() {
35113                        try {
35114                            this.precalcOptions = {};
35115                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
35116                            this.preselectQuerystringItems();
35117                            if (Array.isArray(attrSource)) {
35118                                attrSource.forEach(attr => {
35119                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
35120                                });
35121                            } else if (attrSource && typeof attrSource === 'object') {
35122                                Object.keys(attrSource).forEach(id => {
35123                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
35124                                });
35125                            }
35126                        } catch (e) {
35127                            console.error('Pre-calc error:', e);
35128                        }
35129
35130                        if (typeof this.originalInit === 'function') {
35131                            this.originalInit();
35132                        }
35133
35134                        try {
35135                            this.initShowSwatchesIntersect();
35136                        } catch (e) {
35137                            console.error('intersect error:', e);
35138                        }
35139                    },
35140
35141                    updateGallery() {
35142                        if (!this.productIndex) return;
35143
35144                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
35145                                method: 'GET',
35146                                headers: {
35147                                    'Content-Type': 'application/json',
35148                                    'X-Requested-With': 'XMLHttpRequest'
35149                                }
35150                            })
35151                            .then(response => response.json())
35152                            .then(data => {
35153                                if (data && data.medium) {
35154                                    window.dispatchEvent(new CustomEvent("update-gallery-9669", {
35155                                        detail: data.medium
35156                                    }));
35157                                }
35158                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
35159                    },
35160
35161
35162                    initShowSwatchesIntersect() {
35163                        const observer = new IntersectionObserver(entries => {
35164                            if (entries[0].isIntersecting) {
35165                                this.showSwatches = true;
35166                                observer.disconnect();
35167                            }
35168                        }, {
35169                            rootMargin: '512px'
35170                        });
35171                        observer.observe(this.$el);
35172                    },
35173                    getOptions(attrId) {
35174                        return this.precalcOptions[attrId] || [];
35175                    },
35176                    getOptionsByAttrId() {
35177                        return this.getOptions(this.$el.dataset.attributeId);
35178                    },
35179                    _getItemId() {
35180                        if (this.item && this.item.id) return this.item.id;
35181                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
35182                    },
35183                    getSwatchOptionHtmlId() {
35184                        const itemId = this._getItemId();
35185                        return itemId ? this.$id(`attribute-option-9669-${itemId}`) : '';
35186                    },
35187                    getSwatchOptionHtmlIdGroup() {
35188                        const itemId = this._getItemId();
35189                        return itemId ? [`attribute-option-9669-${itemId}`] : [];
35190                    },
35191                    getAttributeSwatchData(attributeId) {
35192                        const data = Object.assign({}, this.swatchConfig[attributeId]);
35193                        if (data['additional_data']) {
35194                            try {
35195                                data['details'] = JSON.parse(data['additional_data']);
35196                            } catch (e) {
35197                                data['details'] = {};
35198                            }
35199                        }
35200                        return data;
35201                    },
35202                    getSwatchType(attributeId, optionId) {
35203                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
35204                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
35205                        }
35206                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
35207                            this.swatchConfig[attributeId].details.swatch_input_type :
35208                            "empty";
35209                        if (type === 'visual') {
35210                            const config = this.swatchConfig[attributeId];
35211                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
35212                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
35213                            }
35214                            // Fallback to first option type
35215                            for (const oId in config) {
35216                                if (config[oId] && typeof config[oId].type !== 'undefined') {
35217                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
35218                                }
35219                            }
35220                        }
35221                        return type;
35222                    },
35223                    mapSwatchTypeNumberToTypeCode(type) {
35224                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
35225                    },
35226                    isTextSwatch() {
35227                        const itemId = this._getItemId();
35228                        if (!this.$el || !itemId) return false;
35229                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
35230                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
35231                    },
35232
35233                    getSwatchText() {
35234                        const itemId = this._getItemId();
35235                        if (this.item) return this.item.label || '';
35236                        if (!this.$el || !itemId) return '';
35237                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
35238                        const options = attrId ? this.getOptions(attrId) : [];
35239                        const opt = options.find(o => o.id == itemId);
35240                        return opt ? opt.label : '';
35241                    },
35242                    getSwatchBackgroundStyle() {
35243                        const itemId = this._getItemId();
35244                        if (!this.$el || !itemId) return '';
35245                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
35246                        if (!attrId) return '';
35247                        const type = this.getSwatchType(attrId, itemId);
35248                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
35249                            this.swatchConfig[attrId][itemId] :
35250                            null;
35251                        if (!swatchData) return '';
35252                        if (type === "color") return 'background-color:' + swatchData.value;
35253                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
35254                        return '';
35255                    },
35256                    swatchOptionClasses() {
35257                        const itemId = this._getItemId();
35258                        if (!this.$el || !itemId) return {};
35259                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
35260                        return {
35261                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
35262                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
35263                            'w-6 h-6': !this.isTextSwatch()
35264                        }
35265                    },
35266
35267                    onFocusSwatchItem() {
35268                        const itemId = this._getItemId();
35269                        if (itemId) this.focusedLabel = itemId;
35270                    },
35271                    onChangeOption() {
35272                        const itemId = this._getItemId();
35273                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
35274                        if (attrId && itemId) this.changeOption(attrId, itemId);
35275                    },
35276                    changeOption(attributeId, value) {
35277                        if (value === '') {
35278                            return;
35279                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
35280                        } else {
35281                            this.selectedValues[attributeId] = value;
35282                        }
35283
35284                        this.findSimpleIndex();
35285                        this.findAllowedAttributeOptions();
35286                        this.updatePrices();
35287                        this.updateGallery();
35288
35289                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
35290                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
35291
35292                        const eventDetail = {
35293                            productId: this.productId,
35294                            optionId: attributeId,
35295                            value: value,
35296                            productIndex: this.productIndex || 0,
35297                            selectedValues: this.selectedValues,
35298                            candidates: candidates,
35299                            sourceElement: this.$el
35300                        };
35301
35302                        // Dispatch for Amasty
35303                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
35304                            detail: eventDetail
35305                        }));
35306
35307                        // Dispatch for Hyva listing
35308                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
35309                            detail: eventDetail
35310                        }));
35311                    },
35312
35313
35314                    clearOptionIfActive() {
35315                        const itemId = this._getItemId();
35316                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
35317                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
35318                            this.changeOption(attrId, '');
35319
35320                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
35321                            if (!input && this.$el?.querySelector) {
35322                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
35323                            }
35324                            if (!input && this.$el?.closest) {
35325                                const root = this.$el.closest('[data-product-id]') || this.$el;
35326                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
35327                            }
35328                            if (input) {
35329                                input.checked = false;
35330                            }
35331                        }
35332                    },
35333                    get optionIsEnabled() {
35334                        const itemId = this._getItemId();
35335                        if (!this.$el || !itemId) return true;
35336                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
35337                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
35338                        return !!allowedOptions.find(opt => opt.id == itemId);
35339                    },
35340                    get isSelected() {
35341                        const itemId = this._getItemId();
35342                        if (!this.$el || !itemId) return false;
35343                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
35344                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
35345                    },
35346                    get isSwatchRequired() {
35347                        if (!this.$el) return false;
35348                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
35349                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
35350                    },
35351                    focusedLabel: false,
35352                    activeTooltipItem: false,
35353                    tooltipPositionElement: false,
35354                    setActiveTooltipItem() {
35355                        const itemId = this._getItemId();
35356                        if (!this.$el || !itemId) return;
35357                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
35358                        this.activeTooltipItem = {
35359                            attribute: attrId,
35360                            item: itemId,
35361                            index: 0
35362                        };
35363                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
35364                    },
35365                    unsetActiveTooltipItem() {
35366                        this.activeTooltipItem = false;
35367                    }
35368                },
35369                confProdPreSelect()
35370            );
35371
35372            if (result.optionConfig && result.optionConfig.attributes) {
35373                const attributes = result.optionConfig.attributes;
35374                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
35375                    let source = attributes;
35376                    if (Array.isArray(attributes)) {
35377                        source = {};
35378                        attributes.forEach(attr => {
35379                            if (attr && attr.id) source[attr.id] = attr;
35380                        });
35381                    }
35382                    const values = Object.values(source);
35383                    const wrapper = Object.assign(values, source);
35384                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
35385                        value: true,
35386                        enumerable: false
35387                    });
35388                    result.optionConfig.attributes = wrapper;
35389                }
35390            }
35391
35392            return result;
35393        }
35394
35395        window.addEventListener('alpine:init', () => {
35396            Alpine.data('initConfigurableSwatchOptions_9669', initConfigurableSwatchOptions_9669);
35397        }, {
35398            once: true
35399        });
35400    </script>
35400
35401    
35402    <div x-data="initConfigurableSwatchOptions_9669" x-defer="intersect">
35403        <div class="pagebuilder-home-hidden">
35404                                            
35405                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
35406                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
35407                        <template x-if="showSwatches">
35408                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-9669-163" role="radiogroup" aria-label="Einband">
35409                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
35410                                    <div :data-option-id="item.id" style="display: contents">
35411                                        <div x-id="getSwatchOptionHtmlIdGroup">
35412    <template x-if="optionIsEnabled">
35413        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
35413self="unsetActiveTooltipItem">
35414            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-9669-163">
35415            <div>
35416                <template x-if="isTextSwatch">
35417                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
35418                </template>
35419                <template x-if="!optionIsActive(163, item.id)">
35420                    <div>
35421                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
35422                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
35423                        </svg>
35424                    </div>
35425                </template>
35426            </div>
35427        </label>
35428    </template>
35429</div>                                    </div>
35430                                </template>
35431                            </div>
35432                        </template>
35433                    </div>
35434                </div>
35435                    </div>
35436    </div>
35437            
35438                                                <div class="meta py-4 pagebuilder-home-hidden">
35439                <div x-data="initMarketingShortText_9669()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
35440                    <!-- Marketing short text -->
35441                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
35442                    </div>
35443
35444                    <!-- Short description -->
35445                                                                <div class="short-description">
35446                            Das (Neo-)Sokratische Gespr&auml;ch ist eine philosophische Unterrichtsmethode, die auf Leonard Nelson zur&uuml;ckgeht und von Gustav Heckmann weiterentwickelt wurde. Auch wenn die Methode namentlich an ...                            <a href="https://meiner.de/fmv_de/das-sokratische
35446-gespra-ch-im-philosophie-und-ethikunterricht-16787" class="underline">mehr</a>
35447                        </div>
35448                                    </div>
35449
35450                <!-- Series  -->
35451                                    <div class="mb-1">
35452                        <span class="sr-only">Reihe:</span>
35453                        <a href="https://meiner.de/fmv_de/programm/reihen/methoden-im-philosophie-und-ethikunterricht">
35454                            <span>Methoden im Philosophie- und Ethikunterricht</span>
35455                        </a>
35456                                                    8                                            </div>
35457                
35458                
35459                                                    <div class="mb-1">
35460                        <span x-data="initEditionText_9669()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
35461                            <!-- Marketing short text -->
35462                            <span class="edition-text" x-html="editionText"></span>&nbsp;2025, 230 Seiten                        </span>
35463                    </div>
35464                
35465                            </div>
35466            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
35467                
35468                <div class="justify-end" x-data="initPriceBox()" @update-prices-9669.window="updatePrice($event.detail);">
35469                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="9669" data-price-box="product-id-9669"><span class="normal-price">
35470    <span x-data x-id="['product\u002Dprice\u002D9669']" class="price-container price-final_price tax weee">
35471            <span class="price-label">Ab</span>
35472                <span class="approx-price">ca. </span>
35473        <span :id="$id('product\u002Dprice\u002D9669')" data-price-amount="16.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">16,99&nbsp;&euro;</span></span>
35474        </span>
35475</span>
35476
35477
35478</div>                </div>
35479
35480                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
35481                                            <div class="open-access-container open-access-container-9669                    flex mt-4 ml-auto sm:mt-0 hidden">
35482                            <div class="text-gray-700">
35483                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
35484                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
35485                                        Kostenlos online lesen                                    </a>
35486                                </button>
35487                            </div>
35488                        </div>
35489                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Das Sokratische Gespr&auml;ch im Philosophie- und Ethikunterricht" aria-label="In den Warenkorb Das Sokratische Gespr&auml;ch im Philosophie- und Ethikunterricht" data-addto="cart">
35490                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
35491  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
35492</svg>
35493                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
35494                                        In den Warenkorb                                    </span>
35495                                </button>
35496                                                                                                                    
35497<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(9669)" aria-label="Zur Wunschliste hinzuf&uuml;gen Das Sokratische Gespr&auml;ch im Philosophie- und Ethikunterricht" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
35498    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
35499  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
35500</svg>
35501</button>
35502                                    </div>
35503            </div>
35504        </div>
35505        
35505<script>
35506            function initMarketingShortText_9669() {
35507                var marketingShortTextConfig = {};
35508                if (typeof window.initConfigurableSwatchOptions_9669 === "function") {
35509                    var fullConfig = window.initConfigurableSwatchOptions_9669().optionConfig
35510                    var marketingShortTextConfig = fullConfig.marketing_short_text;
35511                }
35512                return {
35513                    marketingShortText: '',
35514                    config: marketingShortTextConfig,
35515                    productId: '9669',
35516                    getMarketingShortText(detail) {
35517                        this.marketingShortText = detail.productIndex ?
35518                            this.config[detail.productIndex] :
35519                            null;
35520                    },
35521                    eventListeners: {
35522                        ['@listing-configurable-selection-changed.window'](event) {
35523                            if (this.productId == event.detail.productId) {
35524                                this.getMarketingShortText(event.detail);
35525                            }
35526
35527                        }
35528                    }
35529                }
35530            }
35531
35532            function initEditionText_9669() {
35533                var editionTextConfig = {};
35534                if (typeof window.initConfigurableSwatchOptions_9669 === "function") {
35535                    var fullConfig = window.initConfigurableSwatchOptions_9669().optionConfig
35536                    var editionTextConfig = fullConfig.edition;
35537                }
35538                return {
35539                    editionText: '',
35540                    config: editionTextConfig,
35541                    productId: '9669',
35542                    getEditionText(detail) {
35543                        this.editionText = detail.productIndex ?
35544                            this.config[detail.productIndex] :
35545                            null;
35546                    },
35547                    eventListeners: {
35548                        ['@listing-configurable-selection-changed.window'](event) {
35549                            if (this.productId == event.detail.productId) {
35550                                this.getEditionText(event.detail);
35551                            }
35552
35553                        }
35554                    }
35555                }
35556            }
35557        </script>
35557
35558                    </form>
35559                            
35560    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/9638/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk16445">
35561        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="9638">
35562                                    <a href="https://meiner.de/fmv_de/philosophieren-mit-comics-und-graphic-novels" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
35563            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-9638.window="$el.src = $event.detail" alt="Philosophieren mit Comics und Graphic Novels" title="Philosophieren mit Comics und Graphic Novels" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787340170_5.jpg" :style="{
35564                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
35565                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
35566            }">
35567                    </a>
35568        <div class="product-info flex flex-col flex-grow ">
35569                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
35570                                    <div class="mb-2 text-sm text-gray-500 font-medium">
35571                                                                                    <a href="https://meiner.de/fmv_de/person/Jorg-Peters-3207/" class="mb-2">
35572                                    J&ouml;rg Peters                                                                    </a>
35573                                                                    <span>|</span>
35574                                                                                            <a href="https://meiner.de/fmv_de/person/Martina-Peters-3206/" class="mb-2">
35575                                    Martina Peters                                                                            (Hrsg.)
35576                                                                    </a>
35577                                                                                                                                    </div>
35578                                <a class="product-item-link" href="https://meiner.de/fmv_de/philosophieren-mit-comics-und-graphic-novels">
35579                    Philosophieren mit Comics und Graphic Novels                </a>
35580                            </div>
35581
35582            <div x-data="initEditionText_9638()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
35583                <!-- Marketing short text -->
35584                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
35585                </div>
35586            </div>
35587
35588                            <div class="py-1 grid  mb-4 ">
35589                    
35590                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":9638,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":9638,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"7539":"1","7571":"1","7679":"1"},"childProductsAlertStatus":{"7539":"0","7571":"0","7679":"0"},"indexMapping":{"163:15":7539,"163:8":7571,"163:9":7679},"availabilityMessages":{"7539":"Lieferbar innerhalb von 3-5 Tagen","7571":"Download sofort  verf\u00fcgbar","7679":"Download sofort  verf\u00fcgbar"},"openAccess":{"9638":{"status":0},"7539":{"status":0},"7571":{"status":0},"7679":{"status":0}}},"availabilityMessages":{"7539":"Lieferbar innerhalb von 3-5 Tagen","7571":"Download sofort  verf\u00fcgbar","7679":"Download sofort  verf\u00fcgbar"},"openAccess":{"9638":{"status":0},"7539":{"status":0},"7571":{"status":0},"7679":{"status":0}}}'>
35591        <template x-if="containerVisible">
35592                            <!-- Popup Trigger -->
35593                <div>
35594                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
35595                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
35596                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
35597  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
35598<title>bell</title></svg>
35599</span>
35600                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
35601
35602                    <!-- Popup Modal -->
35603                    <template x-if="showModal">
35604                        <template x-teleport=".page-wrapper">
35605                            <div x-cloak class="fixed inset-0 flex items-center justify-center
35606                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
35607                                <div class="relative bg-white rounded-lg shadow-xl
35608                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
35609                                    <div class="p-6">
35610                                        <!-- Subscription Form for Popup -->
35611                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
35612                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
35613                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
35614                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
35615
35616                                            <div class="flex flex-col gap-3">
35617                                                <div class="flex-grow grow">
35618                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
35619                                                        shadow-xs focus:outline-none focus:outline-hidden
35620                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
35621                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
35622                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
35623                                                </div>
35624                                                <input type="hidden" name="product_id" :value="currentProductId">
35625                                                <input type="hidden" name="type" value="email">
35626
35627                                                
35628                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
35629
35630                                                <div class="amxnotif_guest_action">
35631                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
35632                                                        rounded-md focus:outline-none
35633                                                        focus:outline-hidden focus:ring-2
35634                                                        focus:ring-offset-2 disabled:opacity-50
35635                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
35636                                                        Benachrichtigen                                                    </button>
35637                                                </div>
35638                                            </div>
35639
35640                                                                                            <div class="flex items-start pt-2">
35641                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
35642                                                        text-blue-600 border-gray-300 rounded-sm">
35643                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
35644                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
35645                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
35646                                                </div>
35647                                                                                    </form>
35648                                    </div>
35649
35650                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
35651                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
35652                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
35653  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
35654<title>x</title></svg>
35655                                    </button>
35656                                </div>
35657                            </div>
35658                        </template>
35659                    </template>
35660                </div>
35661                    </template>
35662    </div>
35663
35664<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_9638" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":9638,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"7539":"1","7571":"1","7679":"1"},"childProductsAlertStatus":{"7539":"0","7571":"0","7679":"0"},"indexMapping":"{\u0022163:15\u0022:7539,\u0022163:8\u0022:7571,\u0022163:9\u0022:7679}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":9638,"availabilityMessages":{"7539":"Lieferbar innerhalb von 3-5 Tagen","7571":"Download sofort  verf\u00fcgbar","7679":"Download sofort  verf\u00fcgbar"},"openAccess":{"9638":{"status":0},"7539":{"status":0},"7571":{"status":0},"7679":{"status":0}}}'>
35665    
35666    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
35667        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
35668        <span x-html="optionsLabelText"></span>
35669    </p>
35670</div>                </div>
35671            
35672                                
35672<script>
35673        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
35674            try {
35675                const attributes = (config && config.attributes) ? config.attributes : null;
35676                if (!attributes) return [];
35677                let attr = null;
35678                if (Array.isArray(attributes)) {
35679                    for (let i = 0; i < attributes.length; i++) {
35680                        const a = attributes[i];
35681                        if (a && a.id == attrId) {
35682                            attr = a;
35683                            break;
35684                        }
35685                    }
35686                } else {
35687                    attr = attributes[attrId];
35688                }
35689                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
35690            } catch (e) {
35691                return [];
35692            }
35693        };
35694
35695        function initConfigurableSwatchOptions_9638() {
35696            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["7539"]},{"id":"8","label":"PDF","products":["7571"]},{"id":"9","label":"EPUB","products":["7679"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"7539":{"baseOldPrice":{"amount":23.271027037383},"oldPrice":{"amount":24.9},"basePrice":{"amount":23.271027037383},"finalPrice":{"amount":24.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"7571":{"baseOldPrice":{"amount":17.747662551402},"oldPrice":{"amount":18.99},"basePrice":{"amount":17.747662551402},"finalPrice":{"amount":18.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"7679":{"baseOldPrice":{"amount":17.747662551402},"oldPrice":{"amount":18.99},"basePrice":{"amount":17.747662551402},"finalPrice":{"amount":18.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":17.747662551402},"oldPrice":{"amount":18.99},"basePrice":{"amount":17.747662551402},"finalPrice":{"amount":18.99},"isApproxPrice":null},"productId":"9638","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"7539":{"163":"15"},"7571":{"163":"8"},"7679":{"163":"9"}},"salable":{"163":{"15":["7539"],"8":["7571"],"9":["7679"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"7539":"003652","7571":"003660","7679":"004017"},"output":{"7539":"Kartoniert","7571":"PDF","7679":"EPUB"},"original_name":{"7539":"","7571":"","7679":""},"openaccess_license_link":{"7539":"","7571":"","7679":""},"openaccess_license_name":{"7539":"","7571":"","7679":""},"openaccess_external_link":{"7539":"","7571":"","7679":""},"gpsr_safety_info":{"7539":"","7571":"","7679":""},"description":{"7539":"Comics und Graphic Novels bieten vielf\u00e4ltige M\u00f6glichkeiten, Sch\u00fclerinnen und Sch\u00fcler in den F\u00e4chern Philosophie und Ethik auf h\u00f6chst motivierende Weise zum Selberde
35696nken anzuregen und ihnen den Zugang zu komplexen Fragestellungen und Theorien durch die bildliche Unterst\u00fctzung zu erleichtern.<br\/><br\/>Der vorliegende Band liefert auf der Basis einiger in die Thematik einf\u00fchrender Bemerkungen der Herausgeber einen Theorie und einen Praxisteil sowie einen erg\u00e4nzenden Materialteil. Der Theorieteil bietet eine Einf\u00fchrung in die Bedeutung, Chancen und Grenzen des Einsatzes von Comics und Graphic Novels im Philosophie- und Ethikunterricht. Im Praxisteil finden sich Beispiele f\u00fcr Comics und Graphic Novels, die sich f\u00fcr den Einsatz in der Sekundarstufe I bzw. der Sekundarstufe II besonders eignen. Dar\u00fcber hinaus werden auch M\u00f6glichkeiten vorgestellt, wie Comics im Abitur eingesetzt werden k\u00f6nnen oder wie Sch\u00fclerinnen und Sch\u00fcler \u2013 auch ohne eine zeichnerische Begabung \u2013 selbst einen Comic zu einem vorgegebenen philosophischen Thema anfertigen k\u00f6nnen. Der Materialteil des Bandes enth\u00e4lt eine Auswahl an Comics, die weitere Anregungen f\u00fcr die Unterrichtsgestaltung bieten. ","7571":"Comics und Graphic Novels bieten vielf\u00e4ltige M\u00f6glichkeiten, Sch\u00fclerinnen und Sch\u00fcler in den F\u00e4chern Philosophie und Ethik auf h\u00f6chst motivierende Weise zum Selberde
35696nken anzuregen und ihnen den Zugang zu komplexen Fragestellungen und Theorien durch die bildliche Unterst\u00fctzung zu erleichtern.<br\/><br\/>Der vorliegende Band liefert auf der Basis einiger in die Thematik einf\u00fchrender Bemerkungen der Herausgeber einen Theorie und einen Praxisteil sowie einen erg\u00e4nzenden Materialteil. Der Theorieteil bietet eine Einf\u00fchrung in die Bedeutung, Chancen und Grenzen des Einsatzes von Comics und Graphic Novels im Philosophie- und Ethikunterricht. Im Praxisteil finden sich Beispiele f\u00fcr Comics und Graphic Novels, die sich f\u00fcr den Einsatz in der Sekundarstufe I bzw. der Sekundarstufe II besonders eignen. Dar\u00fcber hinaus werden auch M\u00f6glichkeiten vorgestellt, wie Comics im Abitur eingesetzt werden k\u00f6nnen oder wie Sch\u00fclerinnen und Sch\u00fcler \u2013 auch ohne eine zeichnerische Begabung \u2013 selbst einen Comic zu einem vorgegebenen philosophischen Thema anfertigen k\u00f6nnen. Der Materialteil des Bandes enth\u00e4lt eine Auswahl an Comics, die weitere Anregungen f\u00fcr die Unterrichtsgestaltung bieten. ","7679":"Comics und Graphic Novels bieten vielf\u00e4ltige M\u00f6glichkeiten, Sch\u00fclerinnen und Sch\u00fcler in den F\u00e4chern Philosophie und Ethik auf h\u00f6chst motivierende Weise zum Selberde
35696nken anzuregen und ihnen den Zugang zu komplexen Fragestellungen und Theorien durch die bildliche Unterst\u00fctzung zu erleichtern.<br\/><br\/>Der vorliegende Band liefert auf der Basis einiger in die Thematik einf\u00fchrender Bemerkungen der Herausgeber einen Theorie und einen Praxisteil sowie einen erg\u00e4nzenden Materialteil. Der Theorieteil bietet eine Einf\u00fchrung in die Bedeutung, Chancen und Grenzen des Einsatzes von Comics und Graphic Novels im Philosophie- und Ethikunterricht. Im Praxisteil finden sich Beispiele f\u00fcr Comics und Graphic Novels, die sich f\u00fcr den Einsatz in der Sekundarstufe I bzw. der Sekundarstufe II besonders eignen. Dar\u00fcber hinaus werden auch M\u00f6glichkeiten vorgestellt, wie Comics im Abitur eingesetzt werden k\u00f6nnen oder wie Sch\u00fclerinnen und Sch\u00fcler \u2013 auch ohne eine zeichnerische Begabung \u2013 selbst einen Comic zu einem vorgegebenen philosophischen Thema anfertigen k\u00f6nnen. Der Materialteil des Bandes enth\u00e4lt eine Auswahl an Comics, die weitere Anregungen f\u00fcr die Unterrichtsgestaltung bieten. "},"doi":{"7539":"","7571":"10.28937\/978-3-7873-3660-9","7679":""},"isbn":{"7539":"978-3-7873-3652-4","7571":"978-3-7873-3660-9","7679":"978-3-7873-4017-0"},"marketing_short_text":{"7539":"","7571":"","7679":""},"recension_text":{"7539":"","7571":"","7679":""},"language":{"7539":"","7571":"","7679":""},"cover":{"7539":"Kartoniert","7571":"","7679":""},"pages":{"7539":"248 Seiten","7571":"246 Seiten","7679":"246 Seiten"},"edition":{"7539":"","7571":"Unver\u00e4ndertes eBook der 1. Auflage von 2021","7679":"Unver\u00e4ndertes eBook der 1. Auflage von 2021"},"pod":{"7539":"Nein","7571":"Nein","7679":"Nein"},"copyright_year":{"7539":"","7571":"","7679":""},"vlb_tix_link":{"7539":"https:\/\/neu.vlbtix.de\/products\/9783787336524?type=gtin","7571":"","7679":""},"defaultValues":{"163":"15"}};
35697            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
35698
35699            if (typeof window.amxnotif_wrap_attributes === 'function') {
35700                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
35701                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
35702            }
35703
35704            const configurableOptionsComponent = initConfigurableOptions(
35705                '9638',
35706                config
35707            );
35708            const swatchOptionsComponent = initSwatchOptions(
35709                swatchConfig
35710            );
35711
35712            // DWS - Configurable product preselect start
35713            const confProdPreSelect = () => {
35714                return {
35715                    preselectQuerystringItems() {
35716                        var data = {"id":"7539","output":"15"};
35717                        const urlQueryParams = new URLSearchParams(window.location.search);
35718
35719                                                this.$nextTick(() => {
35720                            setTimeout(() => {
35721                                const rootEl = this.$root || this.$el;
35722                                if (!rootEl) return;
35723
35724                                const applySelection = (attrCode, attrValue) => {
35725                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
35726
35727                                    const attributes = Object.values(this.optionConfig.attributes || {});
35728                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
35729
35730                                    if (targetAttr) {
35731                                        const attrId = String(targetAttr.id);
35732                                        const optionVal = String(attrValue);
35733
35734                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
35735
35736                                        if (inputEl) {
35737                                                                                        inputEl.click();
35738                                            inputEl.dispatchEvent(new Event('change', {
35739                                                bubbles: true
35740                                            }));
35741                                        } else {
35742                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
35743                                            if (selectEl) {
35744                                                selectEl.value = optionVal;
35745                                                selectEl.dispatchEvent(new Event('change', {
35746                                                    bubbles: true
35747                                                }));
35748                                            }
35749                                        }
35750
35751                                                                                this.changeOption(attrId, optionVal, false);
35752                                    }
35753                                };
35754
35755                                                                if (data && typeof data === 'object') {
35756                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
35757                                }
35758
35759                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
35760                                    if (attribute && attribute.code) {
35761                                        let optionValue = urlQueryParams.get(attribute.code);
35762                                        if (optionValue) {
35763                                            let optionId = false;
35764                                            const attributes = Object.values(this.optionConfig.attributes || {});
35765                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
35766
35767                                            let found = false;
35768                                            Object.values(targetAttr.options).map(option => {
35769                                                if (found === false && option.label === optionValue) {
35770                                                    optionId = option.id;
35771                                                    found = true;
35772                                                }
35773                                            });
35774
35775                                            const attrId = String(targetAttr.id);
35776                                            let optionVal = String(optionValue);
35777                                            if (found) {
35778                                                optionVal = String(optionId);
35779                                            }
35780
35781                                            applySelection(attribute.code, optionVal);
35782                                        }
35783                                    }
35784                                });
35785                            }, 100);
35786                        });
35787                    }
35788                }
35789            };
35790            // DWS - Configurable product preselect end
35791
35792            const result = Object.assign(
35793                configurableOptionsComponent,
35794                swatchOptionsComponent, {
35795                    productId: '9638',
35796                    productIndex: 0,
35797                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
35798                    showSwatches: false,
35799                    precalcOptions: {},
35800                    originalInit: configurableOptionsComponent.init,
35801                    init() {
35802                        try {
35803                            this.precalcOptions = {};
35804                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
35805                            this.preselectQuerystringItems();
35806                            if (Array.isArray(attrSource)) {
35807                                attrSource.forEach(attr => {
35808                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
35809                                });
35810                            } else if (attrSource && typeof attrSource === 'object') {
35811                                Object.keys(attrSource).forEach(id => {
35812                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
35813                                });
35814                            }
35815                        } catch (e) {
35816                            console.error('Pre-calc error:', e);
35817                        }
35818
35819                        if (typeof this.originalInit === 'function') {
35820                            this.originalInit();
35821                        }
35822
35823                        try {
35824                            this.initShowSwatchesIntersect();
35825                        } catch (e) {
35826                            console.error('intersect error:', e);
35827                        }
35828                    },
35829
35830                    updateGallery() {
35831                        if (!this.productIndex) return;
35832
35833                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
35834                                method: 'GET',
35835                                headers: {
35836                                    'Content-Type': 'application/json',
35837                                    'X-Requested-With': 'XMLHttpRequest'
35838                                }
35839                            })
35840                            .then(response => response.json())
35841                            .then(data => {
35842                                if (data && data.medium) {
35843                                    window.dispatchEvent(new CustomEvent("update-gallery-9638", {
35844                                        detail: data.medium
35845                                    }));
35846                                }
35847                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
35848                    },
35849
35850
35851                    initShowSwatchesIntersect() {
35852                        const observer = new IntersectionObserver(entries => {
35853                            if (entries[0].isIntersecting) {
35854                                this.showSwatches = true;
35855                                observer.disconnect();
35856                            }
35857                        }, {
35858                            rootMargin: '512px'
35859                        });
35860                        observer.observe(this.$el);
35861                    },
35862                    getOptions(attrId) {
35863                        return this.precalcOptions[attrId] || [];
35864                    },
35865                    getOptionsByAttrId() {
35866                        return this.getOptions(this.$el.dataset.attributeId);
35867                    },
35868                    _getItemId() {
35869                        if (this.item && this.item.id) return this.item.id;
35870                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
35871                    },
35872                    getSwatchOptionHtmlId() {
35873                        const itemId = this._getItemId();
35874                        return itemId ? this.$id(`attribute-option-9638-${itemId}`) : '';
35875                    },
35876                    getSwatchOptionHtmlIdGroup() {
35877                        const itemId = this._getItemId();
35878                        return itemId ? [`attribute-option-9638-${itemId}`] : [];
35879                    },
35880                    getAttributeSwatchData(attributeId) {
35881                        const data = Object.assign({}, this.swatchConfig[attributeId]);
35882                        if (data['additional_data']) {
35883                            try {
35884                                data['details'] = JSON.parse(data['additional_data']);
35885                            } catch (e) {
35886                                data['details'] = {};
35887                            }
35888                        }
35889                        return data;
35890                    },
35891                    getSwatchType(attributeId, optionId) {
35892                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
35893                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
35894                        }
35895                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
35896                            this.swatchConfig[attributeId].details.swatch_input_type :
35897                            "empty";
35898                        if (type === 'visual') {
35899                            const config = this.swatchConfig[attributeId];
35900                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
35901                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
35902                            }
35903                            // Fallback to first option type
35904                            for (const oId in config) {
35905                                if (config[oId] && typeof config[oId].type !== 'undefined') {
35906                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
35907                                }
35908                            }
35909                        }
35910                        return type;
35911                    },
35912                    mapSwatchTypeNumberToTypeCode(type) {
35913                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
35914                    },
35915                    isTextSwatch() {
35916                        const itemId = this._getItemId();
35917                        if (!this.$el || !itemId) return false;
35918                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
35919                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
35920                    },
35921
35922                    getSwatchText() {
35923                        const itemId = this._getItemId();
35924                        if (this.item) return this.item.label || '';
35925                        if (!this.$el || !itemId) return '';
35926                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
35927                        const options = attrId ? this.getOptions(attrId) : [];
35928                        const opt = options.find(o => o.id == itemId);
35929                        return opt ? opt.label : '';
35930                    },
35931                    getSwatchBackgroundStyle() {
35932                        const itemId = this._getItemId();
35933                        if (!this.$el || !itemId) return '';
35934                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
35935                        if (!attrId) return '';
35936                        const type = this.getSwatchType(attrId, itemId);
35937                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
35938                            this.swatchConfig[attrId][itemId] :
35939                            null;
35940                        if (!swatchData) return '';
35941                        if (type === "color") return 'background-color:' + swatchData.value;
35942                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
35943                        return '';
35944                    },
35945                    swatchOptionClasses() {
35946                        const itemId = this._getItemId();
35947                        if (!this.$el || !itemId) return {};
35948                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
35949                        return {
35950                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
35951                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
35952                            'w-6 h-6': !this.isTextSwatch()
35953                        }
35954                    },
35955
35956                    onFocusSwatchItem() {
35957                        const itemId = this._getItemId();
35958                        if (itemId) this.focusedLabel = itemId;
35959                    },
35960                    onChangeOption() {
35961                        const itemId = this._getItemId();
35962                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
35963                        if (attrId && itemId) this.changeOption(attrId, itemId);
35964                    },
35965                    changeOption(attributeId, value) {
35966                        if (value === '') {
35967                            return;
35968                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
35969                        } else {
35970                            this.selectedValues[attributeId] = value;
35971                        }
35972
35973                        this.findSimpleIndex();
35974                        this.findAllowedAttributeOptions();
35975                        this.updatePrices();
35976                        this.updateGallery();
35977
35978                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
35979                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
35980
35981                        const eventDetail = {
35982                            productId: this.productId,
35983                            optionId: attributeId,
35984                            value: value,
35985                            productIndex: this.productIndex || 0,
35986                            selectedValues: this.selectedValues,
35987                            candidates: candidates,
35988                            sourceElement: this.$el
35989                        };
35990
35991                        // Dispatch for Amasty
35992                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
35993                            detail: eventDetail
35994                        }));
35995
35996                        // Dispatch for Hyva listing
35997                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
35998                            detail: eventDetail
35999                        }));
36000                    },
36001
36002
36003                    clearOptionIfActive() {
36004                        const itemId = this._getItemId();
36005                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
36006                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
36007                            this.changeOption(attrId, '');
36008
36009                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
36010                            if (!input && this.$el?.querySelector) {
36011                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
36012                            }
36013                            if (!input && this.$el?.closest) {
36014                                const root = this.$el.closest('[data-product-id]') || this.$el;
36015                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
36016                            }
36017                            if (input) {
36018                                input.checked = false;
36019                            }
36020                        }
36021                    },
36022                    get optionIsEnabled() {
36023                        const itemId = this._getItemId();
36024                        if (!this.$el || !itemId) return true;
36025                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
36026                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
36027                        return !!allowedOptions.find(opt => opt.id == itemId);
36028                    },
36029                    get isSelected() {
36030                        const itemId = this._getItemId();
36031                        if (!this.$el || !itemId) return false;
36032                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
36033                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
36034                    },
36035                    get isSwatchRequired() {
36036                        if (!this.$el) return false;
36037                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
36038                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
36039                    },
36040                    focusedLabel: false,
36041                    activeTooltipItem: false,
36042                    tooltipPositionElement: false,
36043                    setActiveTooltipItem() {
36044                        const itemId = this._getItemId();
36045                        if (!this.$el || !itemId) return;
36046                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
36047                        this.activeTooltipItem = {
36048                            attribute: attrId,
36049                            item: itemId,
36050                            index: 0
36051                        };
36052                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
36053                    },
36054                    unsetActiveTooltipItem() {
36055                        this.activeTooltipItem = false;
36056                    }
36057                },
36058                confProdPreSelect()
36059            );
36060
36061            if (result.optionConfig && result.optionConfig.attributes) {
36062                const attributes = result.optionConfig.attributes;
36063                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
36064                    let source = attributes;
36065                    if (Array.isArray(attributes)) {
36066                        source = {};
36067                        attributes.forEach(attr => {
36068                            if (attr && attr.id) source[attr.id] = attr;
36069                        });
36070                    }
36071                    const values = Object.values(source);
36072                    const wrapper = Object.assign(values, source);
36073                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
36074                        value: true,
36075                        enumerable: false
36076                    });
36077                    result.optionConfig.attributes = wrapper;
36078                }
36079            }
36080
36081            return result;
36082        }
36083
36084        window.addEventListener('alpine:init', () => {
36085            Alpine.data('initConfigurableSwatchOptions_9638', initConfigurableSwatchOptions_9638);
36086        }, {
36087            once: true
36088        });
36089    </script>
36089
36090    
36091    <div x-data="initConfigurableSwatchOptions_9638" x-defer="intersect">
36092        <div class="pagebuilder-home-hidden">
36093                                            
36094                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
36095                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
36096                        <template x-if="showSwatches">
36097                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-9638-163" role="radiogroup" aria-label="Einband">
36098                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
36099                                    <div :data-option-id="item.id" style="display: contents">
36100                                        <div x-id="getSwatchOptionHtmlIdGroup">
36101    <template x-if="optionIsEnabled">
36102        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
36102self="unsetActiveTooltipItem">
36103            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-9638-163">
36104            <div>
36105                <template x-if="isTextSwatch">
36106                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
36107                </template>
36108                <template x-if="!optionIsActive(163, item.id)">
36109                    <div>
36110                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
36111                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
36112                        </svg>
36113                    </div>
36114                </template>
36115            </div>
36116        </label>
36117    </template>
36118</div>                                    </div>
36119                                </template>
36120                            </div>
36121                        </template>
36122                    </div>
36123                </div>
36124                    </div>
36125    </div>
36126            
36127                                                <div class="meta py-4 pagebuilder-home-hidden">
36128                <div x-data="initMarketingShortText_9638()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
36129                    <!-- Marketing short text -->
36130                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
36131                    </div>
36132
36133                    <!-- Short description -->
36134                                                                <div class="short-description">
36135                            Comics und Graphic Novels bieten vielf&auml;ltige M&ouml;glichkeiten, Sch&uuml;lerinnen und Sch&uuml;ler in den F&auml;chern Philosophie und Ethik auf h&ouml;
36135chst motivierende Weise zum Selberdenken anzuregen und ihnen den ...                            <a href="https://meiner.de/fmv_de/philosophieren-mit-comics-und-graphic-novels" class="underline">mehr</a>
36136                        </div>
36137                                    </div>
36138
36139                <!-- Series  -->
36140                                    <div class="mb-1">
36141                        <span class="sr-only">Reihe:</span>
36142                        <a href="https://meiner.de/fmv_de/programm/reihen/methoden-im-philosophie-und-ethikunterricht">
36143                            <span>Methoden im Philosophie- und Ethikunterricht</span>
36144                        </a>
36145                                                    4                                            </div>
36146                
36147                
36148                                                    <div class="mb-1">
36149                        <span x-data="initEditionText_9638()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
36150                            <!-- Marketing short text -->
36151                            <span class="edition-text" x-html="editionText"></span>&nbsp;2021, 248 Seiten                        </span>
36152                    </div>
36153                
36154                            </div>
36155            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
36156                
36157                <div class="justify-end" x-data="initPriceBox()" @update-prices-9638.window="updatePrice($event.detail);">
36158                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="9638" data-price-box="product-id-9638"><span class="normal-price">
36159    <span x-data x-id="['product\u002Dprice\u002D9638']" class="price-container price-final_price tax weee">
36160            <span class="price-label">Ab</span>
36161                <span class="approx-price">ca. </span>
36162        <span :id="$id('product\u002Dprice\u002D9638')" data-price-amount="18.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">18,99&nbsp;&euro;</span></span>
36163        </span>
36164</span>
36165
36166
36167</div>                </div>
36168
36169                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
36170                                            <div class="open-access-container open-access-container-9638                    flex mt-4 ml-auto sm:mt-0 hidden">
36171                            <div class="text-gray-700">
36172                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
36173                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
36174                                        Kostenlos online lesen                                    </a>
36175                                </button>
36176                            </div>
36177                        </div>
36178                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Philosophieren mit Comics und Graphic Novels" aria-label="In den Warenkorb Philosophieren mit Comics und Graphic Novels" data-addto="cart">
36179                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
36180  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
36181</svg>
36182                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
36183                                        In den Warenkorb                                    </span>
36184                                </button>
36185                                                                                                                    
36186<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(9638)" aria-label="Zur Wunschliste hinzuf&uuml;gen Philosophieren mit Comics und Graphic Novels" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
36187    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
36188  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
36189</svg>
36190</button>
36191                                    </div>
36192            </div>
36193        </div>
36194        
36194<script>
36195            function initMarketingShortText_9638() {
36196                var marketingShortTextConfig = {};
36197                if (typeof window.initConfigurableSwatchOptions_9638 === "function") {
36198                    var fullConfig = window.initConfigurableSwatchOptions_9638().optionConfig
36199                    var marketingShortTextConfig = fullConfig.marketing_short_text;
36200                }
36201                return {
36202                    marketingShortText: '',
36203                    config: marketingShortTextConfig,
36204                    productId: '9638',
36205                    getMarketingShortText(detail) {
36206                        this.marketingShortText = detail.productIndex ?
36207                            this.config[detail.productIndex] :
36208                            null;
36209                    },
36210                    eventListeners: {
36211                        ['@listing-configurable-selection-changed.window'](event) {
36212                            if (this.productId == event.detail.productId) {
36213                                this.getMarketingShortText(event.detail);
36214                            }
36215
36216                        }
36217                    }
36218                }
36219            }
36220
36221            function initEditionText_9638() {
36222                var editionTextConfig = {};
36223                if (typeof window.initConfigurableSwatchOptions_9638 === "function") {
36224                    var fullConfig = window.initConfigurableSwatchOptions_9638().optionConfig
36225                    var editionTextConfig = fullConfig.edition;
36226                }
36227                return {
36228                    editionText: '',
36229                    config: editionTextConfig,
36230                    productId: '9638',
36231                    getEditionText(detail) {
36232                        this.editionText = detail.productIndex ?
36233                            this.config[detail.productIndex] :
36234                            null;
36235                    },
36236                    eventListeners: {
36237                        ['@listing-configurable-selection-changed.window'](event) {
36238                            if (this.productId == event.detail.productId) {
36239                                this.getEditionText(event.detail);
36240                            }
36241
36242                        }
36243                    }
36244                }
36245            }
36246        </script>
36246
36247                    </form>
36248                            
36249    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/9637/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk16444">
36250        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="9637">
36251                                    <a href="https://meiner.de/fmv_de/philosophieren-mit-dilemmata" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
36252            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-9637.window="$el.src = $event.detail" alt="Philosophieren mit Dilemmata" title="Philosophieren mit Dilemmata" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787349425_3.jpg" :style="{
36253                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
36254                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
36255            }">
36256                    </a>
36257        <div class="product-info flex flex-col flex-grow ">
36258                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
36259                                    <div class="mb-2 text-sm text-gray-500 font-medium">
36260                                                                                    <a href="https://meiner.de/fmv_de/person/Jorg-Peters-3207/" class="mb-2">
36261                                    J&ouml;rg Peters                                                                    </a>
36262                                                                    <span>|</span>
36263                                                                                            <a href="https://meiner.de/fmv_de/person/Martina-Peters-3206/" class="mb-2">
36264                                    Martina Peters                                                                            (Hrsg.)
36265                                                                    </a>
36266                                                                                                                                    </div>
36267                                <a class="product-item-link" href="https://meiner.de/fmv_de/philosophieren-mit-dilemmata">
36268                    Philosophieren mit Dilemmata                </a>
36269                            </div>
36270
36271            <div x-data="initEditionText_9637()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
36272                <!-- Marketing short text -->
36273                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
36274                </div>
36275            </div>
36276
36277                            <div class="py-1 grid  mb-4 ">
36278                    
36279                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":9637,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":9637,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"7326":"1","39961":"1","7540":"1"},"childProductsAlertStatus":{"7326":"0","39961":"0","7540":"0"},"indexMapping":{"163:8":7326,"163:15":39961,"163:9":7540},"availabilityMessages":{"7326":"Download sofort  verf\u00fcgbar","39961":"Lieferbar innerhalb von 3-5 Tagen","7540":"Download sofort  verf\u00fcgbar"},"openAccess":{"9637":{"status":0},"7326":{"status":0},"39961":{"status":0},"7540":{"status":0}}},"availabilityMessages":{"7326":"Download sofort  verf\u00fcgbar","39961":"Lieferbar innerhalb von 3-5 Tagen","7540":"Download sofort  verf\u00fcgbar"},"openAccess":{"9637":{"status":0},"7326":{"status":0},"39961":{"status":0},"7540":{"status":0}}}'>
36280        <template x-if="containerVisible">
36281                            <!-- Popup Trigger -->
36282                <div>
36283                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
36284                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
36285                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
36286  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
36287<title>bell</title></svg>
36288</span>
36289                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
36290
36291                    <!-- Popup Modal -->
36292                    <template x-if="showModal">
36293                        <template x-teleport=".page-wrapper">
36294                            <div x-cloak class="fixed inset-0 flex items-center justify-center
36295                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
36296                                <div class="relative bg-white rounded-lg shadow-xl
36297                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
36298                                    <div class="p-6">
36299                                        <!-- Subscription Form for Popup -->
36300                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
36301                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
36302                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
36303                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
36304
36305                                            <div class="flex flex-col gap-3">
36306                                                <div class="flex-grow grow">
36307                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
36308                                                        shadow-xs focus:outline-none focus:outline-hidden
36309                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
36310                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
36311                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
36312                                                </div>
36313                                                <input type="hidden" name="product_id" :value="currentProductId">
36314                                                <input type="hidden" name="type" value="email">
36315
36316                                                
36317                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
36318
36319                                                <div class="amxnotif_guest_action">
36320                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
36321                                                        rounded-md focus:outline-none
36322                                                        focus:outline-hidden focus:ring-2
36323                                                        focus:ring-offset-2 disabled:opacity-50
36324                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
36325                                                        Benachrichtigen                                                    </button>
36326                                                </div>
36327                                            </div>
36328
36329                                                                                            <div class="flex items-start pt-2">
36330                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
36331                                                        text-blue-600 border-gray-300 rounded-sm">
36332                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
36333                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
36334                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
36335                                                </div>
36336                                                                                    </form>
36337                                    </div>
36338
36339                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
36340                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
36341                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
36342  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
36343<title>x</title></svg>
36344                                    </button>
36345                                </div>
36346                            </div>
36347                        </template>
36348                    </template>
36349                </div>
36350                    </template>
36351    </div>
36352
36353<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_9637" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":9637,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"7326":"1","39961":"1","7540":"1"},"childProductsAlertStatus":{"7326":"0","39961":"0","7540":"0"},"indexMapping":"{\u0022163:8\u0022:7326,\u0022163:15\u0022:39961,\u0022163:9\u0022:7540}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":9637,"availabilityMessages":{"7326":"Download sofort  verf\u00fcgbar","39961":"Lieferbar innerhalb von 3-5 Tagen","7540":"Download sofort  verf\u00fcgbar"},"openAccess":{"9637":{"status":0},"7326":{"status":0},"39961":{"status":0},"7540":{"status":0}}}'>
36354    
36355    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
36356        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
36357        <span x-html="optionsLabelText"></span>
36358    </p>
36359</div>                </div>
36360            
36361                                
36361<script>
36362        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
36363            try {
36364                const attributes = (config && config.attributes) ? config.attributes : null;
36365                if (!attributes) return [];
36366                let attr = null;
36367                if (Array.isArray(attributes)) {
36368                    for (let i = 0; i < attributes.length; i++) {
36369                        const a = attributes[i];
36370                        if (a && a.id == attrId) {
36371                            attr = a;
36372                            break;
36373                        }
36374                    }
36375                } else {
36376                    attr = attributes[attrId];
36377                }
36378                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
36379            } catch (e) {
36380                return [];
36381            }
36382        };
36383
36384        function initConfigurableSwatchOptions_9637() {
36385            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["39961"]},{"id":"8","label":"PDF","products":["7326"]},{"id":"9","label":"EPUB","products":["7540"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"7326":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":15.878503672897},"finalPrice":{"amount":16.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"39961":{"baseOldPrice":{"amount":21.401868158879},"oldPrice":{"amount":22.9},"basePrice":{"amount":21.401868158879},"finalPrice":{"amount":22.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"7540":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":15.878503672897},"finalPrice":{"amount":16.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":15.878503672897},"finalPrice":{"amount":16.99},"isApproxPrice":null},"productId":"9637","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"7326":{"163":"8"},"39961":{"163":"15"},"7540":{"163":"9"}},"salable":{"163":{"8":["7326"],"15":["39961"],"9":["7540"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"7326":"003746","39961":"004942","7540":"003860"},"output":{"7326":"PDF","7540":"EPUB","39961":"Kartoniert"},"original_name":{"7326":"","7540":"","39961":""},"openaccess_license_link":{"7326":"","7540":"","39961":""},"openaccess_license_name":{"7326":"","7540":"","39961":""},"openaccess_external_link":{"7326":"","7540":"","39961":""},"gpsr_safety_info":{"7326":"","7540":"","39961":""},"description":{"7326":"Moralisch handeln in scheinbar ausweglosen Situationen? Die Auseinandersetzung mit Dilemmata im Unterricht fokussiert die moralische Kompetenzbildung und -f\u00f6rderung, welche in unserer hochvernetzten und komplexen Welt von gro\u00dfer Aktualit\u00e4t ist. Im Theorieteil dieses Bandes werden verschiedene Methoden der Dilemma-Diskussion vorgestellt und ihr Einsatz im Philosophie- und Ethikunterricht diskutiert. Der Praxisteil erl\u00e4utert anhand zahlreicher Beispiele, wie Dilemmata problem-, sch\u00fcler- und kompetenzorientiert eingesetzt werden k\u00f6nnen. Die Einleitung der Herausgeber, eine Auswahl moralischer Dilemmata sowie eine Auswahlbibliographie bieten weitere Anregungen f\u00fcr die Unterrichtsgestaltung.","7540":"Moralisch handeln in scheinbar ausweglosen Situationen? Die Auseinandersetzung mit Dilemmata im Unterricht fokussiert die moralische Kompetenzbildung und -f\u00f6rderung, welche in unserer hochvernetzten und komplexen Welt von gro\u00dfer Aktualit\u00e4t ist. Im Theorieteil dieses Bandes werden verschiedene Methoden der Dilemma-Diskussion vorgestellt und ihr Einsatz im Philosophie- und Ethikunterricht diskutiert. Der Praxisteil erl\u00e4utert anhand zahlreicher Beispiele, wie Dilemmata problem-, sch\u00fcler- und kompetenzorientiert eingesetzt werden k\u00f6nnen. Die Einleitung der Herausgeber, eine Auswahl moralischer Dilemmata sowie eine Auswahlbibliographie bieten weitere Anregungen f\u00fcr die Unterrichtsgestaltung.","39961":"Moralisch handeln in scheinbar ausweglosen Situationen? Die Auseinandersetzung mit Dilemmata im Unterricht fokussiert die moralische Kompetenzbildung und 
36385-f\u00f6rderung, welche in unserer hochvernetzten und komplexen Welt von gro\u00dfer Aktualit\u00e4t ist. Im Theorieteil dieses Bandes werden verschiedene Methoden der Dilemma-Diskussion vorgestellt und ihr Einsatz im Philosophie- und Ethikunterricht diskutiert. Der Praxisteil erl\u00e4utert anhand zahlreicher Beispiele, wie Dilemmata problem-, sch\u00fcler- und kompetenzorientiert eingesetzt werden k\u00f6nnen. Die Einleitung der Herausgeber, eine Auswahl moralischer Dilemmata sowie eine Auswahlbibliographie bieten weitere Anregungen f\u00fcr die Unterrichtsgestaltung."},"doi":{"7326":"10.28937\/978-3-7873-3746-0","7540":"","39961":""},"isbn":{"7326":"978-3-7873-3746-0","7540":"978-3-7873-3860-3","39961":"978-3-7873-4942-5"},"marketing_short_text":{"7326":"","7540":"","39961":""},"recension_text":{"7326":"","7540":"","39961":""},"language":{"7326":"","7540":"","39961":""},"cover":{"7326":"","7540":"","39961":"Kartoniert"},"pages":{"7326":"156 Seiten","7540":"158 Seiten","39961":"156 Seiten"},"edition":{"7326":"Unver\u00e4ndertes eBook der 1. Auflage von 2020","7540":"Unver\u00e4ndertes eBook der 1. Auflage von 2020","39961":"2., \u00fcberarbeitete Auflage"},"pod":{"7326":"Nein","7540":"Nein","39961":"Nein"},"copyright_year":{"7326":"","7540":"","39961":""},"vlb_tix_link":{"7326":"","7540":"","39961":"https:\/\/neu.vlbtix.de\/products\/9783787349425?type=gtin"},"defaultValues":{"163":"15"}};
36386            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
36387
36388            if (typeof window.amxnotif_wrap_attributes === 'function') {
36389                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
36390                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
36391            }
36392
36393            const configurableOptionsComponent = initConfigurableOptions(
36394                '9637',
36395                config
36396            );
36397            const swatchOptionsComponent = initSwatchOptions(
36398                swatchConfig
36399            );
36400
36401            // DWS - Configurable product preselect start
36402            const confProdPreSelect = () => {
36403                return {
36404                    preselectQuerystringItems() {
36405                        var data = {"id":"39961","output":"15"};
36406                        const urlQueryParams = new URLSearchParams(window.location.search);
36407
36408                                                this.$nextTick(() => {
36409                            setTimeout(() => {
36410                                const rootEl = this.$root || this.$el;
36411                                if (!rootEl) return;
36412
36413                                const applySelection = (attrCode, attrValue) => {
36414                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
36415
36416                                    const attributes = Object.values(this.optionConfig.attributes || {});
36417                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
36418
36419                                    if (targetAttr) {
36420                                        const attrId = String(targetAttr.id);
36421                                        const optionVal = String(attrValue);
36422
36423                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
36424
36425                                        if (inputEl) {
36426                                                                                        inputEl.click();
36427                                            inputEl.dispatchEvent(new Event('change', {
36428                                                bubbles: true
36429                                            }));
36430                                        } else {
36431                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
36432                                            if (selectEl) {
36433                                                selectEl.value = optionVal;
36434                                                selectEl.dispatchEvent(new Event('change', {
36435                                                    bubbles: true
36436                                                }));
36437                                            }
36438                                        }
36439
36440                                                                                this.changeOption(attrId, optionVal, false);
36441                                    }
36442                                };
36443
36444                                                                if (data && typeof data === 'object') {
36445                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
36446                                }
36447
36448                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
36449                                    if (attribute && attribute.code) {
36450                                        let optionValue = urlQueryParams.get(attribute.code);
36451                                        if (optionValue) {
36452                                            let optionId = false;
36453                                            const attributes = Object.values(this.optionConfig.attributes || {});
36454                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
36455
36456                                            let found = false;
36457                                            Object.values(targetAttr.options).map(option => {
36458                                                if (found === false && option.label === optionValue) {
36459                                                    optionId = option.id;
36460                                                    found = true;
36461                                                }
36462                                            });
36463
36464                                            const attrId = String(targetAttr.id);
36465                                            let optionVal = String(optionValue);
36466                                            if (found) {
36467                                                optionVal = String(optionId);
36468                                            }
36469
36470                                            applySelection(attribute.code, optionVal);
36471                                        }
36472                                    }
36473                                });
36474                            }, 100);
36475                        });
36476                    }
36477                }
36478            };
36479            // DWS - Configurable product preselect end
36480
36481            const result = Object.assign(
36482                configurableOptionsComponent,
36483                swatchOptionsComponent, {
36484                    productId: '9637',
36485                    productIndex: 0,
36486                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
36487                    showSwatches: false,
36488                    precalcOptions: {},
36489                    originalInit: configurableOptionsComponent.init,
36490                    init() {
36491                        try {
36492                            this.precalcOptions = {};
36493                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
36494                            this.preselectQuerystringItems();
36495                            if (Array.isArray(attrSource)) {
36496                                attrSource.forEach(attr => {
36497                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
36498                                });
36499                            } else if (attrSource && typeof attrSource === 'object') {
36500                                Object.keys(attrSource).forEach(id => {
36501                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
36502                                });
36503                            }
36504                        } catch (e) {
36505                            console.error('Pre-calc error:', e);
36506                        }
36507
36508                        if (typeof this.originalInit === 'function') {
36509                            this.originalInit();
36510                        }
36511
36512                        try {
36513                            this.initShowSwatchesIntersect();
36514                        } catch (e) {
36515                            console.error('intersect error:', e);
36516                        }
36517                    },
36518
36519                    updateGallery() {
36520                        if (!this.productIndex) return;
36521
36522                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
36523                                method: 'GET',
36524                                headers: {
36525                                    'Content-Type': 'application/json',
36526                                    'X-Requested-With': 'XMLHttpRequest'
36527                                }
36528                            })
36529                            .then(response => response.json())
36530                            .then(data => {
36531                                if (data && data.medium) {
36532                                    window.dispatchEvent(new CustomEvent("update-gallery-9637", {
36533                                        detail: data.medium
36534                                    }));
36535                                }
36536                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
36537                    },
36538
36539
36540                    initShowSwatchesIntersect() {
36541                        const observer = new IntersectionObserver(entries => {
36542                            if (entries[0].isIntersecting) {
36543                                this.showSwatches = true;
36544                                observer.disconnect();
36545                            }
36546                        }, {
36547                            rootMargin: '512px'
36548                        });
36549                        observer.observe(this.$el);
36550                    },
36551                    getOptions(attrId) {
36552                        return this.precalcOptions[attrId] || [];
36553                    },
36554                    getOptionsByAttrId() {
36555                        return this.getOptions(this.$el.dataset.attributeId);
36556                    },
36557                    _getItemId() {
36558                        if (this.item && this.item.id) return this.item.id;
36559                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
36560                    },
36561                    getSwatchOptionHtmlId() {
36562                        const itemId = this._getItemId();
36563                        return itemId ? this.$id(`attribute-option-9637-${itemId}`) : '';
36564                    },
36565                    getSwatchOptionHtmlIdGroup() {
36566                        const itemId = this._getItemId();
36567                        return itemId ? [`attribute-option-9637-${itemId}`] : [];
36568                    },
36569                    getAttributeSwatchData(attributeId) {
36570                        const data = Object.assign({}, this.swatchConfig[attributeId]);
36571                        if (data['additional_data']) {
36572                            try {
36573                                data['details'] = JSON.parse(data['additional_data']);
36574                            } catch (e) {
36575                                data['details'] = {};
36576                            }
36577                        }
36578                        return data;
36579                    },
36580                    getSwatchType(attributeId, optionId) {
36581                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
36582                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
36583                        }
36584                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
36585                            this.swatchConfig[attributeId].details.swatch_input_type :
36586                            "empty";
36587                        if (type === 'visual') {
36588                            const config = this.swatchConfig[attributeId];
36589                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
36590                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
36591                            }
36592                            // Fallback to first option type
36593                            for (const oId in config) {
36594                                if (config[oId] && typeof config[oId].type !== 'undefined') {
36595                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
36596                                }
36597                            }
36598                        }
36599                        return type;
36600                    },
36601                    mapSwatchTypeNumberToTypeCode(type) {
36602                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
36603                    },
36604                    isTextSwatch() {
36605                        const itemId = this._getItemId();
36606                        if (!this.$el || !itemId) return false;
36607                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
36608                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
36609                    },
36610
36611                    getSwatchText() {
36612                        const itemId = this._getItemId();
36613                        if (this.item) return this.item.label || '';
36614                        if (!this.$el || !itemId) return '';
36615                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
36616                        const options = attrId ? this.getOptions(attrId) : [];
36617                        const opt = options.find(o => o.id == itemId);
36618                        return opt ? opt.label : '';
36619                    },
36620                    getSwatchBackgroundStyle() {
36621                        const itemId = this._getItemId();
36622                        if (!this.$el || !itemId) return '';
36623                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
36624                        if (!attrId) return '';
36625                        const type = this.getSwatchType(attrId, itemId);
36626                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
36627                            this.swatchConfig[attrId][itemId] :
36628                            null;
36629                        if (!swatchData) return '';
36630                        if (type === "color") return 'background-color:' + swatchData.value;
36631                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
36632                        return '';
36633                    },
36634                    swatchOptionClasses() {
36635                        const itemId = this._getItemId();
36636                        if (!this.$el || !itemId) return {};
36637                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
36638                        return {
36639                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
36640                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
36641                            'w-6 h-6': !this.isTextSwatch()
36642                        }
36643                    },
36644
36645                    onFocusSwatchItem() {
36646                        const itemId = this._getItemId();
36647                        if (itemId) this.focusedLabel = itemId;
36648                    },
36649                    onChangeOption() {
36650                        const itemId = this._getItemId();
36651                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
36652                        if (attrId && itemId) this.changeOption(attrId, itemId);
36653                    },
36654                    changeOption(attributeId, value) {
36655                        if (value === '') {
36656                            return;
36657                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
36658                        } else {
36659                            this.selectedValues[attributeId] = value;
36660                        }
36661
36662                        this.findSimpleIndex();
36663                        this.findAllowedAttributeOptions();
36664                        this.updatePrices();
36665                        this.updateGallery();
36666
36667                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
36668                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
36669
36670                        const eventDetail = {
36671                            productId: this.productId,
36672                            optionId: attributeId,
36673                            value: value,
36674                            productIndex: this.productIndex || 0,
36675                            selectedValues: this.selectedValues,
36676                            candidates: candidates,
36677                            sourceElement: this.$el
36678                        };
36679
36680                        // Dispatch for Amasty
36681                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
36682                            detail: eventDetail
36683                        }));
36684
36685                        // Dispatch for Hyva listing
36686                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
36687                            detail: eventDetail
36688                        }));
36689                    },
36690
36691
36692                    clearOptionIfActive() {
36693                        const itemId = this._getItemId();
36694                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
36695                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
36696                            this.changeOption(attrId, '');
36697
36698                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
36699                            if (!input && this.$el?.querySelector) {
36700                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
36701                            }
36702                            if (!input && this.$el?.closest) {
36703                                const root = this.$el.closest('[data-product-id]') || this.$el;
36704                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
36705                            }
36706                            if (input) {
36707                                input.checked = false;
36708                            }
36709                        }
36710                    },
36711                    get optionIsEnabled() {
36712                        const itemId = this._getItemId();
36713                        if (!this.$el || !itemId) return true;
36714                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
36715                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
36716                        return !!allowedOptions.find(opt => opt.id == itemId);
36717                    },
36718                    get isSelected() {
36719                        const itemId = this._getItemId();
36720                        if (!this.$el || !itemId) return false;
36721                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
36722                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
36723                    },
36724                    get isSwatchRequired() {
36725                        if (!this.$el) return false;
36726                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
36727                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
36728                    },
36729                    focusedLabel: false,
36730                    activeTooltipItem: false,
36731                    tooltipPositionElement: false,
36732                    setActiveTooltipItem() {
36733                        const itemId = this._getItemId();
36734                        if (!this.$el || !itemId) return;
36735                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
36736                        this.activeTooltipItem = {
36737                            attribute: attrId,
36738                            item: itemId,
36739                            index: 0
36740                        };
36741                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
36742                    },
36743                    unsetActiveTooltipItem() {
36744                        this.activeTooltipItem = false;
36745                    }
36746                },
36747                confProdPreSelect()
36748            );
36749
36750            if (result.optionConfig && result.optionConfig.attributes) {
36751                const attributes = result.optionConfig.attributes;
36752                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
36753                    let source = attributes;
36754                    if (Array.isArray(attributes)) {
36755                        source = {};
36756                        attributes.forEach(attr => {
36757                            if (attr && attr.id) source[attr.id] = attr;
36758                        });
36759                    }
36760                    const values = Object.values(source);
36761                    const wrapper = Object.assign(values, source);
36762                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
36763                        value: true,
36764                        enumerable: false
36765                    });
36766                    result.optionConfig.attributes = wrapper;
36767                }
36768            }
36769
36770            return result;
36771        }
36772
36773        window.addEventListener('alpine:init', () => {
36774            Alpine.data('initConfigurableSwatchOptions_9637', initConfigurableSwatchOptions_9637);
36775        }, {
36776            once: true
36777        });
36778    </script>
36778
36779    
36780    <div x-data="initConfigurableSwatchOptions_9637" x-defer="intersect">
36781        <div class="pagebuilder-home-hidden">
36782                                            
36783                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
36784                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
36785                        <template x-if="showSwatches">
36786                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-9637-163" role="radiogroup" aria-label="Einband">
36787                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
36788                                    <div :data-option-id="item.id" style="display: contents">
36789                                        <div x-id="getSwatchOptionHtmlIdGroup">
36790    <template x-if="optionIsEnabled">
36791        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
36791self="unsetActiveTooltipItem">
36792            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-9637-163">
36793            <div>
36794                <template x-if="isTextSwatch">
36795                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
36796                </template>
36797                <template x-if="!optionIsActive(163, item.id)">
36798                    <div>
36799                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
36800                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
36801                        </svg>
36802                    </div>
36803                </template>
36804            </div>
36805        </label>
36806    </template>
36807</div>                                    </div>
36808                                </template>
36809                            </div>
36810                        </template>
36811                    </div>
36812                </div>
36813                    </div>
36814    </div>
36815            
36816                                                <div class="meta py-4 pagebuilder-home-hidden">
36817                <div x-data="initMarketingShortText_9637()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
36818                    <!-- Marketing short text -->
36819                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
36820                    </div>
36821
36822                    <!-- Short description -->
36823                                                                <div class="short-description">
36824                            Moralisch handeln in scheinbar ausweglosen Situationen? Die Auseinandersetzung mit Dilemmata im Unterricht fokussiert die moralische Kompetenzbildung und -f&ouml;rderung, welche in unserer ...                            <a href="https://meiner.de/fmv_de/philosophieren-mit-dilemmata" class="underline">mehr</a>
36825                        </div>
36826                                    </div>
36827
36828                <!-- Series  -->
36829                                    <div class="mb-1">
36830                        <span class="sr-only">Reihe:</span>
36831                        <a href="https://meiner.de/fmv_de/programm/reihen/methoden-im-philosophie-und-ethikunterricht">
36832                            <span>Methoden im Philosophie- und Ethikunterricht</span>
36833                        </a>
36834                                                    3                                            </div>
36835                
36836                
36837                                                    <div class="mb-1">
36838                        <span x-data="initEditionText_9637()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
36839                            <!-- Marketing short text -->
36840                            <span class="edition-text" x-html="editionText"></span>&nbsp;2025, 156 Seiten                        </span>
36841                    </div>
36842                
36843                            </div>
36844            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
36845                
36846                <div class="justify-end" x-data="initPriceBox()" @update-prices-9637.window="updatePrice($event.detail);">
36847                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="9637" data-price-box="product-id-9637"><span class="normal-price">
36848    <span x-data x-id="['product\u002Dprice\u002D9637']" class="price-container price-final_price tax weee">
36849            <span class="price-label">Ab</span>
36850                <span class="approx-price">ca. </span>
36851        <span :id="$id('product\u002Dprice\u002D9637')" data-price-amount="16.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">16,99&nbsp;&euro;</span></span>
36852        </span>
36853</span>
36854
36855
36856</div>                </div>
36857
36858                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
36859                                            <div class="open-access-container open-access-container-9637                    flex mt-4 ml-auto sm:mt-0 hidden">
36860                            <div class="text-gray-700">
36861                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
36862                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
36863                                        Kostenlos online lesen                                    </a>
36864                                </button>
36865                            </div>
36866                        </div>
36867                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Philosophieren mit Dilemmata" aria-label="In den Warenkorb Philosophieren mit Dilemmata" data-addto="cart">
36868                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
36869  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
36870</svg>
36871                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
36872                                        In den Warenkorb                                    </span>
36873                                </button>
36874                                                                                                                    
36875<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(9637)" aria-label="Zur Wunschliste hinzuf&uuml;gen Philosophieren mit Dilemmata" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
36876    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
36877  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
36878</svg>
36879</button>
36880                                    </div>
36881            </div>
36882        </div>
36883        
36883<script>
36884            function initMarketingShortText_9637() {
36885                var marketingShortTextConfig = {};
36886                if (typeof window.initConfigurableSwatchOptions_9637 === "function") {
36887                    var fullConfig = window.initConfigurableSwatchOptions_9637().optionConfig
36888                    var marketingShortTextConfig = fullConfig.marketing_short_text;
36889                }
36890                return {
36891                    marketingShortText: '',
36892                    config: marketingShortTextConfig,
36893                    productId: '9637',
36894                    getMarketingShortText(detail) {
36895                        this.marketingShortText = detail.productIndex ?
36896                            this.config[detail.productIndex] :
36897                            null;
36898                    },
36899                    eventListeners: {
36900                        ['@listing-configurable-selection-changed.window'](event) {
36901                            if (this.productId == event.detail.productId) {
36902                                this.getMarketingShortText(event.detail);
36903                            }
36904
36905                        }
36906                    }
36907                }
36908            }
36909
36910            function initEditionText_9637() {
36911                var editionTextConfig = {};
36912                if (typeof window.initConfigurableSwatchOptions_9637 === "function") {
36913                    var fullConfig = window.initConfigurableSwatchOptions_9637().optionConfig
36914                    var editionTextConfig = fullConfig.edition;
36915                }
36916                return {
36917                    editionText: '',
36918                    config: editionTextConfig,
36919                    productId: '9637',
36920                    getEditionText(detail) {
36921                        this.editionText = detail.productIndex ?
36922                            this.config[detail.productIndex] :
36923                            null;
36924                    },
36925                    eventListeners: {
36926                        ['@listing-configurable-selection-changed.window'](event) {
36927                            if (this.productId == event.detail.productId) {
36928                                this.getEditionText(event.detail);
36929                            }
36930
36931                        }
36932                    }
36933                }
36934            }
36935        </script>
36935
36936                    </form>
36937                            
36938    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/9636/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk16443">
36939        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="9636">
36940                                    <a href="https://meiner.de/fmv_de/philosophieren-mit-gedankenexperimenten-16443" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
36941            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-9636.window="$el.src = $event.detail" alt="Philosophieren mit Gedankenexperimenten" title="Philosophieren mit Gedankenexperimenten" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787349111_3.jpg" :style="{
36942                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
36943                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
36944            }">
36945                    </a>
36946        <div class="product-info flex flex-col flex-grow ">
36947                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
36948                                    <div class="mb-2 text-sm text-gray-500 font-medium">
36949                                                                                    <a href="https://meiner.de/fmv_de/person/Jorg-Peters-3207/" class="mb-2">
36950                                    J&ouml;rg Peters                                                                    </a>
36951                                                                    <span>|</span>
36952                                                                                            <a href="https://meiner.de/fmv_de/person/Martina-Peters-3206/" class="mb-2">
36953                                    Martina Peters                                                                            (Hrsg.)
36954                                                                    </a>
36955                                                                                                                                    </div>
36956                                <a class="product-item-link" href="https://meiner.de/fmv_de/philosophieren-mit-gedankenexperimenten-16443">
36957                    Philosophieren mit Gedankenexperimenten                </a>
36958                            </div>
36959
36960            <div x-data="initEditionText_9636()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
36961                <!-- Marketing short text -->
36962                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
36963                </div>
36964            </div>
36965
36966                            <div class="py-1 grid  mb-4 ">
36967                    
36968                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":9636,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":9636,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"7446":"1","39871":"1","39941":"1"},"childProductsAlertStatus":{"7446":"0","39871":"0","39941":"0"},"indexMapping":{"163:9":7446,"163:15":39871,"163:8":39941},"availabilityMessages":{"7446":"Download sofort  verf\u00fcgbar","39871":"Lieferbar innerhalb von 3-5 Tagen","39941":"Download sofort  verf\u00fcgbar"},"openAccess":{"9636":{"status":0},"7446":{"status":0},"39871":{"status":0},"39941":{"status":0}}},"availabilityMessages":{"7446":"Download sofort  verf\u00fcgbar","39871":"Lieferbar innerhalb von 3-5 Tagen","39941":"Download sofort  verf\u00fcgbar"},"openAccess":{"9636":{"status":0},"7446":{"status":0},"39871":{"status":0},"39941":{"status":0}}}'>
36969        <template x-if="containerVisible">
36970                            <!-- Popup Trigger -->
36971                <div>
36972                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
36973                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
36974                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
36975  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
36976<title>bell</title></svg>
36977</span>
36978                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
36979
36980                    <!-- Popup Modal -->
36981                    <template x-if="showModal">
36982                        <template x-teleport=".page-wrapper">
36983                            <div x-cloak class="fixed inset-0 flex items-center justify-center
36984                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
36985                                <div class="relative bg-white rounded-lg shadow-xl
36986                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
36987                                    <div class="p-6">
36988                                        <!-- Subscription Form for Popup -->
36989                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
36990                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
36991                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
36992                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
36993
36994                                            <div class="flex flex-col gap-3">
36995                                                <div class="flex-grow grow">
36996                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
36997                                                        shadow-xs focus:outline-none focus:outline-hidden
36998                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
36999                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
37000                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
37001                                                </div>
37002                                                <input type="hidden" name="product_id" :value="currentProductId">
37003                                                <input type="hidden" name="type" value="email">
37004
37005                                                
37006                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
37007
37008                                                <div class="amxnotif_guest_action">
37009                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
37010                                                        rounded-md focus:outline-none
37011                                                        focus:outline-hidden focus:ring-2
37012                                                        focus:ring-offset-2 disabled:opacity-50
37013                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
37014                                                        Benachrichtigen                                                    </button>
37015                                                </div>
37016                                            </div>
37017
37018                                                                                            <div class="flex items-start pt-2">
37019                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
37020                                                        text-blue-600 border-gray-300 rounded-sm">
37021                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
37022                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
37023                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
37024                                                </div>
37025                                                                                    </form>
37026                                    </div>
37027
37028                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
37029                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
37030                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
37031  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
37032<title>x</title></svg>
37033                                    </button>
37034                                </div>
37035                            </div>
37036                        </template>
37037                    </template>
37038                </div>
37039                    </template>
37040    </div>
37041
37042<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_9636" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":9636,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"7446":"1","39871":"1","39941":"1"},"childProductsAlertStatus":{"7446":"0","39871":"0","39941":"0"},"indexMapping":"{\u0022163:9\u0022:7446,\u0022163:15\u0022:39871,\u0022163:8\u0022:39941}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":9636,"availabilityMessages":{"7446":"Download sofort  verf\u00fcgbar","39871":"Lieferbar innerhalb von 3-5 Tagen","39941":"Download sofort  verf\u00fcgbar"},"openAccess":{"9636":{"status":0},"7446":{"status":0},"39871":{"status":0},"39941":{"status":0}}}'>
37043    
37044    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
37045        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
37046        <span x-html="optionsLabelText"></span>
37047    </p>
37048</div>                </div>
37049            
37050                                
37050<script>
37051        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
37052            try {
37053                const attributes = (config && config.attributes) ? config.attributes : null;
37054                if (!attributes) return [];
37055                let attr = null;
37056                if (Array.isArray(attributes)) {
37057                    for (let i = 0; i < attributes.length; i++) {
37058                        const a = attributes[i];
37059                        if (a && a.id == attrId) {
37060                            attr = a;
37061                            break;
37062                        }
37063                    }
37064                } else {
37065                    attr = attributes[attrId];
37066                }
37067                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
37068            } catch (e) {
37069                return [];
37070            }
37071        };
37072
37073        function initConfigurableSwatchOptions_9636() {
37074            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["39871"]},{"id":"8","label":"PDF","products":["39941"]},{"id":"9","label":"EPUB","products":["7446"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"7446":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":15.878503672897},"finalPrice":{"amount":16.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"39871":{"baseOldPrice":{"amount":21.401868158879},"oldPrice":{"amount":22.9},"basePrice":{"amount":21.401868158879},"finalPrice":{"amount":22.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"39941":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":15.878503672897},"finalPrice":{"amount":16.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":15.878503672897},"finalPrice":{"amount":16.99},"isApproxPrice":null},"productId":"9636","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"7446":{"163":"9"},"39871":{"163":"15"},"39941":{"163":"8"}},"salable":{"163":{"9":["7446"],"15":["39871"],"8":["39941"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"7446":"003767","39871":"004910","39941":"004911"},"output":{"7446":"EPUB","39871":"Kartoniert","39941":"PDF"},"original_name":{"7446":"","39871":"","39941":""},"openaccess_license_link":{"7446":"","39871":"","39941":""},"openaccess_license_name":{"7446":"","39871":"","39941":""},"openaccess_external_link":{"7446":"","39871":"","39941":""},"gpsr_safety_info":{"7446":"","39871":"","39941":""},"description":{"7446":"Der zweite Band der Reihe behandelt den gezielten Einsatz von Gedankenexperimenten bei bestimmten Fragestellungen und Themenkreisen im Philosophie- und Ethikunterricht. <br\/><br\/>Einer orientierenden Einleitung der Herausgeber folgt der Theorieteil, in dem verschiedene Autorinnen und Autoren zentrale Positionen der deutschsprachigen Philosophiedidaktik zum Gedankenexperiment vorstellen. Der Praxisteil des Bandes behandelt eine Auswahl an ethischen und philosophischen Gedankenexperimenten und deren Durchf\u00fchrung im schulischen Kontext. Abschlie\u00dfend bietet der Band eine umfangreiche Sammlung an weniger bekannten Gedankenexperimenten aus den Themenkreisen Der Mensch und sein Handeln, menschliche Erkenntnis und ihre Grenzen, das Selbstverst\u00e4ndnis des Menschen, Werte und Normen des Handelns, Zusammenleben in Staat und Gesellschaft und Geltungsanspr\u00fcche der Wissenschaften.","39871":"Der zweite Band der Reihe behandelt den gezielten Einsatz von Gedankenexperimenten bei bestimmten Fragestellungen und Themenkreisen im Philosophie- und Ethikunterricht. <br\/><br\/>Einer orientierenden Einleitung der Herausgeber folgt der Theorieteil, in dem verschiedene Autorinnen und Autoren zentrale Positionen der deutschsprachigen Philosophiedidaktik zum Gedankenexperiment vorstellen. Der Praxisteil des Bandes behandelt eine Auswahl an ethischen und philosophischen Gedankenexperimenten und deren Durchf\u00fchrung im schulischen Kontext. Abschlie\u00dfend bietet der Band eine umfangreiche Sammlung an weniger bekannten Gedankenexperimenten aus den Themenkreisen Der Mensch und sein Handeln, menschliche Erkenntnis und ihre Grenzen, das Selbstverst\u00e4ndnis des Menschen, Werte und 
37074Normen des Handelns, Zusammenleben in Staat und Gesellschaft und Geltungsanspr\u00fcche der Wissenschaften.","39941":"Der zweite Band der Reihe behandelt den gezielten Einsatz von Gedankenexperimenten bei bestimmten Fragestellungen und Themenkreisen im Philosophie- und Ethikunterricht. <br\/><br\/>Einer orientierenden Einleitung der Herausgeber folgt der Theorieteil, in dem verschiedene Autorinnen und Autoren zentrale Positionen der deutschsprachigen Philosophiedidaktik zum Gedankenexperiment vorstellen. Der Praxisteil des Bandes behandelt eine Auswahl an ethischen und philosophischen Gedankenexperimenten und deren Durchf\u00fchrung im schulischen Kontext. Abschlie\u00dfend bietet der Band eine umfangreiche Sammlung an weniger bekannten Gedankenexperimenten aus den Themenkreisen Der Mensch und sein Handeln, menschliche Erkenntnis und ihre Grenzen, das Selbstverst\u00e4ndnis des Menschen, Werte und Normen des Handelns, Zusammenleben in Staat und Gesellschaft und Geltungsanspr\u00fcche der Wissenschaften."},"doi":{"7446":"","39871":"","39941":"10.28937\/978-3-7873-4911-1"},"isbn":{"7446":"978-3-7873-3767-5","39871":"978-3-7873-4910-4","39941":"978-3-7873-4911-1"},"marketing_short_text":{"7446":"","39871":"","39941":""},"recension_text":{"7446":"<div class=\"reviews\">\r\n<div class=\"review\">Der Band \u203aPhilosophieren mit Gedankenexperimenten\u2039, herausgegeben von Martina und Rolf Peters, enth\u00e4lt eine gute Zusammenstellung von theoretischen und unterrichtspraktischen Texten, die (angehende) Lehrkr\u00e4fte motivieren und unterst\u00fctzen, Gedankenexperimente im Philosophie- und Ethikunterricht produktiv einzusetzen.<\/div>\r\n<div class=\"source\">Marcel Remme, Lehrerbibliothek.de<\/div>\r\n<\/div>","39871":"<div class=\"reviews\">\r\n<div class=\"review\">Der Band \u203aPhilosophieren mit Gedankenexperimenten\u2039, herausgegeben von Martina und Rolf Peters, enth\u00e4lt eine gute Zusammenstellung von theoretischen und unterrichtspraktischen Texten, die (angehende) Lehrkr\u00e4fte motivieren und unterst\u00fctzen, Gedankenexperimente im Philosophie- und Ethikunterricht produktiv einzusetzen.<\/div>\r\n<div class=\"source\">Marcel Remme, Lehrerbibliothek.de<\/div>\r\n<\/div>","39941":"<div class=\"reviews\">\r\n<div class=\"review\">Der Band \u203aPhilosophieren mit Gedankenexperimenten\u2039, herausgegeben von Martina und Rolf Peters, enth\u00e4lt eine gute Zusammenstellung von theoretischen und unterrichtspraktischen Texten, die (angehende) Lehrkr\u00e4fte motivieren und unterst\u00fctzen, Gedankenexperimente im Philosophie- und Ethikunterricht produktiv einzusetzen.<\/div>\r\n<div class=\"source\">Marcel Remme, Lehrerbibliothek.de<\/div>\r\n<\/div>"},"language":{"7446":"","39871":"","39941":""},"cover":{"7446":"","39871":"Kartoniert","39941":""},"pages":{"7446":"128 Seiten","39871":"128 Seiten","39941":"128 Seiten"},"edition":{"7446":"Unver\u00e4ndertes eBook der 1. Auflage von 2020","39871":"2. Auflage","39941":"2. Auflage"},"pod":{"7446":"Nein","39871":"Nein","39941":"Nein"},"copyright_year":{"7446":"","39871":"","39941":""},"vlb_tix_link":{"7446":"","39871":"https:\/\/neu.vlbtix.de\/products\/9783787349104?type=gtin","39941":""},"defaultValues":{"163":"15"}};
37075            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
37076
37077            if (typeof window.amxnotif_wrap_attributes === 'function') {
37078                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
37079                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
37080            }
37081
37082            const configurableOptionsComponent = initConfigurableOptions(
37083                '9636',
37084                config
37085            );
37086            const swatchOptionsComponent = initSwatchOptions(
37087                swatchConfig
37088            );
37089
37090            // DWS - Configurable product preselect start
37091            const confProdPreSelect = () => {
37092                return {
37093                    preselectQuerystringItems() {
37094                        var data = {"id":"39871","output":"15"};
37095                        const urlQueryParams = new URLSearchParams(window.location.search);
37096
37097                                                this.$nextTick(() => {
37098                            setTimeout(() => {
37099                                const rootEl = this.$root || this.$el;
37100                                if (!rootEl) return;
37101
37102                                const applySelection = (attrCode, attrValue) => {
37103                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
37104
37105                                    const attributes = Object.values(this.optionConfig.attributes || {});
37106                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
37107
37108                                    if (targetAttr) {
37109                                        const attrId = String(targetAttr.id);
37110                                        const optionVal = String(attrValue);
37111
37112                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
37113
37114                                        if (inputEl) {
37115                                                                                        inputEl.click();
37116                                            inputEl.dispatchEvent(new Event('change', {
37117                                                bubbles: true
37118                                            }));
37119                                        } else {
37120                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
37121                                            if (selectEl) {
37122                                                selectEl.value = optionVal;
37123                                                selectEl.dispatchEvent(new Event('change', {
37124                                                    bubbles: true
37125                                                }));
37126                                            }
37127                                        }
37128
37129                                                                                this.changeOption(attrId, optionVal, false);
37130                                    }
37131                                };
37132
37133                                                                if (data && typeof data === 'object') {
37134                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
37135                                }
37136
37137                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
37138                                    if (attribute && attribute.code) {
37139                                        let optionValue = urlQueryParams.get(attribute.code);
37140                                        if (optionValue) {
37141                                            let optionId = false;
37142                                            const attributes = Object.values(this.optionConfig.attributes || {});
37143                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
37144
37145                                            let found = false;
37146                                            Object.values(targetAttr.options).map(option => {
37147                                                if (found === false && option.label === optionValue) {
37148                                                    optionId = option.id;
37149                                                    found = true;
37150                                                }
37151                                            });
37152
37153                                            const attrId = String(targetAttr.id);
37154                                            let optionVal = String(optionValue);
37155                                            if (found) {
37156                                                optionVal = String(optionId);
37157                                            }
37158
37159                                            applySelection(attribute.code, optionVal);
37160                                        }
37161                                    }
37162                                });
37163                            }, 100);
37164                        });
37165                    }
37166                }
37167            };
37168            // DWS - Configurable product preselect end
37169
37170            const result = Object.assign(
37171                configurableOptionsComponent,
37172                swatchOptionsComponent, {
37173                    productId: '9636',
37174                    productIndex: 0,
37175                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
37176                    showSwatches: false,
37177                    precalcOptions: {},
37178                    originalInit: configurableOptionsComponent.init,
37179                    init() {
37180                        try {
37181                            this.precalcOptions = {};
37182                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
37183                            this.preselectQuerystringItems();
37184                            if (Array.isArray(attrSource)) {
37185                                attrSource.forEach(attr => {
37186                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
37187                                });
37188                            } else if (attrSource && typeof attrSource === 'object') {
37189                                Object.keys(attrSource).forEach(id => {
37190                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
37191                                });
37192                            }
37193                        } catch (e) {
37194                            console.error('Pre-calc error:', e);
37195                        }
37196
37197                        if (typeof this.originalInit === 'function') {
37198                            this.originalInit();
37199                        }
37200
37201                        try {
37202                            this.initShowSwatchesIntersect();
37203                        } catch (e) {
37204                            console.error('intersect error:', e);
37205                        }
37206                    },
37207
37208                    updateGallery() {
37209                        if (!this.productIndex) return;
37210
37211                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
37212                                method: 'GET',
37213                                headers: {
37214                                    'Content-Type': 'application/json',
37215                                    'X-Requested-With': 'XMLHttpRequest'
37216                                }
37217                            })
37218                            .then(response => response.json())
37219                            .then(data => {
37220                                if (data && data.medium) {
37221                                    window.dispatchEvent(new CustomEvent("update-gallery-9636", {
37222                                        detail: data.medium
37223                                    }));
37224                                }
37225                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
37226                    },
37227
37228
37229                    initShowSwatchesIntersect() {
37230                        const observer = new IntersectionObserver(entries => {
37231                            if (entries[0].isIntersecting) {
37232                                this.showSwatches = true;
37233                                observer.disconnect();
37234                            }
37235                        }, {
37236                            rootMargin: '512px'
37237                        });
37238                        observer.observe(this.$el);
37239                    },
37240                    getOptions(attrId) {
37241                        return this.precalcOptions[attrId] || [];
37242                    },
37243                    getOptionsByAttrId() {
37244                        return this.getOptions(this.$el.dataset.attributeId);
37245                    },
37246                    _getItemId() {
37247                        if (this.item && this.item.id) return this.item.id;
37248                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
37249                    },
37250                    getSwatchOptionHtmlId() {
37251                        const itemId = this._getItemId();
37252                        return itemId ? this.$id(`attribute-option-9636-${itemId}`) : '';
37253                    },
37254                    getSwatchOptionHtmlIdGroup() {
37255                        const itemId = this._getItemId();
37256                        return itemId ? [`attribute-option-9636-${itemId}`] : [];
37257                    },
37258                    getAttributeSwatchData(attributeId) {
37259                        const data = Object.assign({}, this.swatchConfig[attributeId]);
37260                        if (data['additional_data']) {
37261                            try {
37262                                data['details'] = JSON.parse(data['additional_data']);
37263                            } catch (e) {
37264                                data['details'] = {};
37265                            }
37266                        }
37267                        return data;
37268                    },
37269                    getSwatchType(attributeId, optionId) {
37270                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
37271                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
37272                        }
37273                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
37274                            this.swatchConfig[attributeId].details.swatch_input_type :
37275                            "empty";
37276                        if (type === 'visual') {
37277                            const config = this.swatchConfig[attributeId];
37278                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
37279                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
37280                            }
37281                            // Fallback to first option type
37282                            for (const oId in config) {
37283                                if (config[oId] && typeof config[oId].type !== 'undefined') {
37284                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
37285                                }
37286                            }
37287                        }
37288                        return type;
37289                    },
37290                    mapSwatchTypeNumberToTypeCode(type) {
37291                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
37292                    },
37293                    isTextSwatch() {
37294                        const itemId = this._getItemId();
37295                        if (!this.$el || !itemId) return false;
37296                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
37297                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
37298                    },
37299
37300                    getSwatchText() {
37301                        const itemId = this._getItemId();
37302                        if (this.item) return this.item.label || '';
37303                        if (!this.$el || !itemId) return '';
37304                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
37305                        const options = attrId ? this.getOptions(attrId) : [];
37306                        const opt = options.find(o => o.id == itemId);
37307                        return opt ? opt.label : '';
37308                    },
37309                    getSwatchBackgroundStyle() {
37310                        const itemId = this._getItemId();
37311                        if (!this.$el || !itemId) return '';
37312                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
37313                        if (!attrId) return '';
37314                        const type = this.getSwatchType(attrId, itemId);
37315                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
37316                            this.swatchConfig[attrId][itemId] :
37317                            null;
37318                        if (!swatchData) return '';
37319                        if (type === "color") return 'background-color:' + swatchData.value;
37320                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
37321                        return '';
37322                    },
37323                    swatchOptionClasses() {
37324                        const itemId = this._getItemId();
37325                        if (!this.$el || !itemId) return {};
37326                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
37327                        return {
37328                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
37329                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
37330                            'w-6 h-6': !this.isTextSwatch()
37331                        }
37332                    },
37333
37334                    onFocusSwatchItem() {
37335                        const itemId = this._getItemId();
37336                        if (itemId) this.focusedLabel = itemId;
37337                    },
37338                    onChangeOption() {
37339                        const itemId = this._getItemId();
37340                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
37341                        if (attrId && itemId) this.changeOption(attrId, itemId);
37342                    },
37343                    changeOption(attributeId, value) {
37344                        if (value === '') {
37345                            return;
37346                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
37347                        } else {
37348                            this.selectedValues[attributeId] = value;
37349                        }
37350
37351                        this.findSimpleIndex();
37352                        this.findAllowedAttributeOptions();
37353                        this.updatePrices();
37354                        this.updateGallery();
37355
37356                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
37357                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
37358
37359                        const eventDetail = {
37360                            productId: this.productId,
37361                            optionId: attributeId,
37362                            value: value,
37363                            productIndex: this.productIndex || 0,
37364                            selectedValues: this.selectedValues,
37365                            candidates: candidates,
37366                            sourceElement: this.$el
37367                        };
37368
37369                        // Dispatch for Amasty
37370                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
37371                            detail: eventDetail
37372                        }));
37373
37374                        // Dispatch for Hyva listing
37375                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
37376                            detail: eventDetail
37377                        }));
37378                    },
37379
37380
37381                    clearOptionIfActive() {
37382                        const itemId = this._getItemId();
37383                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
37384                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
37385                            this.changeOption(attrId, '');
37386
37387                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
37388                            if (!input && this.$el?.querySelector) {
37389                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
37390                            }
37391                            if (!input && this.$el?.closest) {
37392                                const root = this.$el.closest('[data-product-id]') || this.$el;
37393                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
37394                            }
37395                            if (input) {
37396                                input.checked = false;
37397                            }
37398                        }
37399                    },
37400                    get optionIsEnabled() {
37401                        const itemId = this._getItemId();
37402                        if (!this.$el || !itemId) return true;
37403                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
37404                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
37405                        return !!allowedOptions.find(opt => opt.id == itemId);
37406                    },
37407                    get isSelected() {
37408                        const itemId = this._getItemId();
37409                        if (!this.$el || !itemId) return false;
37410                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
37411                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
37412                    },
37413                    get isSwatchRequired() {
37414                        if (!this.$el) return false;
37415                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
37416                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
37417                    },
37418                    focusedLabel: false,
37419                    activeTooltipItem: false,
37420                    tooltipPositionElement: false,
37421                    setActiveTooltipItem() {
37422                        const itemId = this._getItemId();
37423                        if (!this.$el || !itemId) return;
37424                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
37425                        this.activeTooltipItem = {
37426                            attribute: attrId,
37427                            item: itemId,
37428                            index: 0
37429                        };
37430                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
37431                    },
37432                    unsetActiveTooltipItem() {
37433                        this.activeTooltipItem = false;
37434                    }
37435                },
37436                confProdPreSelect()
37437            );
37438
37439            if (result.optionConfig && result.optionConfig.attributes) {
37440                const attributes = result.optionConfig.attributes;
37441                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
37442                    let source = attributes;
37443                    if (Array.isArray(attributes)) {
37444                        source = {};
37445                        attributes.forEach(attr => {
37446                            if (attr && attr.id) source[attr.id] = attr;
37447                        });
37448                    }
37449                    const values = Object.values(source);
37450                    const wrapper = Object.assign(values, source);
37451                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
37452                        value: true,
37453                        enumerable: false
37454                    });
37455                    result.optionConfig.attributes = wrapper;
37456                }
37457            }
37458
37459            return result;
37460        }
37461
37462        window.addEventListener('alpine:init', () => {
37463            Alpine.data('initConfigurableSwatchOptions_9636', initConfigurableSwatchOptions_9636);
37464        }, {
37465            once: true
37466        });
37467    </script>
37467
37468    
37469    <div x-data="initConfigurableSwatchOptions_9636" x-defer="intersect">
37470        <div class="pagebuilder-home-hidden">
37471                                            
37472                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
37473                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
37474                        <template x-if="showSwatches">
37475                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-9636-163" role="radiogroup" aria-label="Einband">
37476                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
37477                                    <div :data-option-id="item.id" style="display: contents">
37478                                        <div x-id="getSwatchOptionHtmlIdGroup">
37479    <template x-if="optionIsEnabled">
37480        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
37480self="unsetActiveTooltipItem">
37481            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-9636-163">
37482            <div>
37483                <template x-if="isTextSwatch">
37484                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
37485                </template>
37486                <template x-if="!optionIsActive(163, item.id)">
37487                    <div>
37488                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
37489                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
37490                        </svg>
37491                    </div>
37492                </template>
37493            </div>
37494        </label>
37495    </template>
37496</div>                                    </div>
37497                                </template>
37498                            </div>
37499                        </template>
37500                    </div>
37501                </div>
37502                    </div>
37503    </div>
37504            
37505                                                <div class="meta py-4 pagebuilder-home-hidden">
37506                <div x-data="initMarketingShortText_9636()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
37507                    <!-- Marketing short text -->
37508                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
37509                    </div>
37510
37511                    <!-- Short description -->
37512                                                                <div class="short-description">
37513                            Der zweite Band der Reihe behandelt den gezielten Einsatz von Gedankenexperimenten bei bestimmten Fragestellungen und Themenkreisen im Philosophie- und Ethikunterricht. 
37514
37515Einer orientierenden ...                            <a href="https://meiner.de/fmv_de/philosophieren-mit-gedankenexperimenten-16443" class="underline">mehr</a>
37516                        </div>
37517                                    </div>
37518
37519                <!-- Series  -->
37520                                    <div class="mb-1">
37521                        <span class="sr-only">Reihe:</span>
37522                        <a href="https://meiner.de/fmv_de/programm/reihen/methoden-im-philosophie-und-ethikunterricht">
37523                            <span>Methoden im Philosophie- und Ethikunterricht</span>
37524                        </a>
37525                                                    2                                            </div>
37526                
37527                
37528                                                    <div class="mb-1">
37529                        <span x-data="initEditionText_9636()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
37530                            <!-- Marketing short text -->
37531                            <span class="edition-text" x-html="editionText"></span>&nbsp;2024, 128 Seiten                        </span>
37532                    </div>
37533                
37534                            </div>
37535            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
37536                
37537                <div class="justify-end" x-data="initPriceBox()" @update-prices-9636.window="updatePrice($event.detail);">
37538                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="9636" data-price-box="product-id-9636"><span class="normal-price">
37539    <span x-data x-id="['product\u002Dprice\u002D9636']" class="price-container price-final_price tax weee">
37540            <span class="price-label">Ab</span>
37541                <span class="approx-price">ca. </span>
37542        <span :id="$id('product\u002Dprice\u002D9636')" data-price-amount="16.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">16,99&nbsp;&euro;</span></span>
37543        </span>
37544</span>
37545
37546
37547</div>                </div>
37548
37549                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
37550                                            <div class="open-access-container open-access-container-9636                    flex mt-4 ml-auto sm:mt-0 hidden">
37551                            <div class="text-gray-700">
37552                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
37553                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
37554                                        Kostenlos online lesen                                    </a>
37555                                </button>
37556                            </div>
37557                        </div>
37558                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Philosophieren mit Gedankenexperimenten" aria-label="In den Warenkorb Philosophieren mit Gedankenexperimenten" data-addto="cart">
37559                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
37560  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
37561</svg>
37562                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
37563                                        In den Warenkorb                                    </span>
37564                                </button>
37565                                                                                                                    
37566<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(9636)" aria-label="Zur Wunschliste hinzuf&uuml;gen Philosophieren mit Gedankenexperimenten" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
37567    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
37568  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
37569</svg>
37570</button>
37571                                    </div>
37572            </div>
37573        </div>
37574        
37574<script>
37575            function initMarketingShortText_9636() {
37576                var marketingShortTextConfig = {};
37577                if (typeof window.initConfigurableSwatchOptions_9636 === "function") {
37578                    var fullConfig = window.initConfigurableSwatchOptions_9636().optionConfig
37579                    var marketingShortTextConfig = fullConfig.marketing_short_text;
37580                }
37581                return {
37582                    marketingShortText: '',
37583                    config: marketingShortTextConfig,
37584                    productId: '9636',
37585                    getMarketingShortText(detail) {
37586                        this.marketingShortText = detail.productIndex ?
37587                            this.config[detail.productIndex] :
37588                            null;
37589                    },
37590                    eventListeners: {
37591                        ['@listing-configurable-selection-changed.window'](event) {
37592                            if (this.productId == event.detail.productId) {
37593                                this.getMarketingShortText(event.detail);
37594                            }
37595
37596                        }
37597                    }
37598                }
37599            }
37600
37601            function initEditionText_9636() {
37602                var editionTextConfig = {};
37603                if (typeof window.initConfigurableSwatchOptions_9636 === "function") {
37604                    var fullConfig = window.initConfigurableSwatchOptions_9636().optionConfig
37605                    var editionTextConfig = fullConfig.edition;
37606                }
37607                return {
37608                    editionText: '',
37609                    config: editionTextConfig,
37610                    productId: '9636',
37611                    getEditionText(detail) {
37612                        this.editionText = detail.productIndex ?
37613                            this.config[detail.productIndex] :
37614                            null;
37615                    },
37616                    eventListeners: {
37617                        ['@listing-configurable-selection-changed.window'](event) {
37618                            if (this.productId == event.detail.productId) {
37619                                this.getEditionText(event.detail);
37620                            }
37621
37622                        }
37623                    }
37624                }
37625            }
37626        </script>
37626
37627                    </form>
37628                            
37629    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/9635/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk16442">
37630        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="9635">
37631                                    <a href="https://meiner.de/fmv_de/philosophieren-mit-filmen-im-unterricht-16442" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
37632            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-9635.window="$el.src = $event.detail" alt="Philosophieren mit Filmen im Unterricht" title="Philosophieren mit Filmen im Unterricht" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787345588_3.jpg" :style="{
37633                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
37634                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
37635            }">
37636                    </a>
37637        <div class="product-info flex flex-col flex-grow ">
37638                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
37639                                    <div class="mb-2 text-sm text-gray-500 font-medium">
37640                                                                                    <a href="https://meiner.de/fmv_de/person/Jorg-Peters-3207/" class="mb-2">
37641                                    J&ouml;rg Peters                                                                    </a>
37642                                                                    <span>|</span>
37643                                                                                            <a href="https://meiner.de/fmv_de/person/Martina-Peters-3206/" class="mb-2">
37644                                    Martina Peters                                                                            (Hrsg.)
37645                                                                    </a>
37646                                                                                                                                    </div>
37647                                <a class="product-item-link" href="https://meiner.de/fmv_de/philosophieren-mit-filmen-im-unterricht-16442">
37648                    Philosophieren mit Filmen im Unterricht                </a>
37649                            </div>
37650
37651            <div x-data="initEditionText_9635()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
37652                <!-- Marketing short text -->
37653                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
37654                </div>
37655            </div>
37656
37657                            <div class="py-1 grid  mb-4 ">
37658                    
37659                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":9635,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":9635,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"8350":"1","15439":"1","15438":"1"}
37659,"childProductsAlertStatus":{"8350":"0","15439":"0","15438":"0"},"indexMapping":{"163:15":8350,"163:8":15439,"163:9":15438},"availabilityMessages":{"8350":"Lieferbar innerhalb von 3-5 Tagen","15439":"Download sofort  verf\u00fcgbar","15438":"Download sofort  verf\u00fcgbar"},"openAccess":{"9635":{"status":0},"8350":{"status":0},"15439":{"status":0},"15438":{"status":0}}},"availabilityMessages":{"8350":"Lieferbar innerhalb von 3-5 Tagen","15439":"Download sofort  verf\u00fcgbar","15438":"Download sofort  verf\u00fcgbar"},"openAccess":{"9635":{"status":0},"8350":{"status":0},"15439":{"status":0},"15438":{"status":0}}}'>
37660        <template x-if="containerVisible">
37661                            <!-- Popup Trigger -->
37662                <div>
37663                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
37664                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
37665                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
37666  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
37667<title>bell</title></svg>
37668</span>
37669                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
37670
37671                    <!-- Popup Modal -->
37672                    <template x-if="showModal">
37673                        <template x-teleport=".page-wrapper">
37674                            <div x-cloak class="fixed inset-0 flex items-center justify-center
37675                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
37676                                <div class="relative bg-white rounded-lg shadow-xl
37677                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
37678                                    <div class="p-6">
37679                                        <!-- Subscription Form for Popup -->
37680                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
37681                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
37682                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
37683                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
37684
37685                                            <div class="flex flex-col gap-3">
37686                                                <div class="flex-grow grow">
37687                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
37688                                                        shadow-xs focus:outline-none focus:outline-hidden
37689                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
37690                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
37691                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
37692                                                </div>
37693                                                <input type="hidden" name="product_id" :value="currentProductId">
37694                                                <input type="hidden" name="type" value="email">
37695
37696                                                
37697                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
37698
37699                                                <div class="amxnotif_guest_action">
37700                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
37701                                                        rounded-md focus:outline-none
37702                                                        focus:outline-hidden focu
37702s:ring-2
37703                                                        focus:ring-offset-2 disabled:opacity-50
37704                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
37705                                                        Benachrichtigen                                                    </button>
37706                                                </div>
37707                                            </div>
37708
37709                                                                                            <div class="flex items-start pt-2">
37710                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
37711                                                        text-blue-600 border-gray-300 rounded-sm">
37712                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
37713                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
37714                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
37715                                                </div>
37716                                                                                    </form>
37717                                    </div>
37718
37719                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
37720                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
37721                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
37722  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
37723<title>x</title></svg>
37724                                    </button>
37725                                </div>
37726                            </div>
37727                        </template>
37728                    </template>
37729                </div>
37730                    </template>
37731    </div>
37732
37733<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_9635" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":9635,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"8350":"1","15439":"1","15438":"1"},"childProductsAlertStatus":{"8350":"0","15439":"0","15438":"0"},"indexMapping":"{\u0022163:15\u0022:8350,\u0022163:8\u0022:15439,\u0022163:9\u0022:15438}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":9635,"availabilityMessages":{"8350":"Lieferbar innerhalb von 3-5 Tagen","15439":"Download sofort  verf\u00fcgbar","15438":"Download sofort  verf\u00fcgbar"},"openAccess":{"9635":{"status":0},"8350":{"status":0},"15439":{"status":0},"15438":{"status":0}}}'>
37734    
37735    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
37736        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
37737        <span x-html="optionsLabelText"></span>
37738    </p>
37739</div>                </div>
37740            
37741                                
37741<script>
37742        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
37743            try {
37744                const attributes = (config && config.attributes) ? config.attributes : null;
37745                if (!attributes) return [];
37746                let attr = null;
37747                if (Array.isArray(attributes)) {
37748                    for (let i = 0; i < attributes.length; i++) {
37749                        const a = attributes[i];
37750                        if (a && a.id == attrId) {
37751                            attr = a;
37752                            break;
37753                        }
37754                    }
37755                } else {
37756                    attr = attributes[attrId];
37757                }
37758                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
37759            } catch (e) {
37760                return [];
37761            }
37762        };
37763
37764        function initConfigurableSwatchOptions_9635() {
37765            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["8350"]},{"id":"8","label":"PDF","products":["15439"]},{"id":"9","label":"EPUB","products":["15438"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"8350":{"baseOldPrice":{"amount":21.401868158879},"oldPrice":{"amount":22.9},"basePrice":{"amount":21.401868158879},"finalPrice":{"amount":22.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"15439":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":15.878503672897},"finalPrice":{"amount":16.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"15438":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":15.878503672897},"finalPrice":{"amount":16.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":15.878503672897},"oldPrice":{"amount":16.99},"basePrice":{"amount":15.878503672897},"finalPrice":{"amount":16.99},"isApproxPrice":null},"productId":"9635","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"8350":{"163":"15"},"15439":{"163":"8"},"15438":{"163":"9"}},"salable":{"163":{"15":["8350"],"8":["15439"],"9":["15438"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"8350":"004556","15439":"004557","15438":"004558"},"output":{"8350":"Kartoniert","15438":"EPUB","15439":"PDF"},"original_name":{"8350":"","15438":"","15439":""},"openaccess_license_link":{"8350":"","15438":"","15439":""},"openaccess_license_name":{"8350":"","15438":"","15439":""},"openaccess_external_link":{"8350":"","15438":"","15439":""},"gpsr_safety_info":{"8350":"","15438":"","15439":""},"description":{"8350":"Der Einsatz von Filmen im Unterricht ist angesichts der gro\u00dfen Popularit\u00e4t des Mediums so aktuell wie noch nie. Ob als Motivator oder Wissensvermittler \u2013 durch die cineastische Auseinandersetzung mit fachspezifischen Fragen k\u00f6nnen komplexe oder abstrakte Theorien intensiver vermittelt werden. Im Fokus des Bandes steht der gezielte Einsatz von Filmen bzw. Kurzfilmen zu relevanten Fragestellungen im Philosophie- und Ethikunterricht. Zahlreiche Beispiele erl\u00e4utern, wie diese problem-, sch\u00fcler- und kompetenzorientiert eingesetzt werden k\u00f6nnen. Eine Einleitung der Herausgeber, eine ausf\u00fchrliche Filmografie sowie eine Auswahlbibliographie bieten Anregungen f\u00fcr eine weiterf\u00fchrende Arbeit mit Filmen im Unterricht.","15438":"Der Einsatz von Filmen im Unterricht ist angesichts der gro\u00dfen Popularit\u00e4t des Mediums so aktuell wie noch nie. Ob als Motivator oder Wissensvermittler \u2013 durch die cineastische Auseinandersetzung mit fachspezifischen Fragen k\u00f6nnen komplexe oder abstrakte Theorien intensiver vermittelt werden. Im Fokus des Bandes steht der gezielte Einsatz von Filmen bzw. Kurzfilmen zu relevanten Fragestellungen im Philosophie- und Ethikunterricht. Zahlreiche Beispiele erl\u00e4utern, wie diese problem-, sch\u00fcler- und kompetenzorientiert eingesetzt werden k\u00f6nnen. Eine Einleitung der Herausgeber, eine ausf\u00fchrliche Filmografie sowie eine Auswahlbibliographie bieten Anregungen f\u00fcr eine weiterf\u00fchrende Arbeit mit Filmen im Unterricht.","15439":"Der Einsatz von Filmen im Unterricht ist angesichts der gro\u00dfen Popularit\u00e4t des Mediums so aktuell wie noch nie. Ob als Motivator oder Wissensvermittler \u2013 durch die cineastische Auseinandersetzung mit fachspezifischen Fragen k\u00f6nnen komplexe oder abstrakte Theorien intensiver vermittelt werden. Im Fokus des Bandes steht der gezielte Einsatz von Filmen bzw. Kurzfilmen zu relevanten Fragestellungen im Philosophie- und Ethikunterricht. Zahlreiche Beispiele erl\u00e4utern, wie diese problem-, sch\u00fcler- und kompetenzorientiert eingesetzt werden k\u00f6nnen. Eine Einleitung der Herausgeber, eine ausf\u00fchrliche Filmografie sowie eine Auswahlbibliographie bieten Anregungen f\u00fcr eine weiterf\u00fchrende Arbeit mit Filmen im Unterricht."},"doi":{"8350":"","15438":"","15439":"10.28937\/978-3-7873-4557-1"},"isbn":{"8350":"978-3-7873-4556-4","15438":"978-3-7873-4558-8","15439":"978-3-7873-4557-1"},"marketing_short_text":{"8350":"","15438":"","15439":""},"recension_text":{"8350":"<div class=\"reviews\">\r\n<div class=\"review\">Die Texte vermitteln den philosophischen Kern des jeweiligen Films und geben die p\u00e4dagogische Richtung vor. Ein sehr inspirierendes Buch.<\/div>\r\n<div class=\"source\">
37765Hans Helmut Prinzler, http:\/\/www.hhprinzler.de, 06.02.2020<\/div>\r\n<\/div>","15438":"<div class=\"reviews\">\r\n<div class=\"review\">Die Texte vermitteln den philosophischen Kern des jeweiligen Films und geben die p\u00e4dagogische Richtung vor. Ein sehr inspirierendes Buch.<\/div>\r\n<div class=\"source\">Hans Helmut Prinzler, http:\/\/www.hhprinzler.de, 06.02.2020<\/div>\r\n<\/div>","15439":"<div class=\"reviews\">\r\n<div class=\"review\">Die Texte vermitteln den philosophischen Kern des jeweiligen Films und geben die p\u00e4dagogische Richtung vor. Ein sehr inspirierendes Buch.<\/div>\r\n<div class=\"source\">Hans Helmut Prinzler, http:\/\/www.hhprinzler.de, 06.02.2020<\/div>\r\n<\/div>"},"language":{"8350":"","15438":"","15439":""},"cover":{"8350":"Kartoniert","15438":"","15439":""},"pages":{"8350":"318","15438":"320","15439":"320"},"edition":{"8350":"2., \u00fcberarbeitete Auflage","15438":"2. Auflage","15439":"2. Auflage"},"pod":{"8350":"Nein","15438":"Nein","15439":"Nein"},"copyright_year":{"8350":"","15438":"","15439":""},"vlb_tix_link":{"8350":"https:\/\/neu.vlbtix.de\/products\/9783787345564?type=gtin","15438":"","15439":""},"defaultValues":{"163":"15"}};
37766            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
37767
37768            if (typeof window.amxnotif_wrap_attributes === 'function') {
37769                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
37770                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
37771            }
37772
37773            const configurableOptionsComponent = initConfigurableOptions(
37774                '9635',
37775                config
37776            );
37777            const swatchOptionsComponent = initSwatchOptions(
37778                swatchConfig
37779            );
37780
37781            // DWS - Configurable product preselect start
37782            const confProdPreSelect = () => {
37783                return {
37784                    preselectQuerystringItems() {
37785                        var data = {"id":"8350","output":"15"};
37786                        const urlQueryParams = new URLSearchParams(window.location.search);
37787
37788                                                this.$nextTick(() => {
37789                            setTimeout(() => {
37790                                const rootEl = this.$root || this.$el;
37791                                if (!rootEl) return;
37792
37793                                const applySelection = (attrCode, attrValue) => {
37794                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
37795
37796                                    const attributes = Object.values(this.optionConfig.attributes || {});
37797                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
37798
37799                                    if (targetAttr) {
37800                                        const attrId = String(targetAttr.id);
37801                                        const optionVal = String(attrValue);
37802
37803                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
37804
37805                                        if (inputEl) {
37806                                                                                        inputEl.click();
37807                                            inputEl.dispatchEvent(new Event('change', {
37808                                                bubbles: true
37809                                            }));
37810                                        } else {
37811                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
37812                                            if (selectEl) {
37813                                                selectEl.value = optionVal;
37814                                                selectEl.dispatchEvent(new Event('change', {
37815                                                    bubbles: true
37816                                                }));
37817                                            }
37818                                        }
37819
37820                                                                                this.changeOption(attrId, optionVal, false);
37821                                    }
37822                                };
37823
37824                                                                if (data && typeof data === 'object') {
37825                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
37826                                }
37827
37828                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
37829                                    if (attribute && attribute.code) {
37830                                        let optionValue = urlQueryParams.get(attribute.code);
37831                                        if (optionValue) {
37832                                            let optionId = false;
37833                                            const attributes = Object.values(this.optionConfig.attributes || {});
37834                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
37835
37836                                            let found = false;
37837                                            Object.values(targetAttr.options).map(option => {
37838                                                if (found === false && option.label === optionValue) {
37839                                                    optionId = option.id;
37840                                                    found = true;
37841                                                }
37842                                            });
37843
37844                                            const attrId = String(targetAttr.id);
37845                                            let optionVal = String(optionValue);
37846                                            if (found) {
37847                                                optionVal = String(optionId);
37848                                            }
37849
37850                                            applySelection(attribute.code, optionVal);
37851                                        }
37852                                    }
37853                                });
37854                            }, 100);
37855                        });
37856                    }
37857                }
37858            };
37859            // DWS - Configurable product preselect end
37860
37861            const result = Object.assign(
37862                configurableOptionsComponent,
37863                swatchOptionsComponent, {
37864                    productId: '9635',
37865                    productIndex: 0,
37866                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
37867                    showSwatches: false,
37868                    precalcOptions: {},
37869                    originalInit: configurableOptionsComponent.init,
37870                    init() {
37871                        try {
37872                            this.precalcOptions = {};
37873                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
37874                            this.preselectQuerystringItems();
37875                            if (Array.isArray(attrSource)) {
37876                                attrSource.forEach(attr => {
37877                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
37878                                });
37879                            } else if (attrSource && typeof attrSource === 'object') {
37880                                Object.keys(attrSource).forEach(id => {
37881                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
37882                                });
37883                            }
37884                        } catch (e) {
37885                            console.error('Pre-calc error:', e);
37886                        }
37887
37888                        if (typeof this.originalInit === 'function') {
37889                            this.originalInit();
37890                        }
37891
37892                        try {
37893                            this.initShowSwatchesIntersect();
37894                        } catch (e) {
37895                            console.error('intersect error:', e);
37896                        }
37897                    },
37898
37899                    updateGallery() {
37900                        if (!this.productIndex) return;
37901
37902                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
37903                                method: 'GET',
37904                                headers: {
37905                                    'Content-Type': 'application/json',
37906                                    'X-Requested-With': 'XMLHttpRequest'
37907                                }
37908                            })
37909                            .then(response => response.json())
37910                            .then(data => {
37911                                if (data && data.medium) {
37912                                    window.dispatchEvent(new CustomEvent("update-gallery-9635", {
37913                                        detail: data.medium
37914                                    }));
37915                                }
37916                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
37917                    },
37918
37919
37920                    initShowSwatchesIntersect() {
37921                        const observer = new IntersectionObserver(entries => {
37922                            if (entries[0].isIntersecting) {
37923                                this.showSwatches = true;
37924                                observer.disconnect();
37925                            }
37926                        }, {
37927                            rootMargin: '512px'
37928                        });
37929                        observer.observe(this.$el);
37930                    },
37931                    getOptions(attrId) {
37932                        return this.precalcOptions[attrId] || [];
37933                    },
37934                    getOptionsByAttrId() {
37935                        return this.getOptions(this.$el.dataset.attributeId);
37936                    },
37937                    _getItemId() {
37938                        if (this.item && this.item.id) return this.item.id;
37939                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
37940                    },
37941                    getSwatchOptionHtmlId() {
37942                        const itemId = this._getItemId();
37943                        return itemId ? this.$id(`attribute-option-9635-${itemId}`) : '';
37944                    },
37945                    getSwatchOptionHtmlIdGroup() {
37946                        const itemId = this._getItemId();
37947                        return itemId ? [`attribute-option-9635-${itemId}`] : [];
37948                    },
37949                    getAttributeSwatchData(attributeId) {
37950                        const data = Object.assign({}, this.swatchConfig[attributeId]);
37951                        if (data['additional_data']) {
37952                            try {
37953                                data['details'] = JSON.parse(data['additional_data']);
37954                            } catch (e) {
37955                                data['details'] = {};
37956                            }
37957                        }
37958                        return data;
37959                    },
37960                    getSwatchType(attributeId, optionId) {
37961                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
37962                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
37963                        }
37964                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
37965                            this.swatchConfig[attributeId].details.swatch_input_type :
37966                            "empty";
37967                        if (type === 'visual') {
37968                            const config = this.swatchConfig[attributeId];
37969                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
37970                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
37971                            }
37972                            // Fallback to first option type
37973                            for (const oId in config) {
37974                                if (config[oId] && typeof config[oId].type !== 'undefined') {
37975                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
37976                                }
37977                            }
37978                        }
37979                        return type;
37980                    },
37981                    mapSwatchTypeNumberToTypeCode(type) {
37982                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
37983                    },
37984                    isTextSwatch() {
37985                        const itemId = this._getItemId();
37986                        if (!this.$el || !itemId) return false;
37987                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
37988                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
37989                    },
37990
37991                    getSwatchText() {
37992                        const itemId = this._getItemId();
37993                        if (this.item) return this.item.label || '';
37994                        if (!this.$el || !itemId) return '';
37995                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
37996                        const options = attrId ? this.getOptions(attrId) : [];
37997                        const opt = options.find(o => o.id == itemId);
37998                        return opt ? opt.label : '';
37999                    },
38000                    getSwatchBackgroundStyle() {
38001                        const itemId = this._getItemId();
38002                        if (!this.$el || !itemId) return '';
38003                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
38004                        if (!attrId) return '';
38005                        const type = this.getSwatchType(attrId, itemId);
38006                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
38007                            this.swatchConfig[attrId][itemId] :
38008                            null;
38009                        if (!swatchData) return '';
38010                        if (type === "color") return 'background-color:' + swatchData.value;
38011                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
38012                        return '';
38013                    },
38014                    swatchOptionClasses() {
38015                        const itemId = this._getItemId();
38016                        if (!this.$el || !itemId) return {};
38017                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
38018                        return {
38019                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
38020                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
38021                            'w-6 h-6': !this.isTextSwatch()
38022                        }
38023                    },
38024
38025                    onFocusSwatchItem() {
38026                        const itemId = this._getItemId();
38027                        if (itemId) this.focusedLabel = itemId;
38028                    },
38029                    onChangeOption() {
38030                        const itemId = this._getItemId();
38031                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
38032                        if (attrId && itemId) this.changeOption(attrId, itemId);
38033                    },
38034                    changeOption(attributeId, value) {
38035                        if (value === '') {
38036                            return;
38037                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
38038                        } else {
38039                            this.selectedValues[attributeId] = value;
38040                        }
38041
38042                        this.findSimpleIndex();
38043                        this.findAllowedAttributeOptions();
38044                        this.updatePrices();
38045                        this.updateGallery();
38046
38047                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
38048                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
38049
38050                        const eventDetail = {
38051                            productId: this.productId,
38052                            optionId: attributeId,
38053                            value: value,
38054                            productIndex: this.productIndex || 0,
38055                            selectedValues: this.selectedValues,
38056                            candidates: candidates,
38057                            sourceElement: this.$el
38058                        };
38059
38060                        // Dispatch for Amasty
38061                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
38062                            detail: eventDetail
38063                        }));
38064
38065                        // Dispatch for Hyva listing
38066                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
38067                            detail: eventDetail
38068                        }));
38069                    },
38070
38071
38072                    clearOptionIfActive() {
38073                        const itemId = this._getItemId();
38074                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
38075                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
38076                            this.changeOption(attrId, '');
38077
38078                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
38079                            if (!input && this.$el?.querySelector) {
38080                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
38081                            }
38082                            if (!input && this.$el?.closest) {
38083                                const root = this.$el.closest('[data-product-id]') || this.$el;
38084                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
38085                            }
38086                            if (input) {
38087                                input.checked = false;
38088                            }
38089                        }
38090                    },
38091                    get optionIsEnabled() {
38092                        const itemId = this._getItemId();
38093                        if (!this.$el || !itemId) return true;
38094                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
38095                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
38096                        return !!allowedOptions.find(opt => opt.id == itemId);
38097                    },
38098                    get isSelected() {
38099                        const itemId = this._getItemId();
38100                        if (!this.$el || !itemId) return false;
38101                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
38102                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
38103                    },
38104                    get isSwatchRequired() {
38105                        if (!this.$el) return false;
38106                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
38107                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
38108                    },
38109                    focusedLabel: false,
38110                    activeTooltipItem: false,
38111                    tooltipPositionElement: false,
38112                    setActiveTooltipItem() {
38113                        const itemId = this._getItemId();
38114                        if (!this.$el || !itemId) return;
38115                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
38116                        this.activeTooltipItem = {
38117                            attribute: attrId,
38118                            item: itemId,
38119                            index: 0
38120                        };
38121                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
38122                    },
38123                    unsetActiveTooltipItem() {
38124                        this.activeTooltipItem = false;
38125                    }
38126                },
38127                confProdPreSelect()
38128            );
38129
38130            if (result.optionConfig && result.optionConfig.attributes) {
38131                const attributes = result.optionConfig.attributes;
38132                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
38133                    let source = attributes;
38134                    if (Array.isArray(attributes)) {
38135                        source = {};
38136                        attributes.forEach(attr => {
38137                            if (attr && attr.id) source[attr.id] = attr;
38138                        });
38139                    }
38140                    const values = Object.values(source);
38141                    const wrapper = Object.assign(values, source);
38142                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
38143                        value: true,
38144                        enumerable: false
38145                    });
38146                    result.optionConfig.attributes = wrapper;
38147                }
38148            }
38149
38150            return result;
38151        }
38152
38153        window.addEventListener('alpine:init', () => {
38154            Alpine.data('initConfigurableSwatchOptions_9635', initConfigurableSwatchOptions_9635);
38155        }, {
38156            once: true
38157        });
38158    </script>
38158
38159    
38160    <div x-data="initConfigurableSwatchOptions_9635" x-defer="intersect">
38161        <div class="pagebuilder-home-hidden">
38162                                            
38163                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
38164                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
38165                        <template x-if="showSwatches">
38166                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-9635-163" role="radiogroup" aria-label="Einband">
38167                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
38168                                    <div :data-option-id="item.id" style="display: contents">
38169                                        <div x-id="getSwatchOptionHtmlIdGroup">
38170    <template x-if="optionIsEnabled">
38171        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
38171self="unsetActiveTooltipItem">
38172            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-9635-163">
38173            <div>
38174                <template x-if="isTextSwatch">
38175                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
38176                </template>
38177                <template x-if="!optionIsActive(163, item.id)">
38178                    <div>
38179                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
38180                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
38181                        </svg>
38182                    </div>
38183                </template>
38184            </div>
38185        </label>
38186    </template>
38187</div>                                    </div>
38188                                </template>
38189                            </div>
38190                        </template>
38191                    </div>
38192                </div>
38193                    </div>
38194    </div>
38195            
38196                                                <div class="meta py-4 pagebuilder-home-hidden">
38197                <div x-data="initMarketingShortText_9635()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
38198                    <!-- Marketing short text -->
38199                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
38200                    </div>
38201
38202                    <!-- Short description -->
38203                                                                <div class="short-description">
38204                            Der Einsatz von Filmen im Unterricht ist angesichts der gro&szlig;en Popularit&auml;t des Mediums so aktuell wie noch nie. Ob als Motivator oder Wissensvermittler &ndash; durch die cineastische Auseinandersetzung ...                            <a href="https://meiner.de/fmv_de/philosophieren-mit-filmen-im-unterricht-16442" class="underline">mehr</a>
38205                        </div>
38206                                    </div>
38207
38208                <!-- Series  -->
38209                                    <div class="mb-1">
38210                        <span class="sr-only">Reihe:</span>
38211                        <a href="https://meiner.de/fmv_de/programm/reihen/methoden-im-philosophie-und-ethikunterricht">
38212                            <span>Methoden im Philosophie- und Ethikunterricht</span>
38213                        </a>
38214                                                    1                                            </div>
38215                
38216                
38217                                                    <div class="mb-1">
38218                        <span x-data="initEditionText_9635()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
38219                            <!-- Marketing short text -->
38220                            <span class="edition-text" x-html="editionText"></span>&nbsp;2024, 318                        </span>
38221                    </div>
38222                
38223                            </div>
38224            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
38225                
38226                <div class="justify-end" x-data="initPriceBox()" @update-prices-9635.window="updatePrice($event.detail);">
38227                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="9635" data-price-box="product-id-9635"><span class="normal-price">
38228    <span x-data x-id="['product\u002Dprice\u002D9635']" class="price-container price-final_price tax weee">
38229            <span class="price-label">Ab</span>
38230                <span class="approx-price">ca. </span>
38231        <span :id="$id('product\u002Dprice\u002D9635')" data-price-amount="16.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">16,99&nbsp;&euro;</span></span>
38232        </span>
38233</span>
38234
38235
38236</div>                </div>
38237
38238                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
38239                                            <div class="open-access-container open-access-container-9635                    flex mt-4 ml-auto sm:mt-0 hidden">
38240                            <div class="text-gray-700">
38241                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
38242                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
38243                                        Kostenlos online lesen                                    </a>
38244                                </button>
38245                            </div>
38246                        </div>
38247                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Philosophieren mit Filmen im Unterricht" aria-label="In den Warenkorb Philosophieren mit Filmen im Unterricht" data-addto="cart">
38248                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
38249  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
38250</svg>
38251                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
38252                                        In den Warenkorb                                    </span>
38253                                </button>
38254                                                                                                                    
38255<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(9635)" aria-label="Zur Wunschliste hinzuf&uuml;gen Philosophieren mit Filmen im Unterricht" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
38256    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
38257  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
38258</svg>
38259</button>
38260                                    </div>
38261            </div>
38262        </div>
38263        
38263<script>
38264            function initMarketingShortText_9635() {
38265                var marketingShortTextConfig = {};
38266                if (typeof window.initConfigurableSwatchOptions_9635 === "function") {
38267                    var fullConfig = window.initConfigurableSwatchOptions_9635().optionConfig
38268                    var marketingShortTextConfig = fullConfig.marketing_short_text;
38269                }
38270                return {
38271                    marketingShortText: '',
38272                    config: marketingShortTextConfig,
38273                    productId: '9635',
38274                    getMarketingShortText(detail) {
38275                        this.marketingShortText = detail.productIndex ?
38276                            this.config[detail.productIndex] :
38277                            null;
38278                    },
38279                    eventListeners: {
38280                        ['@listing-configurable-selection-changed.window'](event) {
38281                            if (this.productId == event.detail.productId) {
38282                                this.getMarketingShortText(event.detail);
38283                            }
38284
38285                        }
38286                    }
38287                }
38288            }
38289
38290            function initEditionText_9635() {
38291                var editionTextConfig = {};
38292                if (typeof window.initConfigurableSwatchOptions_9635 === "function") {
38293                    var fullConfig = window.initConfigurableSwatchOptions_9635().optionConfig
38294                    var editionTextConfig = fullConfig.edition;
38295                }
38296                return {
38297                    editionText: '',
38298                    config: editionTextConfig,
38299                    productId: '9635',
38300                    getEditionText(detail) {
38301                        this.editionText = detail.productIndex ?
38302                            this.config[detail.productIndex] :
38303                            null;
38304                    },
38305                    eventListeners: {
38306                        ['@listing-configurable-selection-changed.window'](event) {
38307                            if (this.productId == event.detail.productId) {
38308                                this.getEditionText(event.detail);
38309                            }
38310
38311                        }
38312                    }
38313                }
38314            }
38315        </script>
38315
38316                    </form>
38317                            
38318    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/9375/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk15888">
38319        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="9375">
38320                                    <a href="https://meiner.de/fmv_de/rollenspiel-theatrales-philosophieren-musik-und-videoclips-im-philosophie-und-ethikunterricht-15888" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
38321            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-9375.window="$el.src = $event.detail" alt="Rollenspiel, theatrales Philosophieren, Musik und Videoclips im Philosophie- und Ethikunterricht" title="Rollenspiel, theatrales Philosophieren, Musik und Videoclips im Philosophie- und Ethikunterricht" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787336661_6.jpg" :style="{
38322                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
38323                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
38324            }">
38325                    </a>
38326        <div class="product-info flex flex-col flex-grow ">
38327                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
38328                                    <div class="mb-2 text-sm text-gray-500 font-medium">
38329                                                                                    <a href="https://meiner.de/fmv_de/person/Jorg-Peters-3207/" class="mb-2">
38330                                    J&ouml;rg Peters                                                                    </a>
38331                                                                    <span>|</span>
38332                                                                                            <a href="https://meiner.de/fmv_de/person/Martina-Peters-3206/" class="mb-2">
38333                                    Martina Peters                                                                            (Hrsg.)
38334                                                                    </a>
38335                                                                                                                                    </div>
38336                                <a class="product-item-link" href="https://meiner.de/fmv_de/rollenspiel-theatrales-philosophieren-musik-und-videoclips-im-philosophie-und-ethikunterricht-15888">
38337                    Rollenspiel, theatrales Philosophieren, Musik und Videoclips im Philosophie- und Ethikunterricht                </a>
38338                            </div>
38339
38340            <div x-data="initEditionText_9375()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
38341                <!-- Marketing short text -->
38342                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
38343                </div>
38344            </div>
38345
38346                            <div class="py-1 grid  mb-4 ">
38347                    
38348                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":9375,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":9375,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"7618":"1","7619":"1","40009":"1"},"childProductsAlertStatus":{"7618":"0","7619":"0","40009":"0"},"indexMapping":{"163:15":7618,"163:8":7619,"163:9":40009},"availabilityMessages":{"7618":"Lieferbar innerhalb von 3-5 Tagen","7619":"Download sofort  verf\u00fcgbar","40009":"Download sofort  verf\u00fcgbar"},"openAccess":{"9375":{"status":0}
38348,"7618":{"status":0},"7619":{"status":0},"40009":{"status":0}}},"availabilityMessages":{"7618":"Lieferbar innerhalb von 3-5 Tagen","7619":"Download sofort  verf\u00fcgbar","40009":"Download sofort  verf\u00fcgbar"},"openAccess":{"9375":{"status":0},"7618":{"status":0},"7619":{"status":0},"40009":{"status":0}}}'>
38349        <template x-if="containerVisible">
38350                            <!-- Popup Trigger -->
38351                <div>
38352                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
38353                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
38354                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
38355  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
38356<title>bell</title></svg>
38357</span>
38358                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
38359
38360                    <!-- Popup Modal -->
38361                    <template x-if="showModal">
38362                        <template x-teleport=".page-wrapper">
38363                            <div x-cloak class="fixed inset-0 flex items-center justify-center
38364                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
38365                                <div class="relative bg-white rounded-lg shadow-xl
38366                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
38367                                    <div class="p-6">
38368                                        <!-- Subscription Form for Popup -->
38369                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
38370                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
38371                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
38372                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
38373
38374                                            <div class="flex flex-col gap-3">
38375                                                <div class="flex-grow grow">
38376                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
38377                                                        shadow-xs focus:outline-none focus:outline-hidden
38378                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
38379                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
38380                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
38381                                                </div>
38382                                                <input type="hidden" name="product_id" :value="currentProductId">
38383                                                <input type="hidden" name="type" value="email">
38384
38385                                                
38386                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
38387
38388                                                <div class="amxnotif_guest_action">
38389                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
38390                                                        rounded-md focus:outline-none
38391                                                        focus:outline-hidden focu
38391s:ring-2
38392                                                        focus:ring-offset-2 disabled:opacity-50
38393                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
38394                                                        Benachrichtigen                                                    </button>
38395                                                </div>
38396                                            </div>
38397
38398                                                                                            <div class="flex items-start pt-2">
38399                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
38400                                                        text-blue-600 border-gray-300 rounded-sm">
38401                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
38402                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
38403                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
38404                                                </div>
38405                                                                                    </form>
38406                                    </div>
38407
38408                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
38409                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
38410                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
38411  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
38412<title>x</title></svg>
38413                                    </button>
38414                                </div>
38415                            </div>
38416                        </template>
38417                    </template>
38418                </div>
38419                    </template>
38420    </div>
38421
38422<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_9375" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":9375,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"7618":"1","7619":"1","40009":"1"},"childProductsAlertStatus":{"7618":"0","7619":"0","40009":"0"},"indexMapping":"{\u0022163:15\u0022:7618,\u0022163:8\u0022:7619,\u0022163:9\u0022:40009}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":9375,"availabilityMessages":{"7618":"Lieferbar innerhalb von 3-5 Tagen","7619":"Download sofort  verf\u00fcgbar","40009":"Download sofort  verf\u00fcgbar"},"openAccess":{"9375":{"status":0},"7618":{"status":0},"7619":{"status":0},"40009":{"status":0}}}'>
38423    
38424    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
38425        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
38426        <span x-html="optionsLabelText"></span>
38427    </p>
38428</div>                </div>
38429            
38430                                
38430<script>
38431        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
38432            try {
38433                const attributes = (config && config.attributes) ? config.attributes : null;
38434                if (!attributes) return [];
38435                let attr = null;
38436                if (Array.isArray(attributes)) {
38437                    for (let i = 0; i < attributes.length; i++) {
38438                        const a = attributes[i];
38439                        if (a && a.id == attrId) {
38440                            attr = a;
38441                            break;
38442                        }
38443                    }
38444                } else {
38445                    attr = attributes[attrId];
38446                }
38447                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
38448            } catch (e) {
38449                return [];
38450            }
38451        };
38452
38453        function initConfigurableSwatchOptions_9375() {
38454            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["7618"]},{"id":"8","label":"PDF","products":["7619"]},{"id":"9","label":"EPUB","products":["40009"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"7618":{"baseOldPrice":{"amount":25.140185915888},"oldPrice":{"amount":26.9},"basePrice":{"amount":25.140185915888},"finalPrice":{"amount":26.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"7619":{"baseOldPrice":{"amount":18.682241990654},"oldPrice":{"amount":19.99},"basePrice":{"amount":18.682241990654},"finalPrice":{"amount":19.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"40009":{"baseOldPrice":{"amount":18.682241990654},"oldPrice":{"amount":19.99},"basePrice":{"amount":18.682241990654},"finalPrice":{"amount":19.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":18.682241990654},"oldPrice":{"amount":19.99},"basePrice":{"amount":18.682241990654},"finalPrice":{"amount":19.99},"isApproxPrice":null},"productId":"9375","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"7618":{"163":"15"},"7619":{"163":"8"},"40009":{"163":"9"}},"salable":{"163":{"15":["7618"],"8":["7619"],"9":["40009"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"7618":"003658","7619":"003666","40009":"004978"},"output":{"7618":"Kartoniert","7619":"PDF","40009":"EPUB"},"original_name":{"7618":"","7619":"","40009":""},"openaccess_license_link":{"7618":"","7619":"","40009":""},"openaccess_license_name":{"7618":"","7619":"","40009":""},"openaccess_external_link":{"7618":"","7619":"","40009":""},"gpsr_safety_info":{"7618":"","7619":"","40009":""},"description":{"7618":"Pr\u00e4sentative Darstellungsformen und pr\u00e4sentative Medien erfreuen sich immer gr\u00f6\u00dferer Beliebtheit im Philosophie- und Ethikunterricht. Der Band gibt deshalb Anregungen, wie Sch\u00fclerinnen und Sch\u00fcler mit Hilfe von Rollenspielen, theatralem Philosophieren, Videoclips und Musik an philosophische Theorien, Fragestellungen oder Probleme herangef\u00fchrt werden k\u00f6nnen.<br\/><br\/>W\u00e4hrend es in den pr\u00e4sentativen Darstellungsformen darum geht, Philosophisches darstellend umzusetzen, k\u00f6nnen in pr\u00e4sentativen Medien philosophische Fragen veranschaulicht werden. Der vorliegende Band bietet zum einen das theoretische Fundament f\u00fcr die Arbeit mit pr\u00e4sentativen Formaten im Philosophie- und Ethikunterricht und stellt zum anderen zahlreiche praxistaugliche Handreichungen f\u00fcr die Unterrichtsgestaltung vor. Die Herausgeber erl\u00e4utern einleitend, inwiefern die gew\u00e4hlte Zusammenstellung von vier unterschiedlichen Methoden bzw. Medien sinnvoll ist, bevor sich separate Kapitel zu Rollenspiel, theatralem Philosophieren, Video-Clips und Musik anschlie\u00dfen, die alle jeweils Theorie- und Praxisbeitr\u00e4ge enthalten. Die ausgew\u00e4hlten Beispiele und die entsprechenden Unterrichtshandreichungen eignen sich f\u00fcr den Einsatz in Sekundarstufe I und II.<br\/><br\/>Eine umfangreiche Auswahlbibliographie l\u00e4dt zur Weiterarbeit ein und schlie\u00dft das Kompendium ab.","7619":"Pr\u00e4sentative Darstellungsformen und pr\u00e4sentative Medien erfreuen sich immer gr\u00f6\u00dferer Beliebtheit im Philosophie- und Ethikunterricht. Der Band gibt deshalb Anregungen, wie Sch\u00fclerinnen und Sch\u00fcler mit Hilfe von Rollenspielen, theatralem Philosophieren, Videoclips und Musik an philosophische Theorien, Fragestellungen oder Probleme herangef\u00fchrt werden k\u00f6nnen.<br\/><br\/>W\u00e4hrend es in den pr\u00e4sentativen Darstellungsformen darum geht, Philosophisches darstellend umzusetzen, k\u00f6nnen in pr\u00e4sentativen Medien philosophische Fragen veranschaulicht werden. Der vorliegende Band bietet zum einen das theoretische Fundament f\u00fcr die Arbeit mit pr\u00e4sentativen Formaten im Philosophie- und Ethikunterricht und stellt zum anderen zahlreiche praxistaugliche Handreichungen f\u00fcr die Unterrichtsgestaltung vor. Die Herausgeber erl\u00e4utern einleitend, inwiefern die gew\u00e4hlte Zusammenstellung von vier unterschiedlichen Methoden bzw. Medie
38454n sinnvoll ist, bevor sich separate Kapitel zu Rollenspiel, theatralem Philosophieren, Video-Clips und Musik anschlie\u00dfen, die alle jeweils Theorie- und Praxisbeitr\u00e4ge enthalten. Die ausgew\u00e4hlten Beispiele und die entsprechenden Unterrichtshandreichungen eignen sich f\u00fcr den Einsatz in Sekundarstufe I und II.<br\/><br\/>Eine umfangreiche Auswahlbibliographie l\u00e4dt zur Weiterarbeit ein und schlie\u00dft das Kompendium ab.","40009":"Pr\u00e4sentative Darstellungsformen und pr\u00e4sentative Medien erfreuen sich immer gr\u00f6\u00dferer Beliebtheit im Philosophie- und Ethikunterricht. Der Band gibt deshalb Anregungen, wie Sch\u00fclerinnen und Sch\u00fcler mit Hilfe von Rollenspielen, theatralem Philosophieren, Videoclips und Musik an philosophische Theorien, Fragestellungen oder Probleme herangef\u00fchrt werden k\u00f6nnen.<br\/><br\/>W\u00e4hrend es in den pr\u00e4sentativen Darstellungsformen darum geht, Philosophisches darstellend umzusetzen, k\u00f6nnen in pr\u00e4sentativen Medien philosophische Fragen veranschaulicht werden. Der vorliegende Band bietet zum einen das theoretische Fundament f\u00fcr die Arbeit mit pr\u00e4sentativen Formaten im Philosophie- und Ethikunterricht und stellt zum anderen zahlreiche praxistaugliche Handreichungen f\u00fcr die Unterrichtsgestaltung vor. Die Herausgeber erl\u00e4utern einleitend, inwiefern die gew\u00e4hlte Zusammenstellung von vier unterschiedlichen Methoden bzw. Medien sinnvoll ist, bevor sich separate Kapitel zu Rollenspiel, theatralem Philosophieren, Video-Clips und Musik anschlie\u00dfen, die alle jeweils Theorie- und Praxisbeitr\u00e4ge enthalten. Die ausgew\u00e4hlten Beispiele und die entsprechenden Unterrichtshandreichungen eignen sich f\u00fcr den Einsatz in Sekundarstufe I und II.<br\/><br\/>Eine umfangreiche Auswahlbibliographie l\u00e4dt zur Weiterarbeit ein und schlie\u00dft das Kompendium ab."},"doi":{"7618":"","7619":"10.28937\/978-3-7873-3666-1","40009":""},"isbn":{"7618":"978-3-7873-3658-6","7619":"978-3-7873-3666-1","40009":"978-3-7873-4978-4"},"marketing_short_text":{"7618":"","7619":"","40009":""},"recension_text":{"7618":"","7619":"","40009":""},"language":{"7618":"","7619":"","40009":""},"cover":{"7618":"Kartoniert","7619":"","40009":""},"pages":{"7618":"288 Seiten","7619":"288 Seiten","40009":"288 Seiten"},"edition":{"7618":"","7619":"Unver\u00e4ndertes eBook der 1. Auflage von 2026","40009":"Unver\u00e4ndertes EPUB der 1. Auflage von 2026"},"pod":{"7618":"Nein","7619":"Nein","40009":"Nein"},"copyright_year":{"7618":"","7619":"","40009":""},"vlb_tix_link":{"7618":"https:\/\/neu.vlbtix.de\/products\/9783787336586?type=gtin","7619":"","40009":""},"defaultValues":{"163":"15"}};
38455            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
38456
38457            if (typeof window.amxnotif_wrap_attributes === 'function') {
38458                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
38459                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
38460            }
38461
38462            const configurableOptionsComponent = initConfigurableOptions(
38463                '9375',
38464                config
38465            );
38466            const swatchOptionsComponent = initSwatchOptions(
38467                swatchConfig
38468            );
38469
38470            // DWS - Configurable product preselect start
38471            const confProdPreSelect = () => {
38472                return {
38473                    preselectQuerystringItems() {
38474                        var data = {"id":"7618","output":"15"};
38475                        const urlQueryParams = new URLSearchParams(window.location.search);
38476
38477                                                this.$nextTick(() => {
38478                            setTimeout(() => {
38479                                const rootEl = this.$root || this.$el;
38480                                if (!rootEl) return;
38481
38482                                const applySelection = (attrCode, attrValue) => {
38483                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
38484
38485                                    const attributes = Object.values(this.optionConfig.attributes || {});
38486                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
38487
38488                                    if (targetAttr) {
38489                                        const attrId = String(targetAttr.id);
38490                                        const optionVal = String(attrValue);
38491
38492                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
38493
38494                                        if (inputEl) {
38495                                                                                        inputEl.click();
38496                                            inputEl.dispatchEvent(new Event('change', {
38497                                                bubbles: true
38498                                            }));
38499                                        } else {
38500                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
38501                                            if (selectEl) {
38502                                                selectEl.value = optionVal;
38503                                                selectEl.dispatchEvent(new Event('change', {
38504                                                    bubbles: true
38505                                                }));
38506                                            }
38507                                        }
38508
38509                                                                                this.changeOption(attrId, optionVal, false);
38510                                    }
38511                                };
38512
38513                                                                if (data && typeof data === 'object') {
38514                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
38515                                }
38516
38517                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
38518                                    if (attribute && attribute.code) {
38519                                        let optionValue = urlQueryParams.get(attribute.code);
38520                                        if (optionValue) {
38521                                            let optionId = false;
38522                                            const attributes = Object.values(this.optionConfig.attributes || {});
38523                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
38524
38525                                            let found = false;
38526                                            Object.values(targetAttr.options).map(option => {
38527                                                if (found === false && option.label === optionValue) {
38528                                                    optionId = option.id;
38529                                                    found = true;
38530                                                }
38531                                            });
38532
38533                                            const attrId = String(targetAttr.id);
38534                                            let optionVal = String(optionValue);
38535                                            if (found) {
38536                                                optionVal = String(optionId);
38537                                            }
38538
38539                                            applySelection(attribute.code, optionVal);
38540                                        }
38541                                    }
38542                                });
38543                            }, 100);
38544                        });
38545                    }
38546                }
38547            };
38548            // DWS - Configurable product preselect end
38549
38550            const result = Object.assign(
38551                configurableOptionsComponent,
38552                swatchOptionsComponent, {
38553                    productId: '9375',
38554                    productIndex: 0,
38555                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
38556                    showSwatches: false,
38557                    precalcOptions: {},
38558                    originalInit: configurableOptionsComponent.init,
38559                    init() {
38560                        try {
38561                            this.precalcOptions = {};
38562                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
38563                            this.preselectQuerystringItems();
38564                            if (Array.isArray(attrSource)) {
38565                                attrSource.forEach(attr => {
38566                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
38567                                });
38568                            } else if (attrSource && typeof attrSource === 'object') {
38569                                Object.keys(attrSource).forEach(id => {
38570                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
38571                                });
38572                            }
38573                        } catch (e) {
38574                            console.error('Pre-calc error:', e);
38575                        }
38576
38577                        if (typeof this.originalInit === 'function') {
38578                            this.originalInit();
38579                        }
38580
38581                        try {
38582                            this.initShowSwatchesIntersect();
38583                        } catch (e) {
38584                            console.error('intersect error:', e);
38585                        }
38586                    },
38587
38588                    updateGallery() {
38589                        if (!this.productIndex) return;
38590
38591                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
38592                                method: 'GET',
38593                                headers: {
38594                                    'Content-Type': 'application/json',
38595                                    'X-Requested-With': 'XMLHttpRequest'
38596                                }
38597                            })
38598                            .then(response => response.json())
38599                            .then(data => {
38600                                if (data && data.medium) {
38601                                    window.dispatchEvent(new CustomEvent("update-gallery-9375", {
38602                                        detail: data.medium
38603                                    }));
38604                                }
38605                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
38606                    },
38607
38608
38609                    initShowSwatchesIntersect() {
38610                        const observer = new IntersectionObserver(entries => {
38611                            if (entries[0].isIntersecting) {
38612                                this.showSwatches = true;
38613                                observer.disconnect();
38614                            }
38615                        }, {
38616                            rootMargin: '512px'
38617                        });
38618                        observer.observe(this.$el);
38619                    },
38620                    getOptions(attrId) {
38621                        return this.precalcOptions[attrId] || [];
38622                    },
38623                    getOptionsByAttrId() {
38624                        return this.getOptions(this.$el.dataset.attributeId);
38625                    },
38626                    _getItemId() {
38627                        if (this.item && this.item.id) return this.item.id;
38628                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
38629                    },
38630                    getSwatchOptionHtmlId() {
38631                        const itemId = this._getItemId();
38632                        return itemId ? this.$id(`attribute-option-9375-${itemId}`) : '';
38633                    },
38634                    getSwatchOptionHtmlIdGroup() {
38635                        const itemId = this._getItemId();
38636                        return itemId ? [`attribute-option-9375-${itemId}`] : [];
38637                    },
38638                    getAttributeSwatchData(attributeId) {
38639                        const data = Object.assign({}, this.swatchConfig[attributeId]);
38640                        if (data['additional_data']) {
38641                            try {
38642                                data['details'] = JSON.parse(data['additional_data']);
38643                            } catch (e) {
38644                                data['details'] = {};
38645                            }
38646                        }
38647                        return data;
38648                    },
38649                    getSwatchType(attributeId, optionId) {
38650                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
38651                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
38652                        }
38653                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
38654                            this.swatchConfig[attributeId].details.swatch_input_type :
38655                            "empty";
38656                        if (type === 'visual') {
38657                            const config = this.swatchConfig[attributeId];
38658                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
38659                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
38660                            }
38661                            // Fallback to first option type
38662                            for (const oId in config) {
38663                                if (config[oId] && typeof config[oId].type !== 'undefined') {
38664                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
38665                                }
38666                            }
38667                        }
38668                        return type;
38669                    },
38670                    mapSwatchTypeNumberToTypeCode(type) {
38671                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
38672                    },
38673                    isTextSwatch() {
38674                        const itemId = this._getItemId();
38675                        if (!this.$el || !itemId) return false;
38676                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
38677                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
38678                    },
38679
38680                    getSwatchText() {
38681                        const itemId = this._getItemId();
38682                        if (this.item) return this.item.label || '';
38683                        if (!this.$el || !itemId) return '';
38684                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
38685                        const options = attrId ? this.getOptions(attrId) : [];
38686                        const opt = options.find(o => o.id == itemId);
38687                        return opt ? opt.label : '';
38688                    },
38689                    getSwatchBackgroundStyle() {
38690                        const itemId = this._getItemId();
38691                        if (!this.$el || !itemId) return '';
38692                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
38693                        if (!attrId) return '';
38694                        const type = this.getSwatchType(attrId, itemId);
38695                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
38696                            this.swatchConfig[attrId][itemId] :
38697                            null;
38698                        if (!swatchData) return '';
38699                        if (type === "color") return 'background-color:' + swatchData.value;
38700                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
38701                        return '';
38702                    },
38703                    swatchOptionClasses() {
38704                        const itemId = this._getItemId();
38705                        if (!this.$el || !itemId) return {};
38706                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
38707                        return {
38708                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
38709                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
38710                            'w-6 h-6': !this.isTextSwatch()
38711                        }
38712                    },
38713
38714                    onFocusSwatchItem() {
38715                        const itemId = this._getItemId();
38716                        if (itemId) this.focusedLabel = itemId;
38717                    },
38718                    onChangeOption() {
38719                        const itemId = this._getItemId();
38720                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
38721                        if (attrId && itemId) this.changeOption(attrId, itemId);
38722                    },
38723                    changeOption(attributeId, value) {
38724                        if (value === '') {
38725                            return;
38726                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
38727                        } else {
38728                            this.selectedValues[attributeId] = value;
38729                        }
38730
38731                        this.findSimpleIndex();
38732                        this.findAllowedAttributeOptions();
38733                        this.updatePrices();
38734                        this.updateGallery();
38735
38736                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
38737                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
38738
38739                        const eventDetail = {
38740                            productId: this.productId,
38741                            optionId: attributeId,
38742                            value: value,
38743                            productIndex: this.productIndex || 0,
38744                            selectedValues: this.selectedValues,
38745                            candidates: candidates,
38746                            sourceElement: this.$el
38747                        };
38748
38749                        // Dispatch for Amasty
38750                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
38751                            detail: eventDetail
38752                        }));
38753
38754                        // Dispatch for Hyva listing
38755                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
38756                            detail: eventDetail
38757                        }));
38758                    },
38759
38760
38761                    clearOptionIfActive() {
38762                        const itemId = this._getItemId();
38763                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
38764                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
38765                            this.changeOption(attrId, '');
38766
38767                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
38768                            if (!input && this.$el?.querySelector) {
38769                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
38770                            }
38771                            if (!input && this.$el?.closest) {
38772                                const root = this.$el.closest('[data-product-id]') || this.$el;
38773                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
38774                            }
38775                            if (input) {
38776                                input.checked = false;
38777                            }
38778                        }
38779                    },
38780                    get optionIsEnabled() {
38781                        const itemId = this._getItemId();
38782                        if (!this.$el || !itemId) return true;
38783                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
38784                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
38785                        return !!allowedOptions.find(opt => opt.id == itemId);
38786                    },
38787                    get isSelected() {
38788                        const itemId = this._getItemId();
38789                        if (!this.$el || !itemId) return false;
38790                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
38791                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
38792                    },
38793                    get isSwatchRequired() {
38794                        if (!this.$el) return false;
38795                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
38796                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
38797                    },
38798                    focusedLabel: false,
38799                    activeTooltipItem: false,
38800                    tooltipPositionElement: false,
38801                    setActiveTooltipItem() {
38802                        const itemId = this._getItemId();
38803                        if (!this.$el || !itemId) return;
38804                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
38805                        this.activeTooltipItem = {
38806                            attribute: attrId,
38807                            item: itemId,
38808                            index: 0
38809                        };
38810                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
38811                    },
38812                    unsetActiveTooltipItem() {
38813                        this.activeTooltipItem = false;
38814                    }
38815                },
38816                confProdPreSelect()
38817            );
38818
38819            if (result.optionConfig && result.optionConfig.attributes) {
38820                const attributes = result.optionConfig.attributes;
38821                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
38822                    let source = attributes;
38823                    if (Array.isArray(attributes)) {
38824                        source = {};
38825                        attributes.forEach(attr => {
38826                            if (attr && attr.id) source[attr.id] = attr;
38827                        });
38828                    }
38829                    const values = Object.values(source);
38830                    const wrapper = Object.assign(values, source);
38831                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
38832                        value: true,
38833                        enumerable: false
38834                    });
38835                    result.optionConfig.attributes = wrapper;
38836                }
38837            }
38838
38839            return result;
38840        }
38841
38842        window.addEventListener('alpine:init', () => {
38843            Alpine.data('initConfigurableSwatchOptions_9375', initConfigurableSwatchOptions_9375);
38844        }, {
38845            once: true
38846        });
38847    </script>
38847
38848    
38849    <div x-data="initConfigurableSwatchOptions_9375" x-defer="intersect">
38850        <div class="pagebuilder-home-hidden">
38851                                            
38852                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
38853                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
38854                        <template x-if="showSwatches">
38855                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-9375-163" role="radiogroup" aria-label="Einband">
38856                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
38857                                    <div :data-option-id="item.id" style="display: contents">
38858                                        <div x-id="getSwatchOptionHtmlIdGroup">
38859    <template x-if="optionIsEnabled">
38860        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
38860self="unsetActiveTooltipItem">
38861            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-9375-163">
38862            <div>
38863                <template x-if="isTextSwatch">
38864                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
38865                </template>
38866                <template x-if="!optionIsActive(163, item.id)">
38867                    <div>
38868                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
38869                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
38870                        </svg>
38871                    </div>
38872                </template>
38873            </div>
38874        </label>
38875    </template>
38876</div>                                    </div>
38877                                </template>
38878                            </div>
38879                        </template>
38880                    </div>
38881                </div>
38882                    </div>
38883    </div>
38884            
38885                                                <div class="meta py-4 pagebuilder-home-hidden">
38886                <div x-data="initMarketingShortText_9375()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
38887                    <!-- Marketing short text -->
38888                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
38889                    </div>
38890
38891                    <!-- Short description -->
38892                                                                <div class="short-description">
38893                            Musik und Videoclips pr&auml;gen den Alltag vieler Jugendlicher, weshalb sich diese beiden pr&auml;sentativen Medien f&uuml;r einen Einsatz im Philosophie- und Ethikunterricht in besonderem Ma&szlig;e eignen. &hellip;                            <a href="https://meiner.de/fmv_de/rollenspiel-theatrales-philosophieren-musik-und-videoclips-im-philosophie-und-ethikunterricht-15888" class="underline">mehr</a>
38894                        </div>
38895                                    </div>
38896
38897                <!-- Series  -->
38898                                    <div class="mb-1">
38899                        <span class="sr-only">Reihe:</span>
38900                        <a href="https://meiner.de/fmv_de/programm/reihen/methoden-im-philosophie-und-ethikunterricht">
38901                            <span>Methoden im Philosophie- und Ethikunterricht</span>
38902                        </a>
38903                                                    9                                            </div>
38904                
38905                
38906                                                    <div class="mb-1">
38907                        <span x-data="initEditionText_9375()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
38908                            <!-- Marketing short text -->
38909                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 288 Seiten                        </span>
38910                    </div>
38911                
38912                            </div>
38913            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
38914                
38915                <div class="justify-end" x-data="initPriceBox()" @update-prices-9375.window="updatePrice($event.detail);">
38916                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="9375" data-price-box="product-id-9375"><span class="normal-price">
38917    <span x-data x-id="['product\u002Dprice\u002D9375']" class="price-container price-final_price tax weee">
38918            <span class="price-label">Ab</span>
38919                <span class="approx-price">ca. </span>
38920        <span :id="$id('product\u002Dprice\u002D9375')" data-price-amount="19.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">19,99&nbsp;&euro;</span></span>
38921        </span>
38922</span>
38923
38924
38925</div>                </div>
38926
38927                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
38928                                            <div class="open-access-container open-access-container-9375                    flex mt-4 ml-auto sm:mt-0 hidden">
38929                            <div class="text-gray-700">
38930                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
38931                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
38932                                        Kostenlos online lesen                                    </a>
38933                                </button>
38934                            </div>
38935                        </div>
38936                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Rollenspiel, theatrales Philosophieren, Musik und Videoclips im Philosophie- und Ethikunterricht" aria-label="In den Warenkorb Rollenspiel, theatrales Philosophieren, Musik und Videoclips im Philosophie- und Ethikunterricht" data-addto="cart">
38937                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
38938  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
38939</svg>
38940                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
38941                                        In den Warenkorb                                    </span>
38942                                </button>
38943                                                                                                                    
38944<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(9375)" aria-label="Zur Wunschliste hinzuf&uuml;gen Rollenspiel, theatrales Philosophieren, Musik und Videoclips im Philosophie- und Ethikunterricht" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
38945    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
38946  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
38947</svg>
38948</button>
38949                                    </div>
38950            </div>
38951        </div>
38952        
38952<script>
38953            function initMarketingShortText_9375() {
38954                var marketingShortTextConfig = {};
38955                if (typeof window.initConfigurableSwatchOptions_9375 === "function") {
38956                    var fullConfig = window.initConfigurableSwatchOptions_9375().optionConfig
38957                    var marketingShortTextConfig = fullConfig.marketing_short_text;
38958                }
38959                return {
38960                    marketingShortText: '',
38961                    config: marketingShortTextConfig,
38962                    productId: '9375',
38963                    getMarketingShortText(detail) {
38964                        this.marketingShortText = detail.productIndex ?
38965                            this.config[detail.productIndex] :
38966                            null;
38967                    },
38968                    eventListeners: {
38969                        ['@listing-configurable-selection-changed.window'](event) {
38970                            if (this.productId == event.detail.productId) {
38971                                this.getMarketingShortText(event.detail);
38972                            }
38973
38974                        }
38975                    }
38976                }
38977            }
38978
38979            function initEditionText_9375() {
38980                var editionTextConfig = {};
38981                if (typeof window.initConfigurableSwatchOptions_9375 === "function") {
38982                    var fullConfig = window.initConfigurableSwatchOptions_9375().optionConfig
38983                    var editionTextConfig = fullConfig.edition;
38984                }
38985                return {
38986                    editionText: '',
38987                    config: editionTextConfig,
38988                    productId: '9375',
38989                    getEditionText(detail) {
38990                        this.editionText = detail.productIndex ?
38991                            this.config[detail.productIndex] :
38992                            null;
38993                    },
38994                    eventListeners: {
38995                        ['@listing-configurable-selection-changed.window'](event) {
38996                            if (this.productId == event.detail.productId) {
38997                                this.getEditionText(event.detail);
38998                            }
38999
39000                        }
39001                    }
39002                }
39003            }
39004        </script>
39004
39005                    </form>
39006                            
39007    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/4217/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk13639">
39008        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="4217">
39009                                    <a href="https://meiner.de/fmv_de/philosophieren-mit-bildern-und-fotografien" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
39010            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-4217.window="$el.src = $event.detail" alt="Philosophieren mit Bildern und Fotografien" title="Philosophieren mit Bildern und Fotografien" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787344307_3.jpg" :style="{
39011                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
39012                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
39013            }">
39014                    </a>
39015        <div class="product-info flex flex-col flex-grow ">
39016                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
39017                                    <div class="mb-2 text-sm text-gray-500 font-medium">
39018                                                                                    <a href="https://meiner.de/fmv_de/person/Jorg-Peters-3207/" class="mb-2">
39019                                    J&ouml;rg Peters                                                                    </a>
39020                                                                    <span>|</span>
39021                                                                                            <a href="https://meiner.de/fmv_de/person/Martina-Peters-3206/" class="mb-2">
39022                                    Martina Peters                                                                            (Hrsg.)
39023                                                                    </a>
39024                                                                                                                                    </div>
39025                                <a class="product-item-link" href="https://meiner.de/fmv_de/philosophieren-mit-bildern-und-fotografien">
39026                    Philosophieren mit Bildern und Fotografien                </a>
39027                            </div>
39028
39029            <div x-data="initEditionText_4217()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
39030                <!-- Marketing short text -->
39031                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
39032                </div>
39033            </div>
39034
39035                            <div class="py-1 grid  mb-4 ">
39036                    
39037                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":4217,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":4217,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"4914":"1","4918":"1","15451":"1"},"childProductsAlertStatus":{"4914":"0","4918":"0","15451":"0"},"indexMapping":{"163:15":4914,"163:8":4918,"163:9":15451},"availabilityMessages":{"4914":"Lieferbar innerhalb von 3-5 Tagen","4918":"Download sofort  verf\u00fcgbar","15451":"Download sofort  verf\u00fcgbar"},"openAccess":{"4217":{"status":0},"4914":{"status":0},"4918":{"status":0},"15451":{"status":0}}},"availabilityMessages":{"4914":"Lieferbar innerhalb von 3-5 Tagen","4918":"Download sofort  verf\u00fcgbar","15451":"Download sofort  verf\u00fcgbar"},"openAccess":{"4217":{"status":0},"4914":{"status":0},"4918":{"status":0},"15451":{"status":0}}}'>
39038        <template x-if="containerVisible">
39039                            <!-- Popup Trigger -->
39040                <div>
39041                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
39042                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
39043                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
39044  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
39045<title>bell</title></svg>
39046</span>
39047                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
39048
39049                    <!-- Popup Modal -->
39050                    <template x-if="showModal">
39051                        <template x-teleport=".page-wrapper">
39052                            <div x-cloak class="fixed inset-0 flex items-center justify-center
39053                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
39054                                <div class="relative bg-white rounded-lg shadow-xl
39055                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
39056                                    <div class="p-6">
39057                                        <!-- Subscription Form for Popup -->
39058                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
39059                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
39060                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
39061                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
39062
39063                                            <div class="flex flex-col gap-3">
39064                                                <div class="flex-grow grow">
39065                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
39066                                                        shadow-xs focus:outline-none focus:outline-hidden
39067                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
39068                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
39069                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
39070                                                </div>
39071                                                <input type="hidden" name="product_id" :value="currentProductId">
39072                                                <input type="hidden" name="type" value="email">
39073
39074                                                
39075                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
39076
39077                                                <div class="amxnotif_guest_action">
39078                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
39079                                                        rounded-md focus:outline-none
39080                                                        focus:outline-hidden focus:ring-2
39081                                                        focus:ring-offset-2 disabled:opacity-50
39082                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
39083                                                        Benachrichtigen                                                    </button>
39084                                                </div>
39085                                            </div>
39086
39087                                                                                            <div class="flex items-start pt-2">
39088                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
39089                                                        text-blue-600 border-gray-300 rounded-sm">
39090                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
39091                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
39092                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
39093                                                </div>
39094                                                                                    </form>
39095                                    </div>
39096
39097                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
39098                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
39099                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
39100  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
39101<title>x</title></svg>
39102                                    </button>
39103                                </div>
39104                            </div>
39105                        </template>
39106                    </template>
39107                </div>
39108                    </template>
39109    </div>
39110
39111<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_4217" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":4217,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"4914":"1","4918":"1","15451":"1"},"childProductsAlertStatus":{"4914":"0","4918":"0","15451":"0"},"indexMapping":"{\u0022163:15\u0022:4914,\u0022163:8\u0022:4918,\u0022163:9\u0022:15451}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":4217,"availabilityMessages":{"4914":"Lieferbar innerhalb von 3-5 Tagen","4918":"Download sofort  verf\u00fcgbar","15451":"Download sofort  verf\u00fcgbar"},"openAccess":{"4217":{"status":0},"4914":{"status":0},"4918":{"status":0},"15451":{"status":0}}}'>
39112    
39113    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
39114        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
39115        <span x-html="optionsLabelText"></span>
39116    </p>
39117</div>                </div>
39118            
39119                                
39119<script>
39120        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
39121            try {
39122                const attributes = (config && config.attributes) ? config.attributes : null;
39123                if (!attributes) return [];
39124                let attr = null;
39125                if (Array.isArray(attributes)) {
39126                    for (let i = 0; i < attributes.length; i++) {
39127                        const a = attributes[i];
39128                        if (a && a.id == attrId) {
39129                            attr = a;
39130                            break;
39131                        }
39132                    }
39133                } else {
39134                    attr = attributes[attrId];
39135                }
39136                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
39137            } catch (e) {
39138                return [];
39139            }
39140        };
39141
39142        function initConfigurableSwatchOptions_4217() {
39143            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["4914"]},{"id":"8","label":"PDF","products":["4918"]},{"id":"9","label":"EPUB","products":["15451"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"4914":{"baseOldPrice":{"amount":27.943924233645},"oldPrice":{"amount":29.9},"basePrice":{"amount":27.943924233645},"finalPrice":{"amount":29.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"4918":{"baseOldPrice":{"amount":20.551400869159},"oldPrice":{"amount":21.99},"basePrice":{"amount":20.551400869159},"finalPrice":{"amount":21.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"15451":{"baseOldPrice":{"amount":18.682241990654},"oldPrice":{"amount":19.99},"basePrice":{"amount":18.682241990654},"finalPrice":{"amount":19.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":18.682241990654},"oldPrice":{"amount":19.99},"basePrice":{"amount":18.682241990654},"finalPrice":{"amount":19.99},"isApproxPrice":null},"productId":"4217","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"4914":{"163":"15"},"4918":{"163":"8"},"15451":{"163":"9"}},"salable":{"163":{"15":["4914"],"8":["4918"],"9":["15451"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"4914":"004428","4918":"004429","15451":"004430"},"output":{"4914":"Kartoniert","4918":"PDF","15451":"EPUB"},"original_name":{"4914":"","4918":"","15451":""},"openaccess_license_link":{"4914":"","4918":"","15451":""},"openaccess_license_name":{"4914":"","4918":"","15451":""},"openaccess_external_link":{"4914":"","4918":"","15451":""},"gpsr_safety_info":{"4914":"","4918":"","15451":""},"description":{"4914":"Neben Texten und Filmen z\u00e4hlen Bilder und Fotografien aktuell zu den beliebtesten Medien im Philosophie- und Ethikunterricht. Der vorliegende Band bietet sowohl die theoretische Begr\u00fcndung, warum die unterrichtliche Arbeit mit ihnen von essentieller Bedeutung ist, als auch zahlreiche praxistaugliche Beispiele und Handreichungen f\u00fcr die Unterrichtsgestaltung in beiden Sekundarstufen. <br\/><br\/>Zu Beginn f\u00fchren die Herausgeber zun\u00e4chst in das Thema ein, bevor sich je ein Theorie- und ein Praxisteil zu Bildern und Fotografien anschlie\u00dfen. W\u00e4hrend die Theorieteile die grunds\u00e4tzliche Bedeutung von Bildern und Fotografien im Philosophie- und Ethikunterricht erl\u00e4utern und die Chancen und Grenzen ihres Einsatzes darlegen, wird in den Praxisteilen anhand konkreter Unterrichtsbeispiele demonstriert, wie kreativ vielf\u00e4ltig man darstellende Kunstwerke und Fotos nutzen kann, um Sch\u00fclerinnen und Sch\u00fcler in philosophische Fragestellungen oder Theorien einzuf\u00fchren, diese zu verdeutlichen oder zu vertiefen. Die Auswahl des Bildmaterials und der entsprechenden Unterrichtshandreichungen eignen sich f\u00fcr den Einsatz in Sekundarstufe I und II.<br\/><br\/>Der Band schlie\u00dft mit einer weiterf\u00fchrenden Auswahlbibliographie ab.","4918":"Neben Texten und Filmen z\u00e4hlen Bilder und Fotografien aktuell zu den beliebtesten Medien im Philosophie- und Ethikunterricht. Der vorliegende Band bietet sowohl die theoretische Begr\u00fcndung, warum die unterrichtliche Arbeit mit ihnen von essentieller Bedeutung ist, als auch za
39143hlreiche praxistaugliche Beispiele und Handreichungen f\u00fcr die Unterrichtsgestaltung in beiden Sekundarstufen. <br\/><br\/>Zu Beginn f\u00fchren die Herausgeber zun\u00e4chst in das Thema ein, bevor sich je ein Theorie- und ein Praxisteil zu Bildern und Fotografien anschlie\u00dfen. W\u00e4hrend die Theorieteile die grunds\u00e4tzliche Bedeutung von Bildern und Fotografien im Philosophie- und Ethikunterricht erl\u00e4utern und die Chancen und Grenzen ihres Einsatzes darlegen, wird in den Praxisteilen anhand konkreter Unterrichtsbeispiele demonstriert, wie kreativ vielf\u00e4ltig man darstellende Kunstwerke und Fotos nutzen kann, um Sch\u00fclerinnen und Sch\u00fcler in philosophische Fragestellungen oder Theorien einzuf\u00fchren, diese zu verdeutlichen oder zu vertiefen. Die Auswahl des Bildmaterials und der entsprechenden Unterrichtshandreichungen eignen sich f\u00fcr den Einsatz in Sekundarstufe I und II.<br\/><br\/>Der Band schlie\u00dft mit einer weiterf\u00fchrenden Auswahlbibliographie ab.","15451":"Neben Texten und Filmen z\u00e4hlen Bilder und Fotografien aktuell zu den beliebtesten Medien im Philosophie- und Ethikunterricht. Der vorliegende Band bietet sowohl die theoretische Begr\u00fcndung, warum die unterrichtliche Arbeit mit ihnen von essentieller Bedeutung ist, als auch zahlreiche praxistaugliche Beispiele und Handreichungen f\u00fcr die Unterrichtsgestaltung in beiden Sekundarstufen. <br\/><br\/>Zu Beginn f\u00fchren die Herausgeber zun\u00e4chst in das Thema ein, bevor sich je ein Theorie- und ein Praxisteil zu Bildern und Fotografien anschlie\u00dfen. W\u00e4hrend die Theorieteile die grunds\u00e4tzliche Bedeutung von Bildern und Fotografien im Philosophie- und Ethikunterricht erl\u00e4utern und die Chancen und Grenzen ihres Einsatzes darlegen, wird in den Praxisteilen anhand konkreter Unterrichtsbeispiele demonstriert, wie kreativ vielf\u00e4ltig man darstellende Kunstwerke und Fotos nutzen kann, um Sch\u00fclerinnen und Sch\u00fcler in philosophische Fragestellungen oder Theorien einzuf\u00fchren, diese zu verdeutlichen oder zu vertiefen. Die Auswahl des Bildmaterials und der entsprechenden Unterrichtshandreichungen eignen sich f\u00fcr den Einsatz in Sekundarstufe I und II.<br\/><br\/>Der Band schlie\u00dft mit einer weiterf\u00fchrenden Auswahlbibliographie ab."},"doi":{"4914":"","4918":"10.28937\/978-3-7873-4429-1","15451":""},"isbn":{"4914":"978-3-7873-4428-4","4918":"978-3-7873-4429-1","15451":"978-3-7873-4430-7"},"marketing_short_text":{"4914":"","4918":"","15451":""},"recension_text":{"4914":"","4918":"","15451":""},"language":{"4914":"","4918":"","15451":""},"cover":{"4914":"Kartoniert","4918":"","15451":""},"pages":{"4914":"352 Seiten mit 128 Abbildungen.","4918":"352 Seiten mit 128 Abbildungen","15451":"352 Seiten mit 128 Abbildungen"},"edition":{"4914":"","4918":"Unver\u00e4ndertes eBook der 1. Auflage von 2024","15451":"Unver\u00e4ndertes EPUB der 1. Auflage von 2024"},"pod":{"4914":"Nein","4918":"Nein","15451":"Nein"},"copyright_year":{"4914":"","4918":"","15451":""},"vlb_tix_link":{"4914":"https:\/\/neu.vlbtix.de\/products\/9783787344284?type=gtin","4918":"","15451":""},"defaultValues":{"163":"15"}};
39144            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
39145
39146            if (typeof window.amxnotif_wrap_attributes === 'function') {
39147                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
39148                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
39149            }
39150
39151            const configurableOptionsComponent = initConfigurableOptions(
39152                '4217',
39153                config
39154            );
39155            const swatchOptionsComponent = initSwatchOptions(
39156                swatchConfig
39157            );
39158
39159            // DWS - Configurable product preselect start
39160            const confProdPreSelect = () => {
39161                return {
39162                    preselectQuerystringItems() {
39163                        var data = {"id":"4914","output":"15"};
39164                        const urlQueryParams = new URLSearchParams(window.location.search);
39165
39166                                                this.$nextTick(() => {
39167                            setTimeout(() => {
39168                                const rootEl = this.$root || this.$el;
39169                                if (!rootEl) return;
39170
39171                                const applySelection = (attrCode, attrValue) => {
39172                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
39173
39174                                    const attributes = Object.values(this.optionConfig.attributes || {});
39175                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
39176
39177                                    if (targetAttr) {
39178                                        const attrId = String(targetAttr.id);
39179                                        const optionVal = String(attrValue);
39180
39181                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
39182
39183                                        if (inputEl) {
39184                                                                                        inputEl.click();
39185                                            inputEl.dispatchEvent(new Event('change', {
39186                                                bubbles: true
39187                                            }));
39188                                        } else {
39189                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
39190                                            if (selectEl) {
39191                                                selectEl.value = optionVal;
39192                                                selectEl.dispatchEvent(new Event('change', {
39193                                                    bubbles: true
39194                                                }));
39195                                            }
39196                                        }
39197
39198                                                                                this.changeOption(attrId, optionVal, false);
39199                                    }
39200                                };
39201
39202                                                                if (data && typeof data === 'object') {
39203                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
39204                                }
39205
39206                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
39207                                    if (attribute && attribute.code) {
39208                                        let optionValue = urlQueryParams.get(attribute.code);
39209                                        if (optionValue) {
39210                                            let optionId = false;
39211                                            const attributes = Object.values(this.optionConfig.attributes || {});
39212                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
39213
39214                                            let found = false;
39215                                            Object.values(targetAttr.options).map(option => {
39216                                                if (found === false && option.label === optionValue) {
39217                                                    optionId = option.id;
39218                                                    found = true;
39219                                                }
39220                                            });
39221
39222                                            const attrId = String(targetAttr.id);
39223                                            let optionVal = String(optionValue);
39224                                            if (found) {
39225                                                optionVal = String(optionId);
39226                                            }
39227
39228                                            applySelection(attribute.code, optionVal);
39229                                        }
39230                                    }
39231                                });
39232                            }, 100);
39233                        });
39234                    }
39235                }
39236            };
39237            // DWS - Configurable product preselect end
39238
39239            const result = Object.assign(
39240                configurableOptionsComponent,
39241                swatchOptionsComponent, {
39242                    productId: '4217',
39243                    productIndex: 0,
39244                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
39245                    showSwatches: false,
39246                    precalcOptions: {},
39247                    originalInit: configurableOptionsComponent.init,
39248                    init() {
39249                        try {
39250                            this.precalcOptions = {};
39251                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
39252                            this.preselectQuerystringItems();
39253                            if (Array.isArray(attrSource)) {
39254                                attrSource.forEach(attr => {
39255                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
39256                                });
39257                            } else if (attrSource && typeof attrSource === 'object') {
39258                                Object.keys(attrSource).forEach(id => {
39259                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
39260                                });
39261                            }
39262                        } catch (e) {
39263                            console.error('Pre-calc error:', e);
39264                        }
39265
39266                        if (typeof this.originalInit === 'function') {
39267                            this.originalInit();
39268                        }
39269
39270                        try {
39271                            this.initShowSwatchesIntersect();
39272                        } catch (e) {
39273                            console.error('intersect error:', e);
39274                        }
39275                    },
39276
39277                    updateGallery() {
39278                        if (!this.productIndex) return;
39279
39280                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
39281                                method: 'GET',
39282                                headers: {
39283                                    'Content-Type': 'application/json',
39284                                    'X-Requested-With': 'XMLHttpRequest'
39285                                }
39286                            })
39287                            .then(response => response.json())
39288                            .then(data => {
39289                                if (data && data.medium) {
39290                                    window.dispatchEvent(new CustomEvent("update-gallery-4217", {
39291                                        detail: data.medium
39292                                    }));
39293                                }
39294                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
39295                    },
39296
39297
39298                    initShowSwatchesIntersect() {
39299                        const observer = new IntersectionObserver(entries => {
39300                            if (entries[0].isIntersecting) {
39301                                this.showSwatches = true;
39302                                observer.disconnect();
39303                            }
39304                        }, {
39305                            rootMargin: '512px'
39306                        });
39307                        observer.observe(this.$el);
39308                    },
39309                    getOptions(attrId) {
39310                        return this.precalcOptions[attrId] || [];
39311                    },
39312                    getOptionsByAttrId() {
39313                        return this.getOptions(this.$el.dataset.attributeId);
39314                    },
39315                    _getItemId() {
39316                        if (this.item && this.item.id) return this.item.id;
39317                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
39318                    },
39319                    getSwatchOptionHtmlId() {
39320                        const itemId = this._getItemId();
39321                        return itemId ? this.$id(`attribute-option-4217-${itemId}`) : '';
39322                    },
39323                    getSwatchOptionHtmlIdGroup() {
39324                        const itemId = this._getItemId();
39325                        return itemId ? [`attribute-option-4217-${itemId}`] : [];
39326                    },
39327                    getAttributeSwatchData(attributeId) {
39328                        const data = Object.assign({}, this.swatchConfig[attributeId]);
39329                        if (data['additional_data']) {
39330                            try {
39331                                data['details'] = JSON.parse(data['additional_data']);
39332                            } catch (e) {
39333                                data['details'] = {};
39334                            }
39335                        }
39336                        return data;
39337                    },
39338                    getSwatchType(attributeId, optionId) {
39339                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
39340                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
39341                        }
39342                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
39343                            this.swatchConfig[attributeId].details.swatch_input_type :
39344                            "empty";
39345                        if (type === 'visual') {
39346                            const config = this.swatchConfig[attributeId];
39347                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
39348                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
39349                            }
39350                            // Fallback to first option type
39351                            for (const oId in config) {
39352                                if (config[oId] && typeof config[oId].type !== 'undefined') {
39353                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
39354                                }
39355                            }
39356                        }
39357                        return type;
39358                    },
39359                    mapSwatchTypeNumberToTypeCode(type) {
39360                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
39361                    },
39362                    isTextSwatch() {
39363                        const itemId = this._getItemId();
39364                        if (!this.$el || !itemId) return false;
39365                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
39366                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
39367                    },
39368
39369                    getSwatchText() {
39370                        const itemId = this._getItemId();
39371                        if (this.item) return this.item.label || '';
39372                        if (!this.$el || !itemId) return '';
39373                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
39374                        const options = attrId ? this.getOptions(attrId) : [];
39375                        const opt = options.find(o => o.id == itemId);
39376                        return opt ? opt.label : '';
39377                    },
39378                    getSwatchBackgroundStyle() {
39379                        const itemId = this._getItemId();
39380                        if (!this.$el || !itemId) return '';
39381                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
39382                        if (!attrId) return '';
39383                        const type = this.getSwatchType(attrId, itemId);
39384                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
39385                            this.swatchConfig[attrId][itemId] :
39386                            null;
39387                        if (!swatchData) return '';
39388                        if (type === "color") return 'background-color:' + swatchData.value;
39389                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
39390                        return '';
39391                    },
39392                    swatchOptionClasses() {
39393                        const itemId = this._getItemId();
39394                        if (!this.$el || !itemId) return {};
39395                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
39396                        return {
39397                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
39398                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
39399                            'w-6 h-6': !this.isTextSwatch()
39400                        }
39401                    },
39402
39403                    onFocusSwatchItem() {
39404                        const itemId = this._getItemId();
39405                        if (itemId) this.focusedLabel = itemId;
39406                    },
39407                    onChangeOption() {
39408                        const itemId = this._getItemId();
39409                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
39410                        if (attrId && itemId) this.changeOption(attrId, itemId);
39411                    },
39412                    changeOption(attributeId, value) {
39413                        if (value === '') {
39414                            return;
39415                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
39416                        } else {
39417                            this.selectedValues[attributeId] = value;
39418                        }
39419
39420                        this.findSimpleIndex();
39421                        this.findAllowedAttributeOptions();
39422                        this.updatePrices();
39423                        this.updateGallery();
39424
39425                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
39426                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
39427
39428                        const eventDetail = {
39429                            productId: this.productId,
39430                            optionId: attributeId,
39431                            value: value,
39432                            productIndex: this.productIndex || 0,
39433                            selectedValues: this.selectedValues,
39434                            candidates: candidates,
39435                            sourceElement: this.$el
39436                        };
39437
39438                        // Dispatch for Amasty
39439                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
39440                            detail: eventDetail
39441                        }));
39442
39443                        // Dispatch for Hyva listing
39444                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
39445                            detail: eventDetail
39446                        }));
39447                    },
39448
39449
39450                    clearOptionIfActive() {
39451                        const itemId = this._getItemId();
39452                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
39453                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
39454                            this.changeOption(attrId, '');
39455
39456                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
39457                            if (!input && this.$el?.querySelector) {
39458                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
39459                            }
39460                            if (!input && this.$el?.closest) {
39461                                const root = this.$el.closest('[data-product-id]') || this.$el;
39462                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
39463                            }
39464                            if (input) {
39465                                input.checked = false;
39466                            }
39467                        }
39468                    },
39469                    get optionIsEnabled() {
39470                        const itemId = this._getItemId();
39471                        if (!this.$el || !itemId) return true;
39472                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
39473                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
39474                        return !!allowedOptions.find(opt => opt.id == itemId);
39475                    },
39476                    get isSelected() {
39477                        const itemId = this._getItemId();
39478                        if (!this.$el || !itemId) return false;
39479                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
39480                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
39481                    },
39482                    get isSwatchRequired() {
39483                        if (!this.$el) return false;
39484                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
39485                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
39486                    },
39487                    focusedLabel: false,
39488                    activeTooltipItem: false,
39489                    tooltipPositionElement: false,
39490                    setActiveTooltipItem() {
39491                        const itemId = this._getItemId();
39492                        if (!this.$el || !itemId) return;
39493                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
39494                        this.activeTooltipItem = {
39495                            attribute: attrId,
39496                            item: itemId,
39497                            index: 0
39498                        };
39499                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
39500                    },
39501                    unsetActiveTooltipItem() {
39502                        this.activeTooltipItem = false;
39503                    }
39504                },
39505                confProdPreSelect()
39506            );
39507
39508            if (result.optionConfig && result.optionConfig.attributes) {
39509                const attributes = result.optionConfig.attributes;
39510                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
39511                    let source = attributes;
39512                    if (Array.isArray(attributes)) {
39513                        source = {};
39514                        attributes.forEach(attr => {
39515                            if (attr && attr.id) source[attr.id] = attr;
39516                        });
39517                    }
39518                    const values = Object.values(source);
39519                    const wrapper = Object.assign(values, source);
39520                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
39521                        value: true,
39522                        enumerable: false
39523                    });
39524                    result.optionConfig.attributes = wrapper;
39525                }
39526            }
39527
39528            return result;
39529        }
39530
39531        window.addEventListener('alpine:init', () => {
39532            Alpine.data('initConfigurableSwatchOptions_4217', initConfigurableSwatchOptions_4217);
39533        }, {
39534            once: true
39535        });
39536    </script>
39536
39537    
39538    <div x-data="initConfigurableSwatchOptions_4217" x-defer="intersect">
39539        <div class="pagebuilder-home-hidden">
39540                                            
39541                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
39542                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
39543                        <template x-if="showSwatches">
39544                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-4217-163" role="radiogroup" aria-label="Einband">
39545                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
39546                                    <div :data-option-id="item.id" style="display: contents">
39547                                        <div x-id="getSwatchOptionHtmlIdGroup">
39548    <template x-if="optionIsEnabled">
39549        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
39549self="unsetActiveTooltipItem">
39550            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-4217-163">
39551            <div>
39552                <template x-if="isTextSwatch">
39553                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
39554                </template>
39555                <template x-if="!optionIsActive(163, item.id)">
39556                    <div>
39557                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
39558                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
39559                        </svg>
39560                    </div>
39561                </template>
39562            </div>
39563        </label>
39564    </template>
39565</div>                                    </div>
39566                                </template>
39567                            </div>
39568                        </template>
39569                    </div>
39570                </div>
39571                    </div>
39572    </div>
39573            
39574                                                <div class="meta py-4 pagebuilder-home-hidden">
39575                <div x-data="initMarketingShortText_4217()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
39576                    <!-- Marketing short text -->
39577                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
39578                    </div>
39579
39580                    <!-- Short description -->
39581                                                                <div class="short-description">
39582                            Neben Texten und Filmen z&auml;hlen Bilder und Fotografien aktuell zu den beliebtesten Medien im Philosophie- und Ethikunterricht. Der vorliegende Band bietet sowohl die theoretische Begr&uuml;ndung, warum ...                            <a href="https://meiner.de/fmv_de/philosophieren-mit-bildern-und-fotografien" class="underline">mehr</a>
39583                        </div>
39584                                    </div>
39585
39586                <!-- Series  -->
39587                                    <div class="mb-1">
39588                        <span class="sr-only">Reihe:</span>
39589                        <a href="https://meiner.de/fmv_de/programm/reihen/methoden-im-philosophie-und-ethikunterricht">
39590                            <span>Methoden im Philosophie- und Ethikunterricht</span>
39591                        </a>
39592                                                    10                                            </div>
39593                
39594                
39595                                                    <div class="mb-1">
39596                        <span x-data="initEditionText_4217()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
39597                            <!-- Marketing short text -->
39598                            <span class="edition-text" x-html="editionText"></span>&nbsp;2024, 352 Seiten mit 128 Abbildungen.                        </span>
39599                    </div>
39600                
39601                            </div>
39602            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
39603                
39604                <div class="justify-end" x-data="initPriceBox()" @update-prices-4217.window="updatePrice($event.detail);">
39605                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="4217" data-price-box="product-id-4217"><span class="normal-price">
39606    <span x-data x-id="['product\u002Dprice\u002D4217']" class="price-container price-final_price tax weee">
39607            <span class="price-label">Ab</span>
39608                <span class="approx-price">ca. </span>
39609        <span :id="$id('product\u002Dprice\u002D4217')" data-price-amount="19.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">19,99&nbsp;&euro;</span></span>
39610        </span>
39611</span>
39612
39613
39614</div>                </div>
39615
39616                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
39617                                            <div class="open-access-container open-access-container-4217                    flex mt-4 ml-auto sm:mt-0 hidden">
39618                            <div class="text-gray-700">
39619                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
39620                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
39621                                        Kostenlos online lesen                                    </a>
39622                                </button>
39623                            </div>
39624                        </div>
39625                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Philosophieren mit Bildern und Fotografien" aria-label="In den Warenkorb Philosophieren mit Bildern und Fotografien" data-addto="cart">
39626                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
39627  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
39628</svg>
39629                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
39630                                        In den Warenkorb                                    </span>
39631                                </button>
39632                                                                                                                    
39633<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(4217)" aria-label="Zur Wunschliste hinzuf&uuml;gen Philosophieren mit Bildern und Fotografien" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
39634    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
39635  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
39636</svg>
39637</button>
39638                                    </div>
39639            </div>
39640        </div>
39641        
39641<script>
39642            function initMarketingShortText_4217() {
39643                var marketingShortTextConfig = {};
39644                if (typeof window.initConfigurableSwatchOptions_4217 === "function") {
39645                    var fullConfig = window.initConfigurableSwatchOptions_4217().optionConfig
39646                    var marketingShortTextConfig = fullConfig.marketing_short_text;
39647                }
39648                return {
39649                    marketingShortText: '',
39650                    config: marketingShortTextConfig,
39651                    productId: '4217',
39652                    getMarketingShortText(detail) {
39653                        this.marketingShortText = detail.productIndex ?
39654                            this.config[detail.productIndex] :
39655                            null;
39656                    },
39657                    eventListeners: {
39658                        ['@listing-configurable-selection-changed.window'](event) {
39659                            if (this.productId == event.detail.productId) {
39660                                this.getMarketingShortText(event.detail);
39661                            }
39662
39663                        }
39664                    }
39665                }
39666            }
39667
39668            function initEditionText_4217() {
39669                var editionTextConfig = {};
39670                if (typeof window.initConfigurableSwatchOptions_4217 === "function") {
39671                    var fullConfig = window.initConfigurableSwatchOptions_4217().optionConfig
39672                    var editionTextConfig = fullConfig.edition;
39673                }
39674                return {
39675                    editionText: '',
39676                    config: editionTextConfig,
39677                    productId: '4217',
39678                    getEditionText(detail) {
39679                        this.editionText = detail.productIndex ?
39680                            this.config[detail.productIndex] :
39681                            null;
39682                    },
39683                    eventListeners: {
39684                        ['@listing-configurable-selection-changed.window'](event) {
39685                            if (this.productId == event.detail.productId) {
39686                                this.getEditionText(event.detail);
39687                            }
39688
39689                        }
39690                    }
39691                }
39692            }
39693        </script>
39693
39694                    </form>
39695                            
39696    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/4048/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk9461">
39697        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="4048">
39698                                    <a href="https://meiner.de/fmv_de/textarbeit-im-philosophie-und-ethikunterricht" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
39699            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-4048.window="$el.src = $event.detail" alt="Textarbeit im Philosophie- und Ethikunterricht" title="Textarbeit im Philosophie- und Ethikunterricht" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787340873_4.jpg" :style="{
39700                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
39701                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
39702            }">
39703                    </a>
39704        <div class="product-info flex flex-col flex-grow ">
39705                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
39706                                    <div class="mb-2 text-sm text-gray-500 font-medium">
39707                                                                                    <a href="https://meiner.de/fmv_de/person/Jorg-Peters-3207/" class="mb-2">
39708                                    J&ouml;rg Peters                                                                    </a>
39709                                                                    <span>|</span>
39710                                                                                            <a href="https://meiner.de/fmv_de/person/Martina-Peters-3206/" class="mb-2">
39711                                    Martina Peters                                                                            (Hrsg.)
39712                                                                    </a>
39713                                                                                                                                    </div>
39714                                <a class="product-item-link" href="https://meiner.de/fmv_de/textarbeit-im-philosophie-und-ethikunterricht">
39715                    Textarbeit im Philosophie- und Ethikunterricht                </a>
39716                            </div>
39717
39718            <div x-data="initEditionText_4048()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
39719                <!-- Marketing short text -->
39720                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
39721                </div>
39722            </div>
39723
39724                            <div class="py-1 grid  mb-4 ">
39725                    
39726                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":4048,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":4048,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"7545":"1","7757":"1","7758":"1"},"childProductsAlertStatus":{"7545":"0","7757":"0","7758":"0"},"indexMapping":{"163:15":7545,"163:8":7757,"163:9":7758},"availabilityMessages":{"7545":"Lieferbar innerhalb von 3-5 Tagen","7757":"Download sofort  verf\u00fcgbar","7758":"Download sofort  verf\u00fcgbar"},"openAccess":{"4048":{"status":0},"7545":{"status":0},"7757":{"status":0}
39726,"7758":{"status":0}}},"availabilityMessages":{"7545":"Lieferbar innerhalb von 3-5 Tagen","7757":"Download sofort  verf\u00fcgbar","7758":"Download sofort  verf\u00fcgbar"},"openAccess":{"4048":{"status":0},"7545":{"status":0},"7757":{"status":0},"7758":{"status":0}}}'>
39727        <template x-if="containerVisible">
39728                            <!-- Popup Trigger -->
39729                <div>
39730                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
39731                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
39732                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
39733  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
39734<title>bell</title></svg>
39735</span>
39736                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
39737
39738                    <!-- Popup Modal -->
39739                    <template x-if="showModal">
39740                        <template x-teleport=".page-wrapper">
39741                            <div x-cloak class="fixed inset-0 flex items-center justify-center
39742                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
39743                                <div class="relative bg-white rounded-lg shadow-xl
39744                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
39745                                    <div class="p-6">
39746                                        <!-- Subscription Form for Popup -->
39747                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
39748                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
39749                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
39750                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
39751
39752                                            <div class="flex flex-col gap-3">
39753                                                <div class="flex-grow grow">
39754                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
39755                                                        shadow-xs focus:outline-none focus:outline-hidden
39756                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
39757                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
39758                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
39759                                                </div>
39760                                                <input type="hidden" name="product_id" :value="currentProductId">
39761                                                <input type="hidden" name="type" value="email">
39762
39763                                                
39764                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
39765
39766                                                <div class="amxnotif_guest_action">
39767                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
39768                                                        rounded-md focus:outline-none
39769                                                        focus:outline-hidden focu
39769s:ring-2
39770                                                        focus:ring-offset-2 disabled:opacity-50
39771                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
39772                                                        Benachrichtigen                                                    </button>
39773                                                </div>
39774                                            </div>
39775
39776                                                                                            <div class="flex items-start pt-2">
39777                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
39778                                                        text-blue-600 border-gray-300 rounded-sm">
39779                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
39780                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
39781                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
39782                                                </div>
39783                                                                                    </form>
39784                                    </div>
39785
39786                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
39787                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
39788                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
39789  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
39790<title>x</title></svg>
39791                                    </button>
39792                                </div>
39793                            </div>
39794                        </template>
39795                    </template>
39796                </div>
39797                    </template>
39798    </div>
39799
39800<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_4048" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":4048,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"7545":"1","7757":"1","7758":"1"},"childProductsAlertStatus":{"7545":"0","7757":"0","7758":"0"},"indexMapping":"{\u0022163:15\u0022:7545,\u0022163:8\u0022:7757,\u0022163:9\u0022:7758}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":4048,"availabilityMessages":{"7545":"Lieferbar innerhalb von 3-5 Tagen","7757":"Download sofort  verf\u00fcgbar","7758":"Download sofort  verf\u00fcgbar"},"openAccess":{"4048":{"status":0},"7545":{"status":0},"7757":{"status":0},"7758":{"status":0}}}'>
39801    
39802    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
39803        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
39804        <span x-html="optionsLabelText"></span>
39805    </p>
39806</div>                </div>
39807            
39808                                
39808<script>
39809        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
39810            try {
39811                const attributes = (config && config.attributes) ? config.attributes : null;
39812                if (!attributes) return [];
39813                let attr = null;
39814                if (Array.isArray(attributes)) {
39815                    for (let i = 0; i < attributes.length; i++) {
39816                        const a = attributes[i];
39817                        if (a && a.id == attrId) {
39818                            attr = a;
39819                            break;
39820                        }
39821                    }
39822                } else {
39823                    attr = attributes[attrId];
39824                }
39825                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
39826            } catch (e) {
39827                return [];
39828            }
39829        };
39830
39831        function initConfigurableSwatchOptions_4048() {
39832            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["7545"]},{"id":"8","label":"PDF","products":["7757"]},{"id":"9","label":"EPUB","products":["7758"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"7545":{"baseOldPrice":{"amount":23.271027037383},"oldPrice":{"amount":24.9},"basePrice":{"amount":23.271027037383},"finalPrice":{"amount":24.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"7757":{"baseOldPrice":{"amount":17.747662551402},"oldPrice":{"amount":18.99},"basePrice":{"amount":17.747662551402},"finalPrice":{"amount":18.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"7758":{"baseOldPrice":{"amount":17.747662551402},"oldPrice":{"amount":18.99},"basePrice":{"amount":17.747662551402},"finalPrice":{"amount":18.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":17.747662551402},"oldPrice":{"amount":18.99},"basePrice":{"amount":17.747662551402},"finalPrice":{"amount":18.99},"isApproxPrice":null},"productId":"4048","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"7545":{"163":"15"},"7757":{"163":"8"},"7758":{"163":"9"}},"salable":{"163":{"15":["7545"],"8":["7757"],"9":["7758"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"7545":"003654","7757":"003662","7758":"004087"},"output":{"7545":"Kartoniert","7757":"PDF","7758":"EPUB"},"original_name":{"7545":"","7757":"","7758":""},"openaccess_license_link":{"7545":"","7757":"","7758":""},"openaccess_license_name":{"7545":"","7757":"","7758":""},"openaccess_external_link":{"7545":"","7757":"","7758":""},"gpsr_safety_info":{"7545":"","7757":"","7758":""},"description":{"7545":"Wer sich mit den Theorien oder Positionen von Philosophinnen und Philosophen auseinandersetzen will, kommt nicht umhin, ihre Texte entweder als Ganzschriften oder in Ausz\u00fcgen zu lesen, sie zu analysieren, zu interpretieren und Stellung zu ihnen zu beziehen. So ist es kein Wunder, dass philosophische bzw. ethische Texte das zentrale Medium eines jeden Philosophie- bzw. Ethikunterrichts darstellen.<br\/><br\/>Eine Auseinandersetzung mit Texten bedeutet jedoch nicht, dass der Unterricht immer nur einer hermeneutischen W\u00fcste gleichen muss. Dieses Buch will anhand von Texten aus den unterschiedlichen Epochen der Philosophiegeschichte und den verschiedensten Disziplinen zeigen, dass der unterrichtliche Umgang mit Texten abwechslungsreich und kreativ gestaltet werden kann, um den Sch\u00fclerinnen und Sch\u00fclern die Gelegenheit zu geben, tief in die jeweilige philosophische Intention der Autorinnen und Autoren einzudringen. Zu Beginn des vorliegenden Bandes f\u00fchren die Herausgeber zun\u00e4chst in das Thema ein, bevor sich ein Theorie- und ein Praxisteil anschlie\u00dfen. W\u00e4hrend der Theorieteil sich der grunds\u00e4tzlichen Bedeutung von Texten im Philosophie- und Ethikunterricht widmet, wird im Praxisteil anhand konkreter Beispiele demonstriert, welche unterrichtlichen Verfahren des Umgangs mit Texten motivierend und ertragreich sein k\u00f6nnen. Der Band schlie\u00dft mit einer weiterf\u00fchrenden Auswahlbibliographie ab.","7757":"Wer sich mit den Theorien oder Positionen von Philosophinnen und Philosophen auseinandersetzen will, kommt nicht umhin, ihre Texte entweder als Ganzschriften oder in Ausz\u00fcgen zu lesen, sie zu analysieren, zu interpretieren und Stellung zu ihnen zu beziehen. So ist es kein Wunder, dass philosophische bzw. ethische Texte das zentrale Medium eines jeden Philosophie- bzw. Ethikunterrichts darstellen.<br\/><br\/>Eine Auseinandersetzung mit Texten bedeutet jedoch nicht, dass der Unterricht immer nur einer hermeneutischen W\u00fcste gleichen muss. Dieses Buch will anhand von Texten aus den unter
39832schiedlichen Epochen der Philosophiegeschichte und den verschiedensten Disziplinen zeigen, dass der unterrichtliche Umgang mit Texten abwechslungsreich und kreativ gestaltet werden kann, um den Sch\u00fclerinnen und Sch\u00fclern die Gelegenheit zu geben, tief in die jeweilige philosophische Intention der Autorinnen und Autoren einzudringen. Zu Beginn des vorliegenden Bandes f\u00fchren die Herausgeber zun\u00e4chst in das Thema ein, bevor sich ein Theorie- und ein Praxisteil anschlie\u00dfen. W\u00e4hrend der Theorieteil sich der grunds\u00e4tzlichen Bedeutung von Texten im Philosophie- und Ethikunterricht widmet, wird im Praxisteil anhand konkreter Beispiele demonstriert, welche unterrichtlichen Verfahren des Umgangs mit Texten motivierend und ertragreich sein k\u00f6nnen. Der Band schlie\u00dft mit einer weiterf\u00fchrenden Auswahlbibliographie ab.","7758":"Wer sich mit den Theorien oder Positionen von Philosophinnen und Philosophen auseinandersetzen will, kommt nicht umhin, ihre Texte entweder als Ganzschriften oder in Ausz\u00fcgen zu lesen, sie zu analysieren, zu interpretieren und Stellung zu ihnen zu beziehen. So ist es kein Wunder, dass philosophische bzw. ethische Texte das zentrale Medium eines jeden Philosophie- bzw. Ethikunterrichts darstellen.<br\/><br\/>Eine Auseinandersetzung mit Texten bedeutet jedoch nicht, dass der Unterricht immer nur einer hermeneutischen W\u00fcste gleichen muss. Dieses Buch will anhand von Texten aus den unterschiedlichen Epochen der Philosophiegeschichte und den verschiedensten Disziplinen zeigen, dass der unterrichtliche Umgang mit Texten abwechslungsreich und kreativ gestaltet werden kann, um den Sch\u00fclerinnen und Sch\u00fclern die Gelegenheit zu geben, tief in die jeweilige philosophische Intention der Autorinnen und Autoren einzudringen. Zu Beginn des vorliegenden Bandes f\u00fchren die Herausgeber zun\u00e4chst in das Thema ein, bevor sich ein Theorie- und ein Praxisteil anschlie\u00dfen. W\u00e4hrend der Theorieteil sich der grunds\u00e4tzlichen Bedeutung von Texten im Philosophie- und Ethikunterricht widmet, wird im Praxisteil anhand konkreter Beispiele demonstriert, welche unterrichtlichen Verfahren des Umgangs mit Texten motivierend und ertragreich sein k\u00f6nnen. Der Band schlie\u00dft mit einer weiterf\u00fchrenden Auswahlbibliographie ab."},"doi":{"7545":"","7757":"10.28937\/978-3-7873-3662-3","7758":""},"isbn":{"7545":"978-3-7873-3654-8","7757":"978-3-7873-3662-3","7758":"978-3-7873-4087-3"},"marketing_short_text":{"7545":"","7757":"","7758":""},"recension_text":{"7545":"","7757":"","7758":""},"language":{"7545":"","7757":"","7758":""},"cover":{"7545":"Kartoniert","7757":"","7758":""},"pages":{"7545":"317 Seiten","7757":"317 Seiten","7758":"317 Seiten"},"edition":{"7545":"","7757":"Unver\u00e4nderte eBook-Ausgabe der 1. Auflage von 2023","7758":"Unver\u00e4nderte eBook-Ausgabe der 1. Auflage von 2023"},"pod":{"7545":"Nein","7757":"Nein","7758":"Nein"},"copyright_year":{"7545":"","7757":"","7758":""},"vlb_tix_link":{"7545":"https:\/\/neu.vlbtix.de\/products\/9783787336548?type=gtin","7757":"","7758":""},"defaultValues":{"163":"15"}};
39833            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
39834
39835            if (typeof window.amxnotif_wrap_attributes === 'function') {
39836                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
39837                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
39838            }
39839
39840            const configurableOptionsComponent = initConfigurableOptions(
39841                '4048',
39842                config
39843            );
39844            const swatchOptionsComponent = initSwatchOptions(
39845                swatchConfig
39846            );
39847
39848            // DWS - Configurable product preselect start
39849            const confProdPreSelect = () => {
39850                return {
39851                    preselectQuerystringItems() {
39852                        var data = {"id":"7545","output":"15"};
39853                        const urlQueryParams = new URLSearchParams(window.location.search);
39854
39855                                                this.$nextTick(() => {
39856                            setTimeout(() => {
39857                                const rootEl = this.$root || this.$el;
39858                                if (!rootEl) return;
39859
39860                                const applySelection = (attrCode, attrValue) => {
39861                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
39862
39863                                    const attributes = Object.values(this.optionConfig.attributes || {});
39864                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
39865
39866                                    if (targetAttr) {
39867                                        const attrId = String(targetAttr.id);
39868                                        const optionVal = String(attrValue);
39869
39870                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
39871
39872                                        if (inputEl) {
39873                                                                                        inputEl.click();
39874                                            inputEl.dispatchEvent(new Event('change', {
39875                                                bubbles: true
39876                                            }));
39877                                        } else {
39878                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
39879                                            if (selectEl) {
39880                                                selectEl.value = optionVal;
39881                                                selectEl.dispatchEvent(new Event('change', {
39882                                                    bubbles: true
39883                                                }));
39884                                            }
39885                                        }
39886
39887                                                                                this.changeOption(attrId, optionVal, false);
39888                                    }
39889                                };
39890
39891                                                                if (data && typeof data === 'object') {
39892                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
39893                                }
39894
39895                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
39896                                    if (attribute && attribute.code) {
39897                                        let optionValue = urlQueryParams.get(attribute.code);
39898                                        if (optionValue) {
39899                                            let optionId = false;
39900                                            const attributes = Object.values(this.optionConfig.attributes || {});
39901                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
39902
39903                                            let found = false;
39904                                            Object.values(targetAttr.options).map(option => {
39905                                                if (found === false && option.label === optionValue) {
39906                                                    optionId = option.id;
39907                                                    found = true;
39908                                                }
39909                                            });
39910
39911                                            const attrId = String(targetAttr.id);
39912                                            let optionVal = String(optionValue);
39913                                            if (found) {
39914                                                optionVal = String(optionId);
39915                                            }
39916
39917                                            applySelection(attribute.code, optionVal);
39918                                        }
39919                                    }
39920                                });
39921                            }, 100);
39922                        });
39923                    }
39924                }
39925            };
39926            // DWS - Configurable product preselect end
39927
39928            const result = Object.assign(
39929                configurableOptionsComponent,
39930                swatchOptionsComponent, {
39931                    productId: '4048',
39932                    productIndex: 0,
39933                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
39934                    showSwatches: false,
39935                    precalcOptions: {},
39936                    originalInit: configurableOptionsComponent.init,
39937                    init() {
39938                        try {
39939                            this.precalcOptions = {};
39940                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
39941                            this.preselectQuerystringItems();
39942                            if (Array.isArray(attrSource)) {
39943                                attrSource.forEach(attr => {
39944                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
39945                                });
39946                            } else if (attrSource && typeof attrSource === 'object') {
39947                                Object.keys(attrSource).forEach(id => {
39948                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
39949                                });
39950                            }
39951                        } catch (e) {
39952                            console.error('Pre-calc error:', e);
39953                        }
39954
39955                        if (typeof this.originalInit === 'function') {
39956                            this.originalInit();
39957                        }
39958
39959                        try {
39960                            this.initShowSwatchesIntersect();
39961                        } catch (e) {
39962                            console.error('intersect error:', e);
39963                        }
39964                    },
39965
39966                    updateGallery() {
39967                        if (!this.productIndex) return;
39968
39969                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
39970                                method: 'GET',
39971                                headers: {
39972                                    'Content-Type': 'application/json',
39973                                    'X-Requested-With': 'XMLHttpRequest'
39974                                }
39975                            })
39976                            .then(response => response.json())
39977                            .then(data => {
39978                                if (data && data.medium) {
39979                                    window.dispatchEvent(new CustomEvent("update-gallery-4048", {
39980                                        detail: data.medium
39981                                    }));
39982                                }
39983                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
39984                    },
39985
39986
39987                    initShowSwatchesIntersect() {
39988                        const observer = new IntersectionObserver(entries => {
39989                            if (entries[0].isIntersecting) {
39990                                this.showSwatches = true;
39991                                observer.disconnect();
39992                            }
39993                        }, {
39994                            rootMargin: '512px'
39995                        });
39996                        observer.observe(this.$el);
39997                    },
39998                    getOptions(attrId) {
39999                        return this.precalcOptions[attrId] || [];
40000                    },
40001                    getOptionsByAttrId() {
40002                        return this.getOptions(this.$el.dataset.attributeId);
40003                    },
40004                    _getItemId() {
40005                        if (this.item && this.item.id) return this.item.id;
40006                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
40007                    },
40008                    getSwatchOptionHtmlId() {
40009                        const itemId = this._getItemId();
40010                        return itemId ? this.$id(`attribute-option-4048-${itemId}`) : '';
40011                    },
40012                    getSwatchOptionHtmlIdGroup() {
40013                        const itemId = this._getItemId();
40014                        return itemId ? [`attribute-option-4048-${itemId}`] : [];
40015                    },
40016                    getAttributeSwatchData(attributeId) {
40017                        const data = Object.assign({}, this.swatchConfig[attributeId]);
40018                        if (data['additional_data']) {
40019                            try {
40020                                data['details'] = JSON.parse(data['additional_data']);
40021                            } catch (e) {
40022                                data['details'] = {};
40023                            }
40024                        }
40025                        return data;
40026                    },
40027                    getSwatchType(attributeId, optionId) {
40028                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
40029                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
40030                        }
40031                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
40032                            this.swatchConfig[attributeId].details.swatch_input_type :
40033                            "empty";
40034                        if (type === 'visual') {
40035                            const config = this.swatchConfig[attributeId];
40036                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
40037                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
40038                            }
40039                            // Fallback to first option type
40040                            for (const oId in config) {
40041                                if (config[oId] && typeof config[oId].type !== 'undefined') {
40042                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
40043                                }
40044                            }
40045                        }
40046                        return type;
40047                    },
40048                    mapSwatchTypeNumberToTypeCode(type) {
40049                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
40050                    },
40051                    isTextSwatch() {
40052                        const itemId = this._getItemId();
40053                        if (!this.$el || !itemId) return false;
40054                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
40055                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
40056                    },
40057
40058                    getSwatchText() {
40059                        const itemId = this._getItemId();
40060                        if (this.item) return this.item.label || '';
40061                        if (!this.$el || !itemId) return '';
40062                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
40063                        const options = attrId ? this.getOptions(attrId) : [];
40064                        const opt = options.find(o => o.id == itemId);
40065                        return opt ? opt.label : '';
40066                    },
40067                    getSwatchBackgroundStyle() {
40068                        const itemId = this._getItemId();
40069                        if (!this.$el || !itemId) return '';
40070                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
40071                        if (!attrId) return '';
40072                        const type = this.getSwatchType(attrId, itemId);
40073                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
40074                            this.swatchConfig[attrId][itemId] :
40075                            null;
40076                        if (!swatchData) return '';
40077                        if (type === "color") return 'background-color:' + swatchData.value;
40078                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
40079                        return '';
40080                    },
40081                    swatchOptionClasses() {
40082                        const itemId = this._getItemId();
40083                        if (!this.$el || !itemId) return {};
40084                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
40085                        return {
40086                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
40087                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
40088                            'w-6 h-6': !this.isTextSwatch()
40089                        }
40090                    },
40091
40092                    onFocusSwatchItem() {
40093                        const itemId = this._getItemId();
40094                        if (itemId) this.focusedLabel = itemId;
40095                    },
40096                    onChangeOption() {
40097                        const itemId = this._getItemId();
40098                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
40099                        if (attrId && itemId) this.changeOption(attrId, itemId);
40100                    },
40101                    changeOption(attributeId, value) {
40102                        if (value === '') {
40103                            return;
40104                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
40105                        } else {
40106                            this.selectedValues[attributeId] = value;
40107                        }
40108
40109                        this.findSimpleIndex();
40110                        this.findAllowedAttributeOptions();
40111                        this.updatePrices();
40112                        this.updateGallery();
40113
40114                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
40115                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
40116
40117                        const eventDetail = {
40118                            productId: this.productId,
40119                            optionId: attributeId,
40120                            value: value,
40121                            productIndex: this.productIndex || 0,
40122                            selectedValues: this.selectedValues,
40123                            candidates: candidates,
40124                            sourceElement: this.$el
40125                        };
40126
40127                        // Dispatch for Amasty
40128                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
40129                            detail: eventDetail
40130                        }));
40131
40132                        // Dispatch for Hyva listing
40133                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
40134                            detail: eventDetail
40135                        }));
40136                    },
40137
40138
40139                    clearOptionIfActive() {
40140                        const itemId = this._getItemId();
40141                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
40142                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
40143                            this.changeOption(attrId, '');
40144
40145                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
40146                            if (!input && this.$el?.querySelector) {
40147                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
40148                            }
40149                            if (!input && this.$el?.closest) {
40150                                const root = this.$el.closest('[data-product-id]') || this.$el;
40151                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
40152                            }
40153                            if (input) {
40154                                input.checked = false;
40155                            }
40156                        }
40157                    },
40158                    get optionIsEnabled() {
40159                        const itemId = this._getItemId();
40160                        if (!this.$el || !itemId) return true;
40161                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
40162                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
40163                        return !!allowedOptions.find(opt => opt.id == itemId);
40164                    },
40165                    get isSelected() {
40166                        const itemId = this._getItemId();
40167                        if (!this.$el || !itemId) return false;
40168                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
40169                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
40170                    },
40171                    get isSwatchRequired() {
40172                        if (!this.$el) return false;
40173                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
40174                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
40175                    },
40176                    focusedLabel: false,
40177                    activeTooltipItem: false,
40178                    tooltipPositionElement: false,
40179                    setActiveTooltipItem() {
40180                        const itemId = this._getItemId();
40181                        if (!this.$el || !itemId) return;
40182                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
40183                        this.activeTooltipItem = {
40184                            attribute: attrId,
40185                            item: itemId,
40186                            index: 0
40187                        };
40188                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
40189                    },
40190                    unsetActiveTooltipItem() {
40191                        this.activeTooltipItem = false;
40192                    }
40193                },
40194                confProdPreSelect()
40195            );
40196
40197            if (result.optionConfig && result.optionConfig.attributes) {
40198                const attributes = result.optionConfig.attributes;
40199                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
40200                    let source = attributes;
40201                    if (Array.isArray(attributes)) {
40202                        source = {};
40203                        attributes.forEach(attr => {
40204                            if (attr && attr.id) source[attr.id] = attr;
40205                        });
40206                    }
40207                    const values = Object.values(source);
40208                    const wrapper = Object.assign(values, source);
40209                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
40210                        value: true,
40211                        enumerable: false
40212                    });
40213                    result.optionConfig.attributes = wrapper;
40214                }
40215            }
40216
40217            return result;
40218        }
40219
40220        window.addEventListener('alpine:init', () => {
40221            Alpine.data('initConfigurableSwatchOptions_4048', initConfigurableSwatchOptions_4048);
40222        }, {
40223            once: true
40224        });
40225    </script>
40225
40226    
40227    <div x-data="initConfigurableSwatchOptions_4048" x-defer="intersect">
40228        <div class="pagebuilder-home-hidden">
40229                                            
40230                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
40231                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
40232                        <template x-if="showSwatches">
40233                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-4048-163" role="radiogroup" aria-label="Einband">
40234                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
40235                                    <div :data-option-id="item.id" style="display: contents">
40236                                        <div x-id="getSwatchOptionHtmlIdGroup">
40237    <template x-if="optionIsEnabled">
40238        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
40238self="unsetActiveTooltipItem">
40239            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-4048-163">
40240            <div>
40241                <template x-if="isTextSwatch">
40242                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
40243                </template>
40244                <template x-if="!optionIsActive(163, item.id)">
40245                    <div>
40246                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
40247                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
40248                        </svg>
40249                    </div>
40250                </template>
40251            </div>
40252        </label>
40253    </template>
40254</div>                                    </div>
40255                                </template>
40256                            </div>
40257                        </template>
40258                    </div>
40259                </div>
40260                    </div>
40261    </div>
40262            
40263                                                <div class="meta py-4 pagebuilder-home-hidden">
40264                <div x-data="initMarketingShortText_4048()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
40265                    <!-- Marketing short text -->
40266                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
40267                    </div>
40268
40269                    <!-- Short description -->
40270                                                                <div class="short-description">
40271                            Wer sich mit den Theorien oder Positionen von Philosophinnen und Philosophen auseinandersetzen will, kommt nicht umhin, ihre Texte entweder als Ganzschriften oder in Ausz&uuml;gen zu lesen, sie zu ...                            <a href="https://meiner.de/fmv_de/textarbeit-im-philosophie-und-ethikunterricht" class="underline">mehr</a>
40272                        </div>
40273                                    </div>
40274
40275                <!-- Series  -->
40276                                    <div class="mb-1">
40277                        <span class="sr-only">Reihe:</span>
40278                        <a href="https://meiner.de/fmv_de/programm/reihen/methoden-im-philosophie-und-ethikunterricht">
40279                            <span>Methoden im Philosophie- und Ethikunterricht</span>
40280                        </a>
40281                                                    5                                            </div>
40282                
40283                
40284                                                    <div class="mb-1">
40285                        <span x-data="initEditionText_4048()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
40286                            <!-- Marketing short text -->
40287                            <span class="edition-text" x-html="editionText"></span>&nbsp;2023, 317 Seiten                        </span>
40288                    </div>
40289                
40290                            </div>
40291            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
40292                
40293                <div class="justify-end" x-data="initPriceBox()" @update-prices-4048.window="updatePrice($event.detail);">
40294                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="4048" data-price-box="product-id-4048"><span class="normal-price">
40295    <span x-data x-id="['product\u002Dprice\u002D4048']" class="price-container price-final_price tax weee">
40296            <span class="price-label">Ab</span>
40297                <span class="approx-price">ca. </span>
40298        <span :id="$id('product\u002Dprice\u002D4048')" data-price-amount="18.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">18,99&nbsp;&euro;</span></span>
40299        </span>
40300</span>
40301
40302
40303</div>                </div>
40304
40305                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
40306                                            <div class="open-access-container open-access-container-4048                    flex mt-4 ml-auto sm:mt-0 hidden">
40307                            <div class="text-gray-700">
40308                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
40309                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
40310                                        Kostenlos online lesen                                    </a>
40311                                </button>
40312                            </div>
40313                        </div>
40314                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Textarbeit im Philosophie- und Ethikunterricht" aria-label="In den Warenkorb Textarbeit im Philosophie- und Ethikunterricht" data-addto="cart">
40315                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
40316  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
40317</svg>
40318                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
40319                                        In den Warenkorb                                    </span>
40320                                </button>
40321                                                                                                                    
40322<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(4048)" aria-label="Zur Wunschliste hinzuf&uuml;gen Textarbeit im Philosophie- und Ethikunterricht" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
40323    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
40324  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
40325</svg>
40326</button>
40327                                    </div>
40328            </div>
40329        </div>
40330        
40330<script>
40331            function initMarketingShortText_4048() {
40332                var marketingShortTextConfig = {};
40333                if (typeof window.initConfigurableSwatchOptions_4048 === "function") {
40334                    var fullConfig = window.initConfigurableSwatchOptions_4048().optionConfig
40335                    var marketingShortTextConfig = fullConfig.marketing_short_text;
40336                }
40337                return {
40338                    marketingShortText: '',
40339                    config: marketingShortTextConfig,
40340                    productId: '4048',
40341                    getMarketingShortText(detail) {
40342                        this.marketingShortText = detail.productIndex ?
40343                            this.config[detail.productIndex] :
40344                            null;
40345                    },
40346                    eventListeners: {
40347                        ['@listing-configurable-selection-changed.window'](event) {
40348                            if (this.productId == event.detail.productId) {
40349                                this.getMarketingShortText(event.detail);
40350                            }
40351
40352                        }
40353                    }
40354                }
40355            }
40356
40357            function initEditionText_4048() {
40358                var editionTextConfig = {};
40359                if (typeof window.initConfigurableSwatchOptions_4048 === "function") {
40360                    var fullConfig = window.initConfigurableSwatchOptions_4048().optionConfig
40361                    var editionTextConfig = fullConfig.edition;
40362                }
40363                return {
40364                    editionText: '',
40365                    config: editionTextConfig,
40366                    productId: '4048',
40367                    getEditionText(detail) {
40368                        this.editionText = detail.productIndex ?
40369                            this.config[detail.productIndex] :
40370                            null;
40371                    },
40372                    eventListeners: {
40373                        ['@listing-configurable-selection-changed.window'](event) {
40374                            if (this.productId == event.detail.productId) {
40375                                this.getEditionText(event.detail);
40376                            }
40377
40378                        }
40379                    }
40380                }
40381            }
40382        </script>
40382
40383                    </form>
40384                            
40385    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/3991/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk9424">
40386        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="3991">
40387                                    <a href="https://meiner.de/fmv_de/philosophieren-mit-spielen" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
40388            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-3991.window="$el.src = $event.detail" alt="Philosophieren mit Spielen" title="Philosophieren mit Spielen" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787340866_4.jpg" :style="{
40389                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
40390                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
40391            }">
40392                    </a>
40393        <div class="product-info flex flex-col flex-grow ">
40394                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
40395                                    <div class="mb-2 text-sm text-gray-500 font-medium">
40396                                                                                    <a href="https://meiner.de/fmv_de/person/Jorg-Peters-3207/" class="mb-2">
40397                                    J&ouml;rg Peters                                                                    </a>
40398                                                                    <span>|</span>
40399                                                                                            <a href="https://meiner.de/fmv_de/person/Martina-Peters-3206/" class="mb-2">
40400                                    Martina Peters                                                                            (Hrsg.)
40401                                                                    </a>
40402                                                                                                                                    </div>
40403                                <a class="product-item-link" href="https://meiner.de/fmv_de/philosophieren-mit-spielen">
40404                    Philosophieren mit Spielen                </a>
40405                            </div>
40406
40407            <div x-data="initEditionText_3991()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
40408                <!-- Marketing short text -->
40409                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
40410                </div>
40411            </div>
40412
40413                            <div class="py-1 grid  mb-4 ">
40414                    
40415                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":3991,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":3991,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"3946":"1","3953":"1","3954":"1"},"childProductsAlertStatus":{"3946":"0","3953":"0","3954":"0"},"indexMapping":{"163:15":3946,"163:8":3953,"163:9":3954},"availabilityMessages":{"3946":"Lieferbar innerhalb von 3-5 Tagen","3953":"Download sofort  verf\u00fcgbar","3954":"Download sofort  verf\u00fcgbar"},"openAccess":{"3991":{"status":0},"3946":{"status":0},"3953":{"status":0},"3954":{"status":0}}},"availabilityMessages":{"3946":"Lieferbar innerhalb von 3-5 Tagen","3953":"Download sofort  verf\u00fcgbar","3954":"Download sofort  verf\u00fcgbar"},"openAccess":{"3991":{"status":0},"3946":{"status":0},"3953":{"status":0},"3954":{"status":0}}}'>
40416        <template x-if="containerVisible">
40417                            <!-- Popup Trigger -->
40418                <div>
40419                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
40420                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
40421                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
40422  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
40423<title>bell</title></svg>
40424</span>
40425                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
40426
40427                    <!-- Popup Modal -->
40428                    <template x-if="showModal">
40429                        <template x-teleport=".page-wrapper">
40430                            <div x-cloak class="fixed inset-0 flex items-center justify-center
40431                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
40432                                <div class="relative bg-white rounded-lg shadow-xl
40433                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
40434                                    <div class="p-6">
40435                                        <!-- Subscription Form for Popup -->
40436                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
40437                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
40438                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
40439                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
40440
40441                                            <div class="flex flex-col gap-3">
40442                                                <div class="flex-grow grow">
40443                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
40444                                                        shadow-xs focus:outline-none focus:outline-hidden
40445                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
40446                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
40447                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
40448                                                </div>
40449                                                <input type="hidden" name="product_id" :value="currentProductId">
40450                                                <input type="hidden" name="type" value="email">
40451
40452                                                
40453                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
40454
40455                                                <div class="amxnotif_guest_action">
40456                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
40457                                                        rounded-md focus:outline-none
40458                                                        focus:outline-hidden focus:ring-2
40459                                                        focus:ring-offset-2 disabled:opacity-50
40460                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
40461                                                        Benachrichtigen                                                    </button>
40462                                                </div>
40463                                            </div>
40464
40465                                                                                            <div class="flex items-start pt-2">
40466                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
40467                                                        text-blue-600 border-gray-300 rounded-sm">
40468                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
40469                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
40470                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
40471                                                </div>
40472                                                                                    </form>
40473                                    </div>
40474
40475                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
40476                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
40477                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
40478  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
40479<title>x</title></svg>
40480                                    </button>
40481                                </div>
40482                            </div>
40483                        </template>
40484                    </template>
40485                </div>
40486                    </template>
40487    </div>
40488
40489<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_3991" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":3991,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"3946":"1","3953":"1","3954":"1"},"childProductsAlertStatus":{"3946":"0","3953":"0","3954":"0"},"indexMapping":"{\u0022163:15\u0022:3946,\u0022163:8\u0022:3953,\u0022163:9\u0022:3954}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":3991,"availabilityMessages":{"3946":"Lieferbar innerhalb von 3-5 Tagen","3953":"Download sofort  verf\u00fcgbar","3954":"Download sofort  verf\u00fcgbar"},"openAccess":{"3991":{"status":0},"3946":{"status":0},"3953":{"status":0},"3954":{"status":0}}}'>
40490    
40491    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
40492        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
40493        <span x-html="optionsLabelText"></span>
40494    </p>
40495</div>                </div>
40496            
40497                                
40497<script>
40498        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
40499            try {
40500                const attributes = (config && config.attributes) ? config.attributes : null;
40501                if (!attributes) return [];
40502                let attr = null;
40503                if (Array.isArray(attributes)) {
40504                    for (let i = 0; i < attributes.length; i++) {
40505                        const a = attributes[i];
40506                        if (a && a.id == attrId) {
40507                            attr = a;
40508                            break;
40509                        }
40510                    }
40511                } else {
40512                    attr = attributes[attrId];
40513                }
40514                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
40515            } catch (e) {
40516                return [];
40517            }
40518        };
40519
40520        function initConfigurableSwatchOptions_3991() {
40521            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["3946"]},{"id":"8","label":"PDF","products":["3953"]},{"id":"9","label":"EPUB","products":["3954"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"3946":{"baseOldPrice":{"amount":21.401868158879},"oldPrice":{"amount":22.9},"basePrice":{"amount":21.401868158879},"finalPrice":{"amount":22.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"3953":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":14.009344794393},"finalPrice":{"amount":14.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"3954":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":14.009344794393},"finalPrice":{"amount":14.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":14.009344794393},"oldPrice":{"amount":14.99},"basePrice":{"amount":14.009344794393},"finalPrice":{"amount":14.99},"isApproxPrice":null},"productId":"3991","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"3946":{"163":"15"},"3953":{"163":"8"},"3954":{"163":"9"}},"salable":{"163":{"15":["3946"],"8":["3953"],"9":["3954"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"3946":"003655","3953":"003663","3954":"004086"},"output":{"3946":"Kartoniert","3953":"PDF","3954":"EPUB"},"original_name":{"3946":"","3953":"","3954":""},"openaccess_license_link":{"3946":"","3953":"","3954":""},"openaccess_license_name":{"3946":"","3953":"","3954":""},"openaccess_external_link":{"3946":"","3953":"","3954":""},"gpsr_safety_info":{"3946":"","3953":"","3954":""},"description":{"3946":"Gesellschaftsspiele haben seit Beginn der Coronakrise wieder Hochkonjunktur. Dabei bieten sie nicht nur abwechslungsreiche Unterhaltung f\u00fcr private Spieleabende, sondern sind dank ihrer vielf\u00e4ltigen Thematiken und unterschiedlichen Spielsysteme auch als Methode f\u00fcr den Philosophie- und Ethikunterricht geeignet, um Sch\u00fclerinnen und Sch\u00fclern einen alternativen Zugang zu fachlichen Inhalten zu erm\u00f6glichen.<br\/><br\/>Wenn Menschen nicht aus professionellen oder semi-professionellen Gr\u00fcnden spielen, so handeln sie i. d. R. aufgrund einer intrinsischen Motivation. Ihr Ziel besteht dann nicht in der Verfolgung irgendeines Zweckes, sondern darin, ein Spiel um seiner selbst willen zu spielen. Die dem Spielen zumeist entgegengebrachte positive Einstellung l\u00e4sst sich f\u00fcr den Philosophie- bzw. Ethikunterricht nutzen, auch wenn durch den unterrichtlichen Einsatz von Spielen ein den Sch\u00fclerinnen und Sch\u00fclern bewusstes Stundenziel verfolgt wird. Durch das Spielen kann der Zugang zu philosophischen Fragestellungen erleichtert werden. Dar\u00fcber hinaus k\u00f6nnen philosophische Positionen oder Theorien veranschaulicht und Wege ins philosophische Denken er\u00f6ffnet werden. Der Band beginnt mit einigen in die Thematik einf\u00fchrenden Bemerkungen der Herausgeber, auf die sowohl ein Theorie- als auch ein Praxisteil folgt. Im Theorieteil findet sich neben einem historischen Abriss \u00fcber die didaktische Bedeutung des Spiels auch ein \u00dcberblick \u00fcber die Chancen und Grenzen des Einsatzes von Spielen im Philosophie- und Ethikunterricht. Im Praxisteil werden zahlreiche Spiele vorgestellt, die sich besonders f\u00fcr den Einsatz in den beiden Sekundarstufen eignen. Zus\u00e4tzlich bietet dieser Teil die entsprechenden Spielvorlagen zur unterrichtlichen Umsetzung. Der Band schlie\u00dft mit einer weiterf\u00fchrenden Auswahlbibliographie ab.","3953":"Gesellschaftsspiele haben seit Beginn der Coronakrise wieder Hochkonjunktur. Dabei bieten sie nicht nur abwechslungsreiche Unterhaltung f\u00fcr private Spieleabende, sondern sind dank ihrer vielf\u00e4ltigen Thematiken und unter
40521schiedlichen Spielsysteme auch als Methode f\u00fcr den Philosophie- und Ethikunterricht geeignet, um Sch\u00fclerinnen und Sch\u00fclern einen alternativen Zugang zu fachlichen Inhalten zu erm\u00f6glichen.<br\/><br\/>Wenn Menschen nicht aus professionellen oder semi-professionellen Gr\u00fcnden spielen, so handeln sie i. d. R. aufgrund einer intrinsischen Motivation. Ihr Ziel besteht dann nicht in der Verfolgung irgendeines Zweckes, sondern darin, ein Spiel um seiner selbst willen zu spielen. Die dem Spielen zumeist entgegengebrachte positive Einstellung l\u00e4sst sich f\u00fcr den Philosophie- bzw. Ethikunterricht nutzen, auch wenn durch den unterrichtlichen Einsatz von Spielen ein den Sch\u00fclerinnen und Sch\u00fclern bewusstes Stundenziel verfolgt wird. Durch das Spielen kann der Zugang zu philosophischen Fragestellungen erleichtert werden. Dar\u00fcber hinaus k\u00f6nnen philosophische Positionen oder Theorien veranschaulicht und Wege ins philosophische Denken er\u00f6ffnet werden. Der Band beginnt mit einigen in die Thematik einf\u00fchrenden Bemerkungen der Herausgeber, auf die sowohl ein Theorie- als auch ein Praxisteil folgt. Im Theorieteil findet sich neben einem historischen Abriss \u00fcber die didaktische Bedeutung des Spiels auch ein \u00dcberblick \u00fcber die Chancen und Grenzen des Einsatzes von Spielen im Philosophie- und Ethikunterricht. Im Praxisteil werden zahlreiche Spiele vorgestellt, die sich besonders f\u00fcr den Einsatz in den beiden Sekundarstufen eignen. Zus\u00e4tzlich bietet dieser Teil die entsprechenden Spielvorlagen zur unterrichtlichen Umsetzung. Der Band schlie\u00dft mit einer weiterf\u00fchrenden Auswahlbibliographie ab.","3954":"Gesellschaftsspiele haben seit Beginn der Coronakrise wieder Hochkonjunktur. Dabei bieten sie nicht nur abwechslungsreiche Unterhaltung f\u00fcr private Spieleabende, sondern sind dank ihrer vielf\u00e4ltigen Thematiken und unterschiedlichen Spielsysteme auch als Methode f\u00fcr den Philosophie- und Ethikunterricht geeignet, um Sch\u00fclerinnen und Sch\u00fclern einen alternativen Zugang zu fachlichen Inhalten zu erm\u00f6glichen.<br\/><br\/>Wenn Menschen nicht aus professionellen oder semi-professionellen Gr\u00fcnden spielen, so handeln sie i. d. R. aufgrund einer intrinsischen Motivation. Ihr Ziel besteht dann nicht in der Verfolgung irgendeines Zweckes, sondern darin, ein Spiel um seiner selbst willen zu spielen. Die dem Spielen zumeist entgegengebrachte positive Einstellung l\u00e4sst sich f\u00fcr den Philosophie- bzw. Ethikunterricht nutzen, auch wenn durch den unterrichtlichen Einsatz von Spielen ein den Sch\u00fclerinnen und Sch\u00fclern bewusstes Stundenziel verfolgt wird. Durch das Spielen kann der Zugang zu philosophischen Fragestellungen erleichtert werden. Dar\u00fcber hinaus k\u00f6nnen philosophische Positionen oder Theorien veranschaulicht und Wege ins philosophische Denken er\u00f6ffnet werden. Der Band beginnt mit einigen in die Thematik einf\u00fchrenden Bemerkungen der Herausgeber, auf die sowohl ein Theorie- als auch ein Praxisteil folgt. Im Theorieteil findet sich neben einem historischen Abriss \u00fcber die didaktische Bedeutung des Spiels auch ein \u00dcberblick \u00fcber die Chancen und Grenzen des Einsatzes von Spielen im Philosophie- und Ethikunterricht. Im Praxisteil werden zahlreiche Spiele vorgestellt, die sich besonders f\u00fcr den Einsatz in den beiden Sekundarstufen eignen. Zus\u00e4tzlich bietet dieser Teil die entsprechenden Spielvorlagen zur unterrichtlichen Umsetzung. Der Band schlie\u00dft mit einer weiterf\u00fchrenden Auswahlbibliographie ab."},"doi":{"3946":"","3953":"10.28937\/978-3-7873-3663-0","3954":"10.28937\/978-3-7873-4086-6"},"isbn":{"3946":"978-3-7873-3655-5","3953":"978-3-7873-3663-0","3954":"978-3-7873-4086-6"},"marketing_short_text":{"3946":"","3953":"Mit zahlreichen Unterrichtsvorlagen","3954":"Mit zahlreichen Unterrichtsvorlagen"},"recension_text":{"3946":"","3953":"","3954":""},"language":{"3946":"","3953":"","3954":""},"cover":{"3946":"Kartoniert","3953":"","3954":""},"pages":{"3946":"218 Seiten","3953":"218 Seiten","3954":"218 Seiten"},"edition":{"3946":"","3953":"Unver\u00e4nderte eBook-Ausgabe der 1. Auflage von 2021","3954":"Unver\u00e4nderte EPUB-Ausgabe der 1. Auflage von 2021"},"pod":{"3946":"Nein","3953":"Nein","3954":"Nein"},"copyright_year":{"3946":"","3953":"","3954":""},"vlb_tix_link":{"3946":"https:\/\/neu.vlbtix.de\/products\/978378733
405216555?type=gtin","3953":"","3954":""},"defaultValues":{"163":"15"}};
40522            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"9":{"type":"0","value":"EPUB","label":"EPUB"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
40523
40524            if (typeof window.amxnotif_wrap_attributes === 'function') {
40525                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
40526                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
40527            }
40528
40529            const configurableOptionsComponent = initConfigurableOptions(
40530                '3991',
40531                config
40532            );
40533            const swatchOptionsComponent = initSwatchOptions(
40534                swatchConfig
40535            );
40536
40537            // DWS - Configurable product preselect start
40538            const confProdPreSelect = () => {
40539                return {
40540                    preselectQuerystringItems() {
40541                        var data = {"id":"3946","output":"15"};
40542                        const urlQueryParams = new URLSearchParams(window.location.search);
40543
40544                                                this.$nextTick(() => {
40545                            setTimeout(() => {
40546                                const rootEl = this.$root || this.$el;
40547                                if (!rootEl) return;
40548
40549                                const applySelection = (attrCode, attrValue) => {
40550                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
40551
40552                                    const attributes = Object.values(this.optionConfig.attributes || {});
40553                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
40554
40555                                    if (targetAttr) {
40556                                        const attrId = String(targetAttr.id);
40557                                        const optionVal = String(attrValue);
40558
40559                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
40560
40561                                        if (inputEl) {
40562                                                                                        inputEl.click();
40563                                            inputEl.dispatchEvent(new Event('change', {
40564                                                bubbles: true
40565                                            }));
40566                                        } else {
40567                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
40568                                            if (selectEl) {
40569                                                selectEl.value = optionVal;
40570                                                selectEl.dispatchEvent(new Event('change', {
40571                                                    bubbles: true
40572                                                }));
40573                                            }
40574                                        }
40575
40576                                                                                this.changeOption(attrId, optionVal, false);
40577                                    }
40578                                };
40579
40580                                                                if (data && typeof data === 'object') {
40581                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
40582                                }
40583
40584                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
40585                                    if (attribute && attribute.code) {
40586                                        let optionValue = urlQueryParams.get(attribute.code);
40587                                        if (optionValue) {
40588                                            let optionId = false;
40589                                            const attributes = Object.values(this.optionConfig.attributes || {});
40590                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
40591
40592                                            let found = false;
40593                                            Object.values(targetAttr.options).map(option => {
40594                                                if (found === false && option.label === optionValue) {
40595                                                    optionId = option.id;
40596                                                    found = true;
40597                                                }
40598                                            });
40599
40600                                            const attrId = String(targetAttr.id);
40601                                            let optionVal = String(optionValue);
40602                                            if (found) {
40603                                                optionVal = String(optionId);
40604                                            }
40605
40606                                            applySelection(attribute.code, optionVal);
40607                                        }
40608                                    }
40609                                });
40610                            }, 100);
40611                        });
40612                    }
40613                }
40614            };
40615            // DWS - Configurable product preselect end
40616
40617            const result = Object.assign(
40618                configurableOptionsComponent,
40619                swatchOptionsComponent, {
40620                    productId: '3991',
40621                    productIndex: 0,
40622                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
40623                    showSwatches: false,
40624                    precalcOptions: {},
40625                    originalInit: configurableOptionsComponent.init,
40626                    init() {
40627                        try {
40628                            this.precalcOptions = {};
40629                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
40630                            this.preselectQuerystringItems();
40631                            if (Array.isArray(attrSource)) {
40632                                attrSource.forEach(attr => {
40633                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
40634                                });
40635                            } else if (attrSource && typeof attrSource === 'object') {
40636                                Object.keys(attrSource).forEach(id => {
40637                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
40638                                });
40639                            }
40640                        } catch (e) {
40641                            console.error('Pre-calc error:', e);
40642                        }
40643
40644                        if (typeof this.originalInit === 'function') {
40645                            this.originalInit();
40646                        }
40647
40648                        try {
40649                            this.initShowSwatchesIntersect();
40650                        } catch (e) {
40651                            console.error('intersect error:', e);
40652                        }
40653                    },
40654
40655                    updateGallery() {
40656                        if (!this.productIndex) return;
40657
40658                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
40659                                method: 'GET',
40660                                headers: {
40661                                    'Content-Type': 'application/json',
40662                                    'X-Requested-With': 'XMLHttpRequest'
40663                                }
40664                            })
40665                            .then(response => response.json())
40666                            .then(data => {
40667                                if (data && data.medium) {
40668                                    window.dispatchEvent(new CustomEvent("update-gallery-3991", {
40669                                        detail: data.medium
40670                                    }));
40671                                }
40672                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
40673                    },
40674
40675
40676                    initShowSwatchesIntersect() {
40677                        const observer = new IntersectionObserver(entries => {
40678                            if (entries[0].isIntersecting) {
40679                                this.showSwatches = true;
40680                                observer.disconnect();
40681                            }
40682                        }, {
40683                            rootMargin: '512px'
40684                        });
40685                        observer.observe(this.$el);
40686                    },
40687                    getOptions(attrId) {
40688                        return this.precalcOptions[attrId] || [];
40689                    },
40690                    getOptionsByAttrId() {
40691                        return this.getOptions(this.$el.dataset.attributeId);
40692                    },
40693                    _getItemId() {
40694                        if (this.item && this.item.id) return this.item.id;
40695                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
40696                    },
40697                    getSwatchOptionHtmlId() {
40698                        const itemId = this._getItemId();
40699                        return itemId ? this.$id(`attribute-option-3991-${itemId}`) : '';
40700                    },
40701                    getSwatchOptionHtmlIdGroup() {
40702                        const itemId = this._getItemId();
40703                        return itemId ? [`attribute-option-3991-${itemId}`] : [];
40704                    },
40705                    getAttributeSwatchData(attributeId) {
40706                        const data = Object.assign({}, this.swatchConfig[attributeId]);
40707                        if (data['additional_data']) {
40708                            try {
40709                                data['details'] = JSON.parse(data['additional_data']);
40710                            } catch (e) {
40711                                data['details'] = {};
40712                            }
40713                        }
40714                        return data;
40715                    },
40716                    getSwatchType(attributeId, optionId) {
40717                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
40718                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
40719                        }
40720                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
40721                            this.swatchConfig[attributeId].details.swatch_input_type :
40722                            "empty";
40723                        if (type === 'visual') {
40724                            const config = this.swatchConfig[attributeId];
40725                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
40726                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
40727                            }
40728                            // Fallback to first option type
40729                            for (const oId in config) {
40730                                if (config[oId] && typeof config[oId].type !== 'undefined') {
40731                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
40732                                }
40733                            }
40734                        }
40735                        return type;
40736                    },
40737                    mapSwatchTypeNumberToTypeCode(type) {
40738                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
40739                    },
40740                    isTextSwatch() {
40741                        const itemId = this._getItemId();
40742                        if (!this.$el || !itemId) return false;
40743                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
40744                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
40745                    },
40746
40747                    getSwatchText() {
40748                        const itemId = this._getItemId();
40749                        if (this.item) return this.item.label || '';
40750                        if (!this.$el || !itemId) return '';
40751                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
40752                        const options = attrId ? this.getOptions(attrId) : [];
40753                        const opt = options.find(o => o.id == itemId);
40754                        return opt ? opt.label : '';
40755                    },
40756                    getSwatchBackgroundStyle() {
40757                        const itemId = this._getItemId();
40758                        if (!this.$el || !itemId) return '';
40759                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
40760                        if (!attrId) return '';
40761                        const type = this.getSwatchType(attrId, itemId);
40762                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
40763                            this.swatchConfig[attrId][itemId] :
40764                            null;
40765                        if (!swatchData) return '';
40766                        if (type === "color") return 'background-color:' + swatchData.value;
40767                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
40768                        return '';
40769                    },
40770                    swatchOptionClasses() {
40771                        const itemId = this._getItemId();
40772                        if (!this.$el || !itemId) return {};
40773                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
40774                        return {
40775                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
40776                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
40777                            'w-6 h-6': !this.isTextSwatch()
40778                        }
40779                    },
40780
40781                    onFocusSwatchItem() {
40782                        const itemId = this._getItemId();
40783                        if (itemId) this.focusedLabel = itemId;
40784                    },
40785                    onChangeOption() {
40786                        const itemId = this._getItemId();
40787                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
40788                        if (attrId && itemId) this.changeOption(attrId, itemId);
40789                    },
40790                    changeOption(attributeId, value) {
40791                        if (value === '') {
40792                            return;
40793                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
40794                        } else {
40795                            this.selectedValues[attributeId] = value;
40796                        }
40797
40798                        this.findSimpleIndex();
40799                        this.findAllowedAttributeOptions();
40800                        this.updatePrices();
40801                        this.updateGallery();
40802
40803                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
40804                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
40805
40806                        const eventDetail = {
40807                            productId: this.productId,
40808                            optionId: attributeId,
40809                            value: value,
40810                            productIndex: this.productIndex || 0,
40811                            selectedValues: this.selectedValues,
40812                            candidates: candidates,
40813                            sourceElement: this.$el
40814                        };
40815
40816                        // Dispatch for Amasty
40817                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
40818                            detail: eventDetail
40819                        }));
40820
40821                        // Dispatch for Hyva listing
40822                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
40823                            detail: eventDetail
40824                        }));
40825                    },
40826
40827
40828                    clearOptionIfActive() {
40829                        const itemId = this._getItemId();
40830                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
40831                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
40832                            this.changeOption(attrId, '');
40833
40834                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
40835                            if (!input && this.$el?.querySelector) {
40836                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
40837                            }
40838                            if (!input && this.$el?.closest) {
40839                                const root = this.$el.closest('[data-product-id]') || this.$el;
40840                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
40841                            }
40842                            if (input) {
40843                                input.checked = false;
40844                            }
40845                        }
40846                    },
40847                    get optionIsEnabled() {
40848                        const itemId = this._getItemId();
40849                        if (!this.$el || !itemId) return true;
40850                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
40851                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
40852                        return !!allowedOptions.find(opt => opt.id == itemId);
40853                    },
40854                    get isSelected() {
40855                        const itemId = this._getItemId();
40856                        if (!this.$el || !itemId) return false;
40857                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
40858                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
40859                    },
40860                    get isSwatchRequired() {
40861                        if (!this.$el) return false;
40862                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
40863                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
40864                    },
40865                    focusedLabel: false,
40866                    activeTooltipItem: false,
40867                    tooltipPositionElement: false,
40868                    setActiveTooltipItem() {
40869                        const itemId = this._getItemId();
40870                        if (!this.$el || !itemId) return;
40871                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
40872                        this.activeTooltipItem = {
40873                            attribute: attrId,
40874                            item: itemId,
40875                            index: 0
40876                        };
40877                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
40878                    },
40879                    unsetActiveTooltipItem() {
40880                        this.activeTooltipItem = false;
40881                    }
40882                },
40883                confProdPreSelect()
40884            );
40885
40886            if (result.optionConfig && result.optionConfig.attributes) {
40887                const attributes = result.optionConfig.attributes;
40888                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
40889                    let source = attributes;
40890                    if (Array.isArray(attributes)) {
40891                        source = {};
40892                        attributes.forEach(attr => {
40893                            if (attr && attr.id) source[attr.id] = attr;
40894                        });
40895                    }
40896                    const values = Object.values(source);
40897                    const wrapper = Object.assign(values, source);
40898                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
40899                        value: true,
40900                        enumerable: false
40901                    });
40902                    result.optionConfig.attributes = wrapper;
40903                }
40904            }
40905
40906            return result;
40907        }
40908
40909        window.addEventListener('alpine:init', () => {
40910            Alpine.data('initConfigurableSwatchOptions_3991', initConfigurableSwatchOptions_3991);
40911        }, {
40912            once: true
40913        });
40914    </script>
40914
40915    
40916    <div x-data="initConfigurableSwatchOptions_3991" x-defer="intersect">
40917        <div class="pagebuilder-home-hidden">
40918                                            
40919                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
40920                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
40921                        <template x-if="showSwatches">
40922                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-3991-163" role="radiogroup" aria-label="Einband">
40923                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
40924                                    <div :data-option-id="item.id" style="display: contents">
40925                                        <div x-id="getSwatchOptionHtmlIdGroup">
40926    <template x-if="optionIsEnabled">
40927        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
40927self="unsetActiveTooltipItem">
40928            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-3991-163">
40929            <div>
40930                <template x-if="isTextSwatch">
40931                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
40932                </template>
40933                <template x-if="!optionIsActive(163, item.id)">
40934                    <div>
40935                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
40936                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
40937                        </svg>
40938                    </div>
40939                </template>
40940            </div>
40941        </label>
40942    </template>
40943</div>                                    </div>
40944                                </template>
40945                            </div>
40946                        </template>
40947                    </div>
40948                </div>
40949                    </div>
40950    </div>
40951            
40952                                                <div class="meta py-4 pagebuilder-home-hidden">
40953                <div x-data="initMarketingShortText_3991()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
40954                    <!-- Marketing short text -->
40955                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
40956                    </div>
40957
40958                    <!-- Short description -->
40959                                                                <div class="short-description">
40960                            Gesellschaftsspiele haben seit Beginn der Coronakrise wieder Hochkonjunktur. Dabei bieten sie nicht nur abwechslungsreiche Unterhaltung f&uuml;r private Spieleabende, sondern sind dank ihrer ...                            <a href="https://meiner.de/fmv_de/philosophieren-mit-spielen" class="underline">mehr</a>
40961                        </div>
40962                                    </div>
40963
40964                <!-- Series  -->
40965                                    <div class="mb-1">
40966                        <span class="sr-only">Reihe:</span>
40967                        <a href="https://meiner.de/fmv_de/programm/reihen/methoden-im-philosophie-und-ethikunterricht">
40968                            <span>Methoden im Philosophie- und Ethikunterricht</span>
40969                        </a>
40970                                                    6                                            </div>
40971                
40972                
40973                                                    <div class="mb-1">
40974                        <span x-data="initEditionText_3991()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
40975                            <!-- Marketing short text -->
40976                            <span class="edition-text" x-html="editionText"></span>&nbsp;2022, 218 Seiten                        </span>
40977                    </div>
40978                
40979                            </div>
40980            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
40981                
40982                <div class="justify-end" x-data="initPriceBox()" @update-prices-3991.window="updatePrice($event.detail);">
40983                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="3991" data-price-box="product-id-3991"><span class="normal-price">
40984    <span x-data x-id="['product\u002Dprice\u002D3991']" class="price-container price-final_price tax weee">
40985            <span class="price-label">Ab</span>
40986                <span class="approx-price">ca. </span>
40987        <span :id="$id('product\u002Dprice\u002D3991')" data-price-amount="14.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">14,99&nbsp;&euro;</span></span>
40988        </span>
40989</span>
40990
40991
40992</div>                </div>
40993
40994                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
40995                                            <div class="open-access-container open-access-container-3991                    flex mt-4 ml-auto sm:mt-0 hidden">
40996                            <div class="text-gray-700">
40997                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
40998                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
40999                                        Kostenlos online lesen                                    </a>
41000                                </button>
41001                            </div>
41002                        </div>
41003                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Philosophieren mit Spielen" aria-label="In den Warenkorb Philosophieren mit Spielen" data-addto="cart">
41004                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
41005  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
41006</svg>
41007                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
41008                                        In den Warenkorb                                    </span>
41009                                </button>
41010                                                                                                                    
41011<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(3991)" aria-label="Zur Wunschliste hinzuf&uuml;gen Philosophieren mit Spielen" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
41012    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
41013  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
41014</svg>
41015</button>
41016                                    </div>
41017            </div>
41018        </div>
41019        
41019<script>
41020            function initMarketingShortText_3991() {
41021                var marketingShortTextConfig = {};
41022                if (typeof window.initConfigurableSwatchOptions_3991 === "function") {
41023                    var fullConfig = window.initConfigurableSwatchOptions_3991().optionConfig
41024                    var marketingShortTextConfig = fullConfig.marketing_short_text;
41025                }
41026                return {
41027                    marketingShortText: '',
41028                    config: marketingShortTextConfig,
41029                    productId: '3991',
41030                    getMarketingShortText(detail) {
41031                        this.marketingShortText = detail.productIndex ?
41032                            this.config[detail.productIndex] :
41033                            null;
41034                    },
41035                    eventListeners: {
41036                        ['@listing-configurable-selection-changed.window'](event) {
41037                            if (this.productId == event.detail.productId) {
41038                                this.getMarketingShortText(event.detail);
41039                            }
41040
41041                        }
41042                    }
41043                }
41044            }
41045
41046            function initEditionText_3991() {
41047                var editionTextConfig = {};
41048                if (typeof window.initConfigurableSwatchOptions_3991 === "function") {
41049                    var fullConfig = window.initConfigurableSwatchOptions_3991().optionConfig
41050                    var editionTextConfig = fullConfig.edition;
41051                }
41052                return {
41053                    editionText: '',
41054                    config: editionTextConfig,
41055                    productId: '3991',
41056                    getEditionText(detail) {
41057                        this.editionText = detail.productIndex ?
41058                            this.config[detail.productIndex] :
41059                            null;
41060                    },
41061                    eventListeners: {
41062                        ['@listing-configurable-selection-changed.window'](event) {
41063                            if (this.productId == event.detail.productId) {
41064                                this.getEditionText(event.detail);
41065                            }
41066
41067                        }
41068                    }
41069                }
41070            }
41071        </script>
41071
41072                    </form>
41073                            
41074    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/3985/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="004433">
41075        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="3985">
41076                                    <a href="https://meiner.de/fmv_de/methoden-im-philosophie-und-ethikunterricht-band-1-4-im-set-16078" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
41077            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-3985.window="$el.src = $event.detail" alt="Methoden im Philosophie- und Ethikunterricht Band 1-4 im Set" title="Methoden im Philosophie- und Ethikunterricht Band 1-4 im Set" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787344338.png" :style="{
41078                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
41079                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
41080            }">
41081                    </a>
41082        <div class="product-info flex flex-col flex-grow ">
41083                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
41084                                    <div class="mb-2 text-sm text-gray-500 font-medium">
41085                                                                                    <a href="https://meiner.de/fmv_de/person/Jorg-Peters-3207/" class="mb-2">
41086                                    J&ouml;rg Peters                                                                    </a>
41087                                                                    <span>|</span>
41088                                                                                            <a href="https://meiner.de/fmv_de/person/Martina-Peters-3206/" class="mb-2">
41089                                    Martina Peters                                                                            (Hrsg.)
41090                                                                    </a>
41091                                                                                                                                    </div>
41092                                <a class="product-item-link" href="https://meiner.de/fmv_de/methoden-im-philosophie-und-ethikunterricht-band-1-4-im-set-16078">
41093                    Methoden im Philosophie- und Ethikunterricht Band 1-4 im Set                </a>
41094                            </div>
41095
41096            <div x-data="initEditionText_3985()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
41097                <!-- Marketing short text -->
41098                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
41099                </div>
41100            </div>
41101
41102                            <div class="py-1 grid  mb-4 ">
41103                    
41104<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_3985" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":3985,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":0,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":[],"childProductsAlertStatus":[],"indexMapping":"{}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":false,"productIdentifier":3985,"availabilityMessages":{"3985":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"3985":{"status":0}}}'>
41105    
41106    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
41107        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
41108        <span x-html="optionsLabelText"></span>
41109    </p>
41110</div>                </div>
41111            
41112                                        
41113                                                    <div class="pagebuilder-home-hidden">
41114                    <div class="mb-2 relative">
41115                        <div class="swatch-option w-fit relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit border-gray-100 ring ring-primary/50 ring-2">
41116                            <div>
41117                                <div class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true">Kartoniert</div>
41118                                                            </div>
41119                        </div>
41120                    </div>
41121                </div>
41122                        <div class="meta py-4 pagebuilder-home-hidden">
41123                <div x-data="initMarketingShortText_3985()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
41124                    <!-- Marketing short text -->
41125                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
41126                    </div>
41127
41128                    <!-- Short description -->
41129                                                        </div>
41130
41131                <!-- Series  -->
41132                                    <div class="mb-1">
41133                        <span class="sr-only">Reihe:</span>
41134                        <a href="https://meiner.de/fmv_de/programm/reihen/methoden-im-philosophie-und-ethikunterricht">
41135                            <span>Methoden im Philosophie- und Ethikunterricht</span>
41136                        </a>
41137                                            </div>
41138                
41139                
41140                                                    <div class="mb-1">
41141                        <span x-data="initEditionText_3985()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
41142                            <!-- Marketing short text -->
41143                            <span class="edition-text" x-html="editionText"></span>&nbsp;4 B&auml;nde zusammen 852 Seiten                        </span>
41144                    </div>
41145                
41146                                    <div class="mb-1">
41147                        <span>ISBN: </span>
41148                        <span>978-3-7873-4433-8</span>
41149                    </div>
41150                            </div>
41151            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
41152                
41153                <div class="justify-end" x-data="initPriceBox()" @update-prices-3985.window="updatePrice($event.detail);">
41154                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="3985" data-price-box="product-id-3985">
41155    <span x-data x-id="['product\u002Dprice\u002D3985']" class="price-container price-final_price tax weee">
41156            <span :id="$id('product\u002Dprice\u002D3985')" data-price-amount="59.9" data-price-type="finalPrice" class="price-wrapper "><span class="price">59,90&nbsp;&euro;</span></span>
41157        </span>
41158
41159</div>                </div>
41160
41161                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
41162                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Methoden im Philosophie- und Ethikunterricht Band 1-4 im Set" aria-label="In den Warenkorb Methoden im Philosophie- und Ethikunterricht Band 1-4 im Set" data-addto="cart">
41163                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
41164  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
411640 014 0z"></path>
41165</svg>
41166                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
41167                                        In den Warenkorb                                    </span>
41168                                </button>
41169                                                                                                                    
41170<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(3985)" aria-label="Zur Wunschliste hinzuf&uuml;gen Methoden im Philosophie- und Ethikunterricht Band 1-4 im Set" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
41171    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
41172  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
41173</svg>
41174</button>
41175                                    </div>
41176            </div>
41177        </div>
41178        
41178<script>
41179            function initMarketingShortText_3985() {
41180                var marketingShortTextConfig = {};
41181                if (typeof window.initConfigurableSwatchOptions_3985 === "function") {
41182                    var fullConfig = window.initConfigurableSwatchOptions_3985().optionConfig
41183                    var marketingShortTextConfig = fullConfig.marketing_short_text;
41184                }
41185                return {
41186                    marketingShortText: '',
41187                    config: marketingShortTextConfig,
41188                    productId: '3985',
41189                    getMarketingShortText(detail) {
41190                        this.marketingShortText = detail.productIndex ?
41191                            this.config[detail.productIndex] :
41192                            null;
41193                    },
41194                    eventListeners: {
41195                        ['@listing-configurable-selection-changed.window'](event) {
41196                            if (this.productId == event.detail.productId) {
41197                                this.getMarketingShortText(event.detail);
41198                            }
41199
41200                        }
41201                    }
41202                }
41203            }
41204
41205            function initEditionText_3985() {
41206                var editionTextConfig = {};
41207                if (typeof window.initConfigurableSwatchOptions_3985 === "function") {
41208                    var fullConfig = window.initConfigurableSwatchOptions_3985().optionConfig
41209                    var editionTextConfig = fullConfig.edition;
41210                }
41211                return {
41212                    editionText: '',
41213                    config: editionTextConfig,
41214                    productId: '3985',
41215                    getEditionText(detail) {
41216                        this.editionText = detail.productIndex ?
41217                            this.config[detail.productIndex] :
41218                            null;
41219                    },
41220                    eventListeners: {
41221                        ['@listing-configurable-selection-changed.window'](event) {
41222                            if (this.productId == event.detail.productId) {
41223                                this.getEditionText(event.detail);
41224                            }
41225
41226                        }
41227                    }
41228                }
41229            }
41230        </script>
41230
41231                    </form>
41232                    </div>
41233        
41234<div class="carousel-nav flex items-center justify-center flex-1 p-4">
41235    <button aria-label="Zur&uuml;ck" title="Zur&uuml;ck" class="glider-prev w-8 h-8 mr-1 text-black rounded-full outline-none focus:outline-none hidden">
41236        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true">
41237  <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"></path>
41238</svg>
41239    </button>
41240    <div role="tablist" class="glider-dots select-none flex flex-wrap mx-1 justify-center p-0 focus:outline-none"></div>
41241    <button aria-label="Weiter" title="Weiter" class="glider-next w-8 h-8 ml-1 text-black rounded-full outline-none focus:outline-none hidden">
41242        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true">
41243  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"></path>
41244</svg>
41245    </button>
41246</div>
41247    </div>
41248</div></div></div></div></div></div><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="" data-element="inner" data-pb-style="HBNQ69W"><h3 data-content-type="heading" data-appearance="default" data-element="main">Sino-philosophica</h3><div class="pagebuilder-column-group card cmsp2-p-5" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-background-lazy-load="false" data-element="main" data-pb-style="EF95BS6"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="DQV92YO"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="PK9D1F2"><h4 data-content-type="heading" data-appearance="default" data-element="main">Quellentexte der chinesischen Philosophie</h4><div data-content-type="text" data-appearance="default" data-element="main" data-pb-style="YLG2MX7"><p style="text-align: left;">Mit den <a href="/programm/reihen/sino-philosophica">Sino-philosophica </a>begr&uuml;ndet der Felix Meiner Verlag eine Reihe, die Quellentexte der chinesischen Philosophie vom Altertum bis in die Gegenwart in zweisprachigen Ausgaben mit chinesischem Original und wissenschaftlich fundierter &Uuml;bersetzung vorstellt. Jeder Band pr&auml;sentiert den chinesischen Text in verl&auml;sslicher Ausgabe im Parallelumbruch mit der von f&uuml;hrenden Fachleuten besorgten deutschen &Uuml;bersetzung.</p>
41249<div id="box_infotext">
41250<p style="text-align: left;">&nbsp;</p>
41251<p style="text-align: left;"><a tabindex="-1" href="/programm/reihen/sino-philosophica"><img style="display: block; margin-left: auto; margin-right: auto; width: 75px; height: 248px;" src="https://meiner.de/media/wysiwyg/FMV/Signets-Logos/Sino-Philosophica.jpg" alt="Signet der Blauen Reihe" width="100" height="100"></a></p>
41252<p style="text-align: center;">&nbsp;</p>
41253</div></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="ECM6YD3"></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="RAUXYGH"><h4 data-content-type="heading" data-appearance="default" data-element="main">Alle B&auml;nde der Reihe</h4><div data-content-type="products" data-appearance="carousel" data-autoplay="false" data-autoplay-speed="4000" data-infinite-loop="false" data-show-arrows="false" data-show-dots="true" data-carousel-mode="default" data-center-padding="90px" data-element="main">        <div class="glider-contain product-items widget-product-carou
41253sel">
41254        <div data-role="glider-content" class="mx-auto grid gap-4 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 relative overflow-y-hidden overflow-x-scroll">
41255                            
41256    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/46696/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk16806">
41257        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="46696">
41258                                    <a href="https://meiner.de/fmv_de/das-groa-e-ruhen-und-kontemplieren-16806" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
41259            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-46696.window="$el.src = $event.detail" alt="Das Gro&szlig;e Ruhen und Kontemplieren" title="Das Gro&szlig;e Ruhen und Kontemplieren" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787345922_1.jpg" :style="{
41260                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
41261                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
41262            }">
41263                    </a>
41264        <div class="product-info flex flex-col flex-grow ">
41265                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
41266                                    <div class="mb-2 text-sm text-gray-500 font-medium">
41267                                                                                    <a href="https://meiner.de/fmv_de/person/Zhiyi-21155/" class="mb-2">
41268                                    Zh&igrave;y&#464;                                                                    </a>
41269                                                                                                                                    </div>
41270                                <a class="product-item-link" href="https://meiner.de/fmv_de/das-groa-e-ruhen-und-kontemplieren-16806">
41271                    Das Gro&szlig;e Ruhen und Kontemplieren                </a>
41272                            </div>
41273
41274            <div x-data="initEditionText_46696()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
41275                <!-- Marketing short text -->
41276                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
41277                </div>
41278            </div>
41279
41280                            <div class="py-1 grid  mb-4 ">
41281                    
41282                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":46696,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":46696,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"45602":"1","47037":"1"},"childProductsAlertStatus":{"45602":"0","47037":"0"},"indexMapping":{"163:11":45602,"163:8":47037},"availabilityMessages":{"45602":"Lieferbar innerhalb von 3-5 Tagen","47037":"Download sofort  verf\u00fcgbar"},"openAccess":{"46696":{"status":0},"45602":{"status":0},"47037":{"status":0}}},"availabilityMessages":{"45602":"Lieferbar innerhalb von 3-5 Tagen","47037":"Download sofort  verf\u00fcgbar"},"openAccess":{"46696":{"status":0},"45602":{"status":0},"47037":{"status":0}}}'>
41283        <template x-if="containerVisible">
41284                            <!-- Popup Trigger -->
41285                <div>
41286                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
41287                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
41288                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
41289  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
41290<title>bell</title></svg>
41291</span>
41292                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
41293
41294                    <!-- Popup Modal -->
41295                    <template x-if="showModal">
41296                        <template x-teleport=".page-wrapper">
41297                            <div x-cloak class="fixed inset-0 flex items-center justify-center
41298                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
41299                                <div class="relative bg-white rounded-lg shadow-xl
41300                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
41301                                    <div class="p-6">
41302                                        <!-- Subscription Form for Popup -->
41303                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
41304                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
41305                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
41306                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
41307
41308                                            <div class="flex flex-col gap-3">
41309                                                <div class="flex-grow grow">
41310                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
41311                                                        shadow-xs focus:outline-none focus:outline-hidden
41312                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
41313                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
41314                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
41315                                                </div>
41316                                                <input type="hidden" name="product_id" :value="currentProductId">
41317                                                <input type="hidden" name="type" value="email">
41318
41319                                                
41320                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
41321
41322                                                <div class="amxnotif_guest_action">
41323                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
41324                                                        rounded-md focus:outline-none
41325                                                        focus:outline-hidden focus:ring-2
41326                                                        focus:ring-offset-2 disabled:opacity-50
41327                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
41328                                                        Benachrichtigen                                                    </button>
41329                                                </div>
41330                                            </div>
41331
41332                                                                                            <div class="flex items-start pt-2">
41333                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
41334                                                        text-blue-600 border-gray-300 rounded-sm">
41335                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
41336                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
41337                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
41338                                                </div>
41339                                                                                    </form>
41340                                    </div>
41341
41342                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
41343                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
41344                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
41345  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
41346<title>x</title></svg>
41347                                    </button>
41348                                </div>
41349                            </div>
41350                        </template>
41351                    </template>
41352                </div>
41353                    </template>
41354    </div>
41355
41356<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_46696" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":46696,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"45602":"1","47037":"1"},"childProductsAlertStatus":{"45602":"0","47037":"0"},"indexMapping":"{\u0022163:11\u0022:45602,\u0022163:8\u0022:47037}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":46696,"availabilityMessages":{"45602":"Lieferbar innerhalb von 3-5 Tagen","47037":"Download sofort  verf\u00fcgbar"},"openAccess":{"46696":{"status":0},"45602":{"status":0},"47037":{"status":0}}}'>
41357    
41358    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
41359        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
41360        <span x-html="optionsLabelText"></span>
41361    </p>
41362</div>                </div>
41363            
41364                                
41364<script>
41365        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
41366            try {
41367                const attributes = (config && config.attributes) ? config.attributes : null;
41368                if (!attributes) return [];
41369                let attr = null;
41370                if (Array.isArray(attributes)) {
41371                    for (let i = 0; i < attributes.length; i++) {
41372                        const a = attributes[i];
41373                        if (a && a.id == attrId) {
41374                            attr = a;
41375                            break;
41376                        }
41377                    }
41378                } else {
41379                    attr = attributes[attrId];
41380                }
41381                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
41382            } catch (e) {
41383                return [];
41384            }
41385        };
41386
41387        function initConfigurableSwatchOptions_46696() {
41388            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"11","label":"Gebunden","products":["45602"]},{"id":"8","label":"PDF","products":["47037"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"45602":{"baseOldPrice":{"amount":232.71027937383},"oldPrice":{"amount":249},"basePrice":{"amount":232.71027937383},"finalPrice":{"amount":249},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47037":{"baseOldPrice":{"amount":177.56074666355},"oldPrice":{"amount":189.99},"basePrice":{"amount":177.56074666355},"finalPrice":{"amount":189.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":177.56074666355},"oldPrice":{"amount":189.99},"basePrice":{"amount":159.65546118487},"finalPrice":{"amount":189.99},"isApproxPrice":null},"productId":"46696","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"45602":{"163":"11"},"47037":{"163":"8"}},"salable":{"163":{"11":["45602"],"8":["47037"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"45602":"004591","47037":"004592"},"output":{"45602":"Gebunden","47037":"PDF"},"original_name":{"45602":"M\u00f3h\u0113 zh\u01d0gu\u0101n","47037":"M\u00f3h\u0113 zh\u01d0gu\u0101n"},"openaccess_license_link":{"45602":"","47037":""},"openaccess_license_name":{"45602":"","47037":""},"openaccess_external_link":{"45602":"","47037":""},"gpsr_safety_info":{"45602":"","47037":""},"description":{"45602":"In der ostasiatischen Tradition des Mah\u0101y\u0101na gilt die Tiantai-Lehre als eine der ersten und historisch einflussreichsten Schulen des chinesischen Buddhismus. Eines der fr\u00fchen Hauptwerke, das noch heute als Lehrgrundlage f\u00fcr Praktizierende in ganz Ostasien dient, wurde von dem gelehrten M\u00f6nch Zh\u00ecy\u01d0 (538\u2013597) verfasst und tr\u00e4gt den Titel \u00bbDas gro\u00dfe Ruhen und Kontemplieren\u00ab. <br\/><br\/>Sein umfangreicher Textkorpus ber\u00fccksichtigt die damals in China bekannte indisch-buddhistische Lehrliteratur, die ab dem zweiten Jahrhundert n. Chr. in die klassische chinesische Schriftsprache \u00fcbersetzt wurde. Es ist der erste Text der chinesischen Tradition, der eine komplexe Hermeneutik vorlegt, die der doktrin\u00e4ren Vielfalt in der \u00fcbersetzten Lehrliteratur eine innere Einheit zuspricht und das Erfassen derselben mit der Introspektion, das hei\u00dft mit der geistigen Selbstbeobachtung, verkn\u00fcpft. In dieser Verbindung definiert der Text nicht nur das Wesen der buddhistischen Praxis, sondern entwickelt auch eine an der Exegese ausgerichteten Theorie von ihr. <br\/><br\/>\u00bbDas allumschlie\u00dfende Dekonstruieren\u00ab ist das philosophisch relevanteste Kapitel, da es sich mit der wahren Erkenntnis aller T\u00e4uschungen und der existenziellen Bedeutung dieser Erkenntnis sowie der der T\u00e4uschung besch\u00e4ftigt. Mit der philosophischen Praxis des dekonstruierenden Kontemplierens der Geistesaktivit\u00e4t beschreibt Zh\u00ecy\u01d0s Werk die ambivalente Signifikanz des unausweichlichen Scheins f\u00fcr die Gestaltung unseres Daseins, die sich in der Einheit von vita contemplativa und vita activa erf\u00fcllt.","47037":"In der ostasiatischen Tradition des Mah\u0101y\u0101na gilt die Tiantai-Lehre als eine der ersten und historisch einflussreichsten Schulen des chinesischen Buddhismus. Eines der fr\u00fchen Hauptwerke, das noch heute als Lehrgrundlage f\u00fcr Praktizierende in ganz Ostasien dient, wurde von dem gelehrten M\u00f6nch Zh\u00ecy\u01d0 (538\u2013597) verfasst und tr\u00e4gt den Titel \u00bbDas gro\u00dfe Ruhen und 
41388Kontemplieren\u00ab. <br\/><br\/>Sein umfangreicher Textkorpus ber\u00fccksichtigt die damals in China bekannte indisch-buddhistische Lehrliteratur, die ab dem zweiten Jahrhundert n. Chr. in die klassische chinesische Schriftsprache \u00fcbersetzt wurde. Es ist der erste Text der chinesischen Tradition, der eine komplexe Hermeneutik vorlegt, die der doktrin\u00e4ren Vielfalt in der \u00fcbersetzten Lehrliteratur eine innere Einheit zuspricht und das Erfassen derselben mit der Introspektion, das hei\u00dft mit der geistigen Selbstbeobachtung, verkn\u00fcpft. In dieser Verbindung definiert der Text nicht nur das Wesen der buddhistischen Praxis, sondern entwickelt auch eine an der Exegese ausgerichteten Theorie von ihr. <br\/><br\/>\u00bbDas allumschlie\u00dfende Dekonstruieren\u00ab ist das philosophisch relevanteste Kapitel, da es sich mit der wahren Erkenntnis aller T\u00e4uschungen und der existenziellen Bedeutung dieser Erkenntnis sowie der der T\u00e4uschung besch\u00e4ftigt. Mit der philosophischen Praxis des dekonstruierenden Kontemplierens der Geistesaktivit\u00e4t beschreibt Zh\u00ecy\u01d0s Werk die ambivalente Signifikanz des unausweichlichen Scheins f\u00fcr die Gestaltung unseres Daseins, die sich in der Einheit von vita contemplativa und vita activa erf\u00fcllt."},"doi":{"45602":"","47037":"10.28937\/978-3-7873-4592-2"},"isbn":{"45602":"978-3-7873-4591-5","47037":"978-3-7873-4592-2"},"marketing_short_text":{"45602":"","47037":""},"recension_text":{"45602":"","47037":""},"language":{"45602":"","47037":""},"cover":{"45602":"Gebunden","47037":""},"pages":{"45602":"928 Seiten.","47037":"928 Seiten."},"edition":{"45602":"","47037":"Unver\u00e4ndertes eBook der 1. Auflage von 2026"},"pod":{"45602":"Nein","47037":"Nein"},"copyright_year":{"45602":"","47037":""},"vlb_tix_link":{"45602":"https:\/\/neu.vlbtix.de\/products\/9783787345915?type=gtin","47037":""},"defaultValues":{"163":"11"}};
41389            const swatchConfig = {"163":{"11":{"type":"0","value":"Gebunden","label":"Gebunden"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
41390
41391            if (typeof window.amxnotif_wrap_attributes === 'function') {
41392                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
41393                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
41394            }
41395
41396            const configurableOptionsComponent = initConfigurableOptions(
41397                '46696',
41398                config
41399            );
41400            const swatchOptionsComponent = initSwatchOptions(
41401                swatchConfig
41402            );
41403
41404            // DWS - Configurable product preselect start
41405            const confProdPreSelect = () => {
41406                return {
41407                    preselectQuerystringItems() {
41408                        var data = {"id":"45602","output":"11"};
41409                        const urlQueryParams = new URLSearchParams(window.location.search);
41410
41411                                                this.$nextTick(() => {
41412                            setTimeout(() => {
41413                                const rootEl = this.$root || this.$el;
41414                                if (!rootEl) return;
41415
41416                                const applySelection = (attrCode, attrValue) => {
41417                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
41418
41419                                    const attributes = Object.values(this.optionConfig.attributes || {});
41420                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
41421
41422                                    if (targetAttr) {
41423                                        const attrId = String(targetAttr.id);
41424                                        const optionVal = String(attrValue);
41425
41426                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
41427
41428                                        if (inputEl) {
41429                                                                                        inputEl.click();
41430                                            inputEl.dispatchEvent(new Event('change', {
41431                                                bubbles: true
41432                                            }));
41433                                        } else {
41434                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
41435                                            if (selectEl) {
41436                                                selectEl.value = optionVal;
41437                                                selectEl.dispatchEvent(new Event('change', {
41438                                                    bubbles: true
41439                                                }));
41440                                            }
41441                                        }
41442
41443                                                                                this.changeOption(attrId, optionVal, false);
41444                                    }
41445                                };
41446
41447                                                                if (data && typeof data === 'object') {
41448                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
41449                                }
41450
41451                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
41452                                    if (attribute && attribute.code) {
41453                                        let optionValue = urlQueryParams.get(attribute.code);
41454                                        if (optionValue) {
41455                                            let optionId = false;
41456                                            const attributes = Object.values(this.optionConfig.attributes || {});
41457                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
41458
41459                                            let found = false;
41460                                            Object.values(targetAttr.options).map(option => {
41461                                                if (found === false && option.label === optionValue) {
41462                                                    optionId = option.id;
41463                                                    found = true;
41464                                                }
41465                                            });
41466
41467                                            const attrId = String(targetAttr.id);
41468                                            let optionVal = String(optionValue);
41469                                            if (found) {
41470                                                optionVal = String(optionId);
41471                                            }
41472
41473                                            applySelection(attribute.code, optionVal);
41474                                        }
41475                                    }
41476                                });
41477                            }, 100);
41478                        });
41479                    }
41480                }
41481            };
41482            // DWS - Configurable product preselect end
41483
41484            const result = Object.assign(
41485                configurableOptionsComponent,
41486                swatchOptionsComponent, {
41487                    productId: '46696',
41488                    productIndex: 0,
41489                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
41490                    showSwatches: false,
41491                    precalcOptions: {},
41492                    originalInit: configurableOptionsComponent.init,
41493                    init() {
41494                        try {
41495                            this.precalcOptions = {};
41496                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
41497                            this.preselectQuerystringItems();
41498                            if (Array.isArray(attrSource)) {
41499                                attrSource.forEach(attr => {
41500                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
41501                                });
41502                            } else if (attrSource && typeof attrSource === 'object') {
41503                                Object.keys(attrSource).forEach(id => {
41504                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
41505                                });
41506                            }
41507                        } catch (e) {
41508                            console.error('Pre-calc error:', e);
41509                        }
41510
41511                        if (typeof this.originalInit === 'function') {
41512                            this.originalInit();
41513                        }
41514
41515                        try {
41516                            this.initShowSwatchesIntersect();
41517                        } catch (e) {
41518                            console.error('intersect error:', e);
41519                        }
41520                    },
41521
41522                    updateGallery() {
41523                        if (!this.productIndex) return;
41524
41525                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
41526                                method: 'GET',
41527                                headers: {
41528                                    'Content-Type': 'application/json',
41529                                    'X-Requested-With': 'XMLHttpRequest'
41530                                }
41531                            })
41532                            .then(response => response.json())
41533                            .then(data => {
41534                                if (data && data.medium) {
41535                                    window.dispatchEvent(new CustomEvent("update-gallery-46696", {
41536                                        detail: data.medium
41537                                    }));
41538                                }
41539                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
41540                    },
41541
41542
41543                    initShowSwatchesIntersect() {
41544                        const observer = new IntersectionObserver(entries => {
41545                            if (entries[0].isIntersecting) {
41546                                this.showSwatches = true;
41547                                observer.disconnect();
41548                            }
41549                        }, {
41550                            rootMargin: '512px'
41551                        });
41552                        observer.observe(this.$el);
41553                    },
41554                    getOptions(attrId) {
41555                        return this.precalcOptions[attrId] || [];
41556                    },
41557                    getOptionsByAttrId() {
41558                        return this.getOptions(this.$el.dataset.attributeId);
41559                    },
41560                    _getItemId() {
41561                        if (this.item && this.item.id) return this.item.id;
41562                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
41563                    },
41564                    getSwatchOptionHtmlId() {
41565                        const itemId = this._getItemId();
41566                        return itemId ? this.$id(`attribute-option-46696-${itemId}`) : '';
41567                    },
41568                    getSwatchOptionHtmlIdGroup() {
41569                        const itemId = this._getItemId();
41570                        return itemId ? [`attribute-option-46696-${itemId}`] : [];
41571                    },
41572                    getAttributeSwatchData(attributeId) {
41573                        const data = Object.assign({}, this.swatchConfig[attributeId]);
41574                        if (data['additional_data']) {
41575                            try {
41576                                data['details'] = JSON.parse(data['additional_data']);
41577                            } catch (e) {
41578                                data['details'] = {};
41579                            }
41580                        }
41581                        return data;
41582                    },
41583                    getSwatchType(attributeId, optionId) {
41584                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
41585                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
41586                        }
41587                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
41588                            this.swatchConfig[attributeId].details.swatch_input_type :
41589                            "empty";
41590                        if (type === 'visual') {
41591                            const config = this.swatchConfig[attributeId];
41592                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
41593                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
41594                            }
41595                            // Fallback to first option type
41596                            for (const oId in config) {
41597                                if (config[oId] && typeof config[oId].type !== 'undefined') {
41598                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
41599                                }
41600                            }
41601                        }
41602                        return type;
41603                    },
41604                    mapSwatchTypeNumberToTypeCode(type) {
41605                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
41606                    },
41607                    isTextSwatch() {
41608                        const itemId = this._getItemId();
41609                        if (!this.$el || !itemId) return false;
41610                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
41611                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
41612                    },
41613
41614                    getSwatchText() {
41615                        const itemId = this._getItemId();
41616                        if (this.item) return this.item.label || '';
41617                        if (!this.$el || !itemId) return '';
41618                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
41619                        const options = attrId ? this.getOptions(attrId) : [];
41620                        const opt = options.find(o => o.id == itemId);
41621                        return opt ? opt.label : '';
41622                    },
41623                    getSwatchBackgroundStyle() {
41624                        const itemId = this._getItemId();
41625                        if (!this.$el || !itemId) return '';
41626                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
41627                        if (!attrId) return '';
41628                        const type = this.getSwatchType(attrId, itemId);
41629                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
41630                            this.swatchConfig[attrId][itemId] :
41631                            null;
41632                        if (!swatchData) return '';
41633                        if (type === "color") return 'background-color:' + swatchData.value;
41634                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
41635                        return '';
41636                    },
41637                    swatchOptionClasses() {
41638                        const itemId = this._getItemId();
41639                        if (!this.$el || !itemId) return {};
41640                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
41641                        return {
41642                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
41643                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
41644                            'w-6 h-6': !this.isTextSwatch()
41645                        }
41646                    },
41647
41648                    onFocusSwatchItem() {
41649                        const itemId = this._getItemId();
41650                        if (itemId) this.focusedLabel = itemId;
41651                    },
41652                    onChangeOption() {
41653                        const itemId = this._getItemId();
41654                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
41655                        if (attrId && itemId) this.changeOption(attrId, itemId);
41656                    },
41657                    changeOption(attributeId, value) {
41658                        if (value === '') {
41659                            return;
41660                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
41661                        } else {
41662                            this.selectedValues[attributeId] = value;
41663                        }
41664
41665                        this.findSimpleIndex();
41666                        this.findAllowedAttributeOptions();
41667                        this.updatePrices();
41668                        this.updateGallery();
41669
41670                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
41671                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
41672
41673                        const eventDetail = {
41674                            productId: this.productId,
41675                            optionId: attributeId,
41676                            value: value,
41677                            productIndex: this.productIndex || 0,
41678                            selectedValues: this.selectedValues,
41679                            candidates: candidates,
41680                            sourceElement: this.$el
41681                        };
41682
41683                        // Dispatch for Amasty
41684                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
41685                            detail: eventDetail
41686                        }));
41687
41688                        // Dispatch for Hyva listing
41689                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
41690                            detail: eventDetail
41691                        }));
41692                    },
41693
41694
41695                    clearOptionIfActive() {
41696                        const itemId = this._getItemId();
41697                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
41698                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
41699                            this.changeOption(attrId, '');
41700
41701                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
41702                            if (!input && this.$el?.querySelector) {
41703                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
41704                            }
41705                            if (!input && this.$el?.closest) {
41706                                const root = this.$el.closest('[data-product-id]') || this.$el;
41707                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
41708                            }
41709                            if (input) {
41710                                input.checked = false;
41711                            }
41712                        }
41713                    },
41714                    get optionIsEnabled() {
41715                        const itemId = this._getItemId();
41716                        if (!this.$el || !itemId) return true;
41717                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
41718                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
41719                        return !!allowedOptions.find(opt => opt.id == itemId);
41720                    },
41721                    get isSelected() {
41722                        const itemId = this._getItemId();
41723                        if (!this.$el || !itemId) return false;
41724                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
41725                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
41726                    },
41727                    get isSwatchRequired() {
41728                        if (!this.$el) return false;
41729                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
41730                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
41731                    },
41732                    focusedLabel: false,
41733                    activeTooltipItem: false,
41734                    tooltipPositionElement: false,
41735                    setActiveTooltipItem() {
41736                        const itemId = this._getItemId();
41737                        if (!this.$el || !itemId) return;
41738                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
41739                        this.activeTooltipItem = {
41740                            attribute: attrId,
41741                            item: itemId,
41742                            index: 0
41743                        };
41744                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
41745                    },
41746                    unsetActiveTooltipItem() {
41747                        this.activeTooltipItem = false;
41748                    }
41749                },
41750                confProdPreSelect()
41751            );
41752
41753            if (result.optionConfig && result.optionConfig.attributes) {
41754                const attributes = result.optionConfig.attributes;
41755                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
41756                    let source = attributes;
41757                    if (Array.isArray(attributes)) {
41758                        source = {};
41759                        attributes.forEach(attr => {
41760                            if (attr && attr.id) source[attr.id] = attr;
41761                        });
41762                    }
41763                    const values = Object.values(source);
41764                    const wrapper = Object.assign(values, source);
41765                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
41766                        value: true,
41767                        enumerable: false
41768                    });
41769                    result.optionConfig.attributes = wrapper;
41770                }
41771            }
41772
41773            return result;
41774        }
41775
41776        window.addEventListener('alpine:init', () => {
41777            Alpine.data('initConfigurableSwatchOptions_46696', initConfigurableSwatchOptions_46696);
41778        }, {
41779            once: true
41780        });
41781    </script>
41781
41782    
41783    <div x-data="initConfigurableSwatchOptions_46696" x-defer="intersect">
41784        <div class="pagebuilder-home-hidden">
41785                                            
41786                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
41787                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
41788                        <template x-if="showSwatches">
41789                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-46696-163" role="radiogroup" aria-label="Einband">
41790                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
41791                                    <div :data-option-id="item.id" style="display: contents">
41792                                        <div x-id="getSwatchOptionHtmlIdGroup">
41793    <template x-if="optionIsEnabled">
41794        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
41794self="unsetActiveTooltipItem">
41795            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-46696-163">
41796            <div>
41797                <template x-if="isTextSwatch">
41798                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
41799                </template>
41800                <template x-if="!optionIsActive(163, item.id)">
41801                    <div>
41802                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
41803                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
41804                        </svg>
41805                    </div>
41806                </template>
41807            </div>
41808        </label>
41809    </template>
41810</div>                                    </div>
41811                                </template>
41812                            </div>
41813                        </template>
41814                    </div>
41815                </div>
41816                    </div>
41817    </div>
41818            
41819                                                <div class="meta py-4 pagebuilder-home-hidden">
41820                <div x-data="initMarketingShortText_46696()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
41821                    <!-- Marketing short text -->
41822                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
41823                    </div>
41824
41825                    <!-- Short description -->
41826                                                                <div class="short-description">
41827                            In der ostasiatischen Tradition des Mah&#257;y&#257;na gilt die Tiantai-Lehre als eine der ersten und historisch einflussreichsten Schulen des chinesischen Buddhismus. Eines der fr&uuml;hen Hauptwerke, das noch ...                            <a href="https://meiner.de/fmv_de/das-groa-e-ruhen-und-kontemplieren-16806" class="underline">mehr</a>
41828                        </div>
41829                                    </div>
41830
41831                <!-- Series  -->
41832                                    <div class="mb-1">
41833                        <span class="sr-only">Reihe:</span>
41834                        <a href="https://meiner.de/fmv_de/programm/reihen/sino-philosophica">
41835                            <span>Sino-philosophica</span>
41836                        </a>
41837                                                    4                                            </div>
41838                
41839                
41840                                                    <div class="mb-1">
41841                        <span x-data="initEditionText_46696()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
41842                            <!-- Marketing short text -->
41843                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 928 Seiten.                        </span>
41844                    </div>
41845                
41846                            </div>
41847            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
41848                
41849                <div class="justify-end" x-data="initPriceBox()" @update-prices-46696.window="updatePrice($event.detail);">
41850                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="46696" data-price-box="product-id-46696"><span class="normal-price">
41851    <span x-data x-id="['product\u002Dprice\u002D46696']" class="price-container price-final_price tax weee">
41852            <span class="price-label">Ab</span>
41853                <span class="approx-price">ca. </span>
41854        <span :id="$id('product\u002Dprice\u002D46696')" data-price-amount="189.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">189,99&nbsp;&euro;</span></span>
41855        </span>
41856</span>
41857
41858
41859</div>                </div>
41860
41861                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
41862                                            <div class="open-access-container open-access-container-46696                    flex mt-4 ml-auto sm:mt-0 hidden">
41863                            <div class="text-gray-700">
41864                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
41865                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
41866                                        Kostenlos online lesen                                    </a>
41867                                </button>
41868                            </div>
41869                        </div>
41870                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Das Gro&szlig;
41870e Ruhen und Kontemplieren" aria-label="In den Warenkorb Das Gro&szlig;e Ruhen und Kontemplieren" data-addto="cart">
41871                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
41872  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
41873</svg>
41874                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
41875                                        In den Warenkorb                                    </span>
41876                                </button>
41877                                                                                                                    
41878<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(46696)" aria-label="Zur Wunschliste hinzuf&uuml;gen Das Gro&szlig;e Ruhen und Kontemplieren" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
41879    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
41880  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
41881</svg>
41882</button>
41883                                    </div>
41884            </div>
41885        </div>
41886        
41886<script>
41887            function initMarketingShortText_46696() {
41888                var marketingShortTextConfig = {};
41889                if (typeof window.initConfigurableSwatchOptions_46696 === "function") {
41890                    var fullConfig = window.initConfigurableSwatchOptions_46696().optionConfig
41891                    var marketingShortTextConfig = fullConfig.marketing_short_text;
41892                }
41893                return {
41894                    marketingShortText: '',
41895                    config: marketingShortTextConfig,
41896                    productId: '46696',
41897                    getMarketingShortText(detail) {
41898                        this.marketingShortText = detail.productIndex ?
41899                            this.config[detail.productIndex] :
41900                            null;
41901                    },
41902                    eventListeners: {
41903                        ['@listing-configurable-selection-changed.window'](event) {
41904                            if (this.productId == event.detail.productId) {
41905                                this.getMarketingShortText(event.detail);
41906                            }
41907
41908                        }
41909                    }
41910                }
41911            }
41912
41913            function initEditionText_46696() {
41914                var editionTextConfig = {};
41915                if (typeof window.initConfigurableSwatchOptions_46696 === "function") {
41916                    var fullConfig = window.initConfigurableSwatchOptions_46696().optionConfig
41917                    var editionTextConfig = fullConfig.edition;
41918                }
41919                return {
41920                    editionText: '',
41921                    config: editionTextConfig,
41922                    productId: '46696',
41923                    getEditionText(detail) {
41924                        this.editionText = detail.productIndex ?
41925                            this.config[detail.productIndex] :
41926                            null;
41927                    },
41928                    eventListeners: {
41929                        ['@listing-configurable-selection-changed.window'](event) {
41930                            if (this.productId == event.detail.productId) {
41931                                this.getEditionText(event.detail);
41932                            }
41933
41934                        }
41935                    }
41936                }
41937            }
41938        </script>
41938
41939                    </form>
41940                            
41941    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/17429/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk17216">
41942        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="17429">
41943                                    <a href="https://meiner.de/fmv_de/pragmatischer-neokonfuzianismus-17216" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
41944            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-17429.window="$el.src = $event.detail" alt="Pragmatischer Neokonfuzianismus" title="Pragmatischer Neokonfuzianismus" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787345885_4.jpg" :style="{
41945                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
41946                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
41947            }">
41948                    </a>
41949        <div class="product-info flex flex-col flex-grow ">
41950                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
41951                                    <div class="mb-2 text-sm text-gray-500 font-medium">
41952                                                                                    <a href="https://meiner.de/fmv_de/person/Tingxing-Wang-17218/" class="mb-2">
41953                                    T&iacute;ngxi&agrave;ng W&aacute;ng                                                                    </a>
41954                                                                                                                                    </div>
41955                                <a class="product-item-link" href="https://meiner.de/fmv_de/pragmatischer-neokonfuzianismus-17216">
41956                    Pragmatischer Neokonfuzianismus                </a>
41957                            </div>
41958
41959            <div x-data="initEditionText_17429()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
41960                <!-- Marketing short text -->
41961                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
41962                </div>
41963            </div>
41964
41965                            <div class="py-1 grid  mb-4 ">
41966                    
41967                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":17429,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":17429,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"17398":"1","18166":"1"},"childProductsAlertStatus":{"17398":"0","18166":"0"},"indexMapping":{"163:11":17398,"163:8":18166},"availabilityMessages":{"17398":"Lieferbar innerhalb von 3-5 Tagen","18166":"Download sofort  verf\u00fcgbar"},"openAccess":{"17429":{"status":0},"17398":{"status":0},"18166":{"status":0}}},"availabilityMessages":{"17398":"Lieferbar innerhalb von 3-5 Tagen","18166":"Download sofort  verf\u00fcgbar"},"openAccess":{"17429":{"status":0},"17398":{"status":0},"18166":{"status":0}}}'>
41968        <template x-if="containerVisible">
41969                            <!-- Popup Trigger -->
41970                <div>
41971                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
41972                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
41973                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
41974  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
41975<title>bell</title></svg>
41976</span>
41977                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
41978
41979                    <!-- Popup Modal -->
41980                    <template x-if="showModal">
41981                        <template x-teleport=".page-wrapper">
41982                            <div x-cloak class="fixed inset-0 flex items-center justify-center
41983                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
41984                                <div class="relative bg-white rounded-lg shadow-xl
41985                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
41986                                    <div class="p-6">
41987                                        <!-- Subscription Form for Popup -->
41988                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
41989                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
41990                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
41991                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
41992
41993                                            <div class="flex flex-col gap-3">
41994                                                <div class="flex-grow grow">
41995                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
41996                                                        shadow-xs focus:outline-none focus:outline-hidden
41997                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
41998                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
41999                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
42000                                                </div>
42001                                                <input type="hidden" name="product_id" :value="currentProductId">
42002                                                <input type="hidden" name="type" value="email">
42003
42004                                                
42005                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
42006
42007                                                <div class="amxnotif_guest_action">
42008                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
42009                                                        rounded-md focus:outline-none
42010                                                        focus:outline-hidden focus:ring-2
42011                                                        focus:ring-offset-2 disabled:opacity-50
42012                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
42013                                                        Benachrichtigen                                                    </button>
42014                                                </div>
42015                                            </div>
42016
42017                                                                                            <div class="flex items-start pt-2">
42018                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
42019                                                        text-blue-600 border-gray-300 rounded-sm">
42020                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
42021                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
42022                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
42023                                                </div>
42024                                                                                    </form>
42025                                    </div>
42026
42027                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
42028                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
42029                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
42030  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
42031<title>x</title></svg>
42032                                    </button>
42033                                </div>
42034                            </div>
42035                        </template>
42036                    </template>
42037                </div>
42038                    </template>
42039    </div>
42040
42041<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_17429" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":17429,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"17398":"1","18166":"1"},"childProductsAlertStatus":{"17398":"0","18166":"0"},"indexMapping":"{\u0022163:11\u0022:17398,\u0022163:8\u0022:18166}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":17429,"availabilityMessages":{"17398":"Lieferbar innerhalb von 3-5 Tagen","18166":"Download sofort  verf\u00fcgbar"},"openAccess":{"17429":{"status":0},"17398":{"status":0},"18166":{"status":0}}}'>
42042    
42043    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
42044        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
42045        <span x-html="optionsLabelText"></span>
42046    </p>
42047</div>                </div>
42048            
42049                                
42049<script>
42050        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
42051            try {
42052                const attributes = (config && config.attributes) ? config.attributes : null;
42053                if (!attributes) return [];
42054                let attr = null;
42055                if (Array.isArray(attributes)) {
42056                    for (let i = 0; i < attributes.length; i++) {
42057                        const a = attributes[i];
42058                        if (a && a.id == attrId) {
42059                            attr = a;
42060                            break;
42061                        }
42062                    }
42063                } else {
42064                    attr = attributes[attrId];
42065                }
42066                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
42067            } catch (e) {
42068                return [];
42069            }
42070        };
42071
42072        function initConfigurableSwatchOptions_17429() {
42073            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"11","label":"Gebunden","products":["17398"]},{"id":"8","label":"PDF","products":["18166"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"17398":{"baseOldPrice":{"amount":69.158877504673},"oldPrice":{"amount":74},"basePrice":{"amount":69.158877504673},"finalPrice":{"amount":74},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"18166":{"baseOldPrice":{"amount":51.392522364486},"oldPrice":{"amount":54.99},"basePrice":{"amount":51.392522364486},"finalPrice":{"amount":54.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":51.392522364486},"oldPrice":{"amount":54.99},"basePrice":{"amount":51.392522364486},"finalPrice":{"amount":54.99},"isApproxPrice":null},"productId":"17429","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"17398":{"163":"11"},"18166":{"163":"8"}},"salable":{"163":{"11":["17398"],"8":["18166"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"17398":"004587","18166":"004588"},"output":{"17398":"Gebunden","18166":"PDF"},"original_name":{"17398":"","18166":""},"openaccess_license_link":{"17398":"","18166":""},"openaccess_license_name":{"17398":"","18166":""},"openaccess_external_link":{"17398":"","18166":""},"gpsr_safety_info":{"17398":"","18166":""},"description":{"17398":"Innerhalb der vielf\u00e4ltig ausdifferenzierten konfuzianischen Philosophie des 16. Jahrhunderts bezieht W\u00e1ng T\u00edngxi\u00e0ng (1474\u20131544) eine markante Position. Seit dem 11. Jahrhundert hatte das konfuzianische Denken eine Systematik entwickelt, deren konsistente Terminologie und klassische Bez\u00fcge in den Bereichen Ethik, Kosmologie und Erkenntnistheorie eine breite Produktion von sich aufeinander beziehenden Beitr\u00e4gen hervorgebracht hatten. <br\/><br\/>Dieser komplexe Diskurs bewegte sich in einem Netzwerk von philosophischen Positionen, die von zeitgen\u00f6ssischen Denkern vertreten wurden und deren Unterschiede in der Wahl der klassischen Referenzen bestehen. W\u00e1ng T\u00edngxi\u00e0ng lehnt dabei das im Pr\u00fcfungssystem zum Kanon erhobene Denken eines Zh\u016b X\u012b (1130\u20131200) genauso ab, wie er sich gegen die Theorien seines einflussreicheren Zeitgenossen W\u00e1ng Y\u00e1ngm\u00edng (1472\u20131529) stellt. Stattdessen bezieht er sich f\u00fcr seine kosmologischen Vorstellungen explizit auf Zh\u0101ng Z\u00e0i (1020\u20131077) und f\u00fcr seine Positionen zu Erkenntnis und Handlung implizit auf X\u00fanz\u01d0 (ca. 310\u2013ca. 239). W\u00e1ng T\u00edngxi\u00e0ng geht von einer ausschlie\u00dflich durch die dynamische Kraft der Materie entstandenen Welt aus, deren Erkenntnis dem Menschen durch einen auf Erfahrung gest\u00fctzten Austausch mit der physischen Welt m\u00f6glich wird. Das Ziel einer durch die konfuzi
42073anische Ethik gepr\u00e4gten Gesellschaft erreicht der Mensch dabei durch ein praxisorientiertes Handeln. <br\/><br\/>F\u00fcr den vorliegenden Band wurden ausgew\u00e4hlte Texte \u00fcbersetzt, die sich durch eine thematische Abgeschlossenheit oder die diskursive Erl\u00e4uterung des eigenen Denkens im brieflichen Dialog auszeichnen, erg\u00e4nzt um vergleichende Ausz\u00fcge aus den beiden gr\u00f6\u00dferen Schriften W\u00e1ng T\u00edngxi\u00e0ngs.","18166":"Innerhalb der vielf\u00e4ltig ausdifferenzierten konfuzianischen Philosophie des 16. Jahrhunderts bezieht W\u00e1ng T\u00edngxi\u00e0ng (1474\u20131544) eine markante Position. Seit dem 11. Jahrhundert hatte das konfuzianische Denken eine Systematik entwickelt, deren konsistente Terminologie und klassische Bez\u00fcge in den Bereichen Ethik, Kosmologie und Erkenntnistheorie eine breite Produktion von sich aufeinander beziehenden Beitr\u00e4gen hervorgebracht hatten. <br\/><br\/>Dieser komplexe Diskurs bewegte sich in einem Netzwerk von philosophischen Positionen, die von zeitgen\u00f6ssischen Denkern vertreten wurden und deren Unterschiede in der Wahl der klassischen Referenzen bestehen. W\u00e1ng T\u00edngxi\u00e0ng lehnt dabei das im Pr\u00fcfungssystem zum Kanon erhobene Denken eines Zh\u016b X\u012b (1130\u20131200) genauso ab, wie er sich gegen die Theorien seines einflussreicheren Zeitgenossen W\u00e1ng Y\u00e1ngm\u00edng (1472\u20131529) stellt. Stattdessen bezieht er sich f\u00fcr seine kosmologischen Vorstellungen explizit auf Zh\u0101ng Z\u00e0i (1020\u20131077) und f\u00fcr seine Positionen zu Erkenntnis und Handlung implizit auf X\u00fanz\u01d0 (ca. 310\u2013ca. 239). W\u00e1ng T\u00edngxi\u00e0ng geht von einer ausschlie\u00dflich durch die dynamische Kraft der Materie entstandenen Welt aus, deren Erkenntnis dem Menschen durch einen auf Erfahrung gest\u00fctzten Austausch mit der physischen Welt m\u00f6glich wird. Das Ziel einer durch die konfuzianische Ethik gepr\u00e4gten Gesellschaft erreicht der Mensch dabei durch ein praxisorientiertes Handeln. <br\/><br\/>F\u00fcr den vorliegenden Band wurden ausgew\u00e4hlte Texte \u00fcbersetzt, die sich durch eine thematische Abgeschlossenheit oder die diskursive Erl\u00e4uterung des eigenen Denkens im brieflichen Dialog auszeichnen, erg\u00e4nzt um vergleichende Ausz\u00fcge aus den beiden gr\u00f6\u00dferen Schriften W\u00e1ng T\u00edngxi\u00e0ngs."},"doi":{"17398":"","18166":"10.28937\/978-3-7873-4588-5"},"isbn":{"17398":"978-3-7873-4587-8","18166":"978-3-7873-4588-5"},"marketing_short_text":{"17398":"Deutsche Erst\u00fcbersetzung eines wichtigen Textes des Neokonfuzianismus","18166":"Deutsche Erst\u00fcbersetzung eines wichtigen Textes des Neokonfuzianismus"},"recension_text":{"17398":"","18166":""},"language":{"17398":"","18166":""},"cover":{"17398":"Gebunden","18166":""},"pages":{"17398":"251 Seiten","18166":"251 Seiten"},"edition":{"17398":"","18166":"Unver\u00e4ndertes eBook der 1. Auflage von 2025"},"pod":{"17398":"Nein","18166":"Nein"},"copyright_year":{"17398":"","18166":""},"vlb_tix_link":{"17398":"https:\/\/neu.vlbtix.de\/products\/9783787345878?type=gtin","18166":""},"defaultValues":{"163":"11"}};
42074            const swatchConfig = {"163":{"11":{"type":"0","value":"Gebunden","label":"Gebunden"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
42075
42076            if (typeof window.amxnotif_wrap_attributes === 'function') {
42077                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
42078                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
42079            }
42080
42081            const configurableOptionsComponent = initConfigurableOptions(
42082                '17429',
42083                config
42084            );
42085            const swatchOptionsComponent = initSwatchOptions(
42086                swatchConfig
42087            );
42088
42089            // DWS - Configurable product preselect start
42090            const confProdPreSelect = () => {
42091                return {
42092                    preselectQuerystringItems() {
42093                        var data = {"id":"17398","output":"11"};
42094                        const urlQueryParams = new URLSearchParams(window.location.search);
42095
42096                                                this.$nextTick(() => {
42097                            setTimeout(() => {
42098                                const rootEl = this.$root || this.$el;
42099                                if (!rootEl) return;
42100
42101                                const applySelection = (attrCode, attrValue) => {
42102                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
42103
42104                                    const attributes = Object.values(this.optionConfig.attributes || {});
42105                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
42106
42107                                    if (targetAttr) {
42108                                        const attrId = String(targetAttr.id);
42109                                        const optionVal = String(attrValue);
42110
42111                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
42112
42113                                        if (inputEl) {
42114                                                                                        inputEl.click();
42115                                            inputEl.dispatchEvent(new Event('change', {
42116                                                bubbles: true
42117                                            }));
42118                                        } else {
42119                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
42120                                            if (selectEl) {
42121                                                selectEl.value = optionVal;
42122                                                selectEl.dispatchEvent(new Event('change', {
42123                                                    bubbles: true
42124                                                }));
42125                                            }
42126                                        }
42127
42128                                                                                this.changeOption(attrId, optionVal, false);
42129                                    }
42130                                };
42131
42132                                                                if (data && typeof data === 'object') {
42133                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
42134                                }
42135
42136                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
42137                                    if (attribute && attribute.code) {
42138                                        let optionValue = urlQueryParams.get(attribute.code);
42139                                        if (optionValue) {
42140                                            let optionId = false;
42141                                            const attributes = Object.values(this.optionConfig.attributes || {});
42142                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
42143
42144                                            let found = false;
42145                                            Object.values(targetAttr.options).map(option => {
42146                                                if (found === false && option.label === optionValue) {
42147                                                    optionId = option.id;
42148                                                    found = true;
42149                                                }
42150                                            });
42151
42152                                            const attrId = String(targetAttr.id);
42153                                            let optionVal = String(optionValue);
42154                                            if (found) {
42155                                                optionVal = String(optionId);
42156                                            }
42157
42158                                            applySelection(attribute.code, optionVal);
42159                                        }
42160                                    }
42161                                });
42162                            }, 100);
42163                        });
42164                    }
42165                }
42166            };
42167            // DWS - Configurable product preselect end
42168
42169            const result = Object.assign(
42170                configurableOptionsComponent,
42171                swatchOptionsComponent, {
42172                    productId: '17429',
42173                    productIndex: 0,
42174                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
42175                    showSwatches: false,
42176                    precalcOptions: {},
42177                    originalInit: configurableOptionsComponent.init,
42178                    init() {
42179                        try {
42180                            this.precalcOptions = {};
42181                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
42182                            this.preselectQuerystringItems();
42183                            if (Array.isArray(attrSource)) {
42184                                attrSource.forEach(attr => {
42185                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
42186                                });
42187                            } else if (attrSource && typeof attrSource === 'object') {
42188                                Object.keys(attrSource).forEach(id => {
42189                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
42190                                });
42191                            }
42192                        } catch (e) {
42193                            console.error('Pre-calc error:', e);
42194                        }
42195
42196                        if (typeof this.originalInit === 'function') {
42197                            this.originalInit();
42198                        }
42199
42200                        try {
42201                            this.initShowSwatchesIntersect();
42202                        } catch (e) {
42203                            console.error('intersect error:', e);
42204                        }
42205                    },
42206
42207                    updateGallery() {
42208                        if (!this.productIndex) return;
42209
42210                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
42211                                method: 'GET',
42212                                headers: {
42213                                    'Content-Type': 'application/json',
42214                                    'X-Requested-With': 'XMLHttpRequest'
42215                                }
42216                            })
42217                            .then(response => response.json())
42218                            .then(data => {
42219                                if (data && data.medium) {
42220                                    window.dispatchEvent(new CustomEvent("update-gallery-17429", {
42221                                        detail: data.medium
42222                                    }));
42223                                }
42224                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
42225                    },
42226
42227
42228                    initShowSwatchesIntersect() {
42229                        const observer = new IntersectionObserver(entries => {
42230                            if (entries[0].isIntersecting) {
42231                                this.showSwatches = true;
42232                                observer.disconnect();
42233                            }
42234                        }, {
42235                            rootMargin: '512px'
42236                        });
42237                        observer.observe(this.$el);
42238                    },
42239                    getOptions(attrId) {
42240                        return this.precalcOptions[attrId] || [];
42241                    },
42242                    getOptionsByAttrId() {
42243                        return this.getOptions(this.$el.dataset.attributeId);
42244                    },
42245                    _getItemId() {
42246                        if (this.item && this.item.id) return this.item.id;
42247                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
42248                    },
42249                    getSwatchOptionHtmlId() {
42250                        const itemId = this._getItemId();
42251                        return itemId ? this.$id(`attribute-option-17429-${itemId}`) : '';
42252                    },
42253                    getSwatchOptionHtmlIdGroup() {
42254                        const itemId = this._getItemId();
42255                        return itemId ? [`attribute-option-17429-${itemId}`] : [];
42256                    },
42257                    getAttributeSwatchData(attributeId) {
42258                        const data = Object.assign({}, this.swatchConfig[attributeId]);
42259                        if (data['additional_data']) {
42260                            try {
42261                                data['details'] = JSON.parse(data['additional_data']);
42262                            } catch (e) {
42263                                data['details'] = {};
42264                            }
42265                        }
42266                        return data;
42267                    },
42268                    getSwatchType(attributeId, optionId) {
42269                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
42270                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
42271                        }
42272                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
42273                            this.swatchConfig[attributeId].details.swatch_input_type :
42274                            "empty";
42275                        if (type === 'visual') {
42276                            const config = this.swatchConfig[attributeId];
42277                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
42278                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
42279                            }
42280                            // Fallback to first option type
42281                            for (const oId in config) {
42282                                if (config[oId] && typeof config[oId].type !== 'undefined') {
42283                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
42284                                }
42285                            }
42286                        }
42287                        return type;
42288                    },
42289                    mapSwatchTypeNumberToTypeCode(type) {
42290                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
42291                    },
42292                    isTextSwatch() {
42293                        const itemId = this._getItemId();
42294                        if (!this.$el || !itemId) return false;
42295                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
42296                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
42297                    },
42298
42299                    getSwatchText() {
42300                        const itemId = this._getItemId();
42301                        if (this.item) return this.item.label || '';
42302                        if (!this.$el || !itemId) return '';
42303                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
42304                        const options = attrId ? this.getOptions(attrId) : [];
42305                        const opt = options.find(o => o.id == itemId);
42306                        return opt ? opt.label : '';
42307                    },
42308                    getSwatchBackgroundStyle() {
42309                        const itemId = this._getItemId();
42310                        if (!this.$el || !itemId) return '';
42311                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
42312                        if (!attrId) return '';
42313                        const type = this.getSwatchType(attrId, itemId);
42314                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
42315                            this.swatchConfig[attrId][itemId] :
42316                            null;
42317                        if (!swatchData) return '';
42318                        if (type === "color") return 'background-color:' + swatchData.value;
42319                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
42320                        return '';
42321                    },
42322                    swatchOptionClasses() {
42323                        const itemId = this._getItemId();
42324                        if (!this.$el || !itemId) return {};
42325                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
42326                        return {
42327                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
42328                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
42329                            'w-6 h-6': !this.isTextSwatch()
42330                        }
42331                    },
42332
42333                    onFocusSwatchItem() {
42334                        const itemId = this._getItemId();
42335                        if (itemId) this.focusedLabel = itemId;
42336                    },
42337                    onChangeOption() {
42338                        const itemId = this._getItemId();
42339                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
42340                        if (attrId && itemId) this.changeOption(attrId, itemId);
42341                    },
42342                    changeOption(attributeId, value) {
42343                        if (value === '') {
42344                            return;
42345                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
42346                        } else {
42347                            this.selectedValues[attributeId] = value;
42348                        }
42349
42350                        this.findSimpleIndex();
42351                        this.findAllowedAttributeOptions();
42352                        this.updatePrices();
42353                        this.updateGallery();
42354
42355                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
42356                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
42357
42358                        const eventDetail = {
42359                            productId: this.productId,
42360                            optionId: attributeId,
42361                            value: value,
42362                            productIndex: this.productIndex || 0,
42363                            selectedValues: this.selectedValues,
42364                            candidates: candidates,
42365                            sourceElement: this.$el
42366                        };
42367
42368                        // Dispatch for Amasty
42369                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
42370                            detail: eventDetail
42371                        }));
42372
42373                        // Dispatch for Hyva listing
42374                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
42375                            detail: eventDetail
42376                        }));
42377                    },
42378
42379
42380                    clearOptionIfActive() {
42381                        const itemId = this._getItemId();
42382                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
42383                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
42384                            this.changeOption(attrId, '');
42385
42386                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
42387                            if (!input && this.$el?.querySelector) {
42388                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
42389                            }
42390                            if (!input && this.$el?.closest) {
42391                                const root = this.$el.closest('[data-product-id]') || this.$el;
42392                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
42393                            }
42394                            if (input) {
42395                                input.checked = false;
42396                            }
42397                        }
42398                    },
42399                    get optionIsEnabled() {
42400                        const itemId = this._getItemId();
42401                        if (!this.$el || !itemId) return true;
42402                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
42403                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
42404                        return !!allowedOptions.find(opt => opt.id == itemId);
42405                    },
42406                    get isSelected() {
42407                        const itemId = this._getItemId();
42408                        if (!this.$el || !itemId) return false;
42409                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
42410                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
42411                    },
42412                    get isSwatchRequired() {
42413                        if (!this.$el) return false;
42414                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
42415                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
42416                    },
42417                    focusedLabel: false,
42418                    activeTooltipItem: false,
42419                    tooltipPositionElement: false,
42420                    setActiveTooltipItem() {
42421                        const itemId = this._getItemId();
42422                        if (!this.$el || !itemId) return;
42423                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
42424                        this.activeTooltipItem = {
42425                            attribute: attrId,
42426                            item: itemId,
42427                            index: 0
42428                        };
42429                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
42430                    },
42431                    unsetActiveTooltipItem() {
42432                        this.activeTooltipItem = false;
42433                    }
42434                },
42435                confProdPreSelect()
42436            );
42437
42438            if (result.optionConfig && result.optionConfig.attributes) {
42439                const attributes = result.optionConfig.attributes;
42440                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
42441                    let source = attributes;
42442                    if (Array.isArray(attributes)) {
42443                        source = {};
42444                        attributes.forEach(attr => {
42445                            if (attr && attr.id) source[attr.id] = attr;
42446                        });
42447                    }
42448                    const values = Object.values(source);
42449                    const wrapper = Object.assign(values, source);
42450                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
42451                        value: true,
42452                        enumerable: false
42453                    });
42454                    result.optionConfig.attributes = wrapper;
42455                }
42456            }
42457
42458            return result;
42459        }
42460
42461        window.addEventListener('alpine:init', () => {
42462            Alpine.data('initConfigurableSwatchOptions_17429', initConfigurableSwatchOptions_17429);
42463        }, {
42464            once: true
42465        });
42466    </script>
42466
42467    
42468    <div x-data="initConfigurableSwatchOptions_17429" x-defer="intersect">
42469        <div class="pagebuilder-home-hidden">
42470                                            
42471                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
42472                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
42473                        <template x-if="showSwatches">
42474                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-17429-163" role="radiogroup" aria-label="Einband">
42475                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
42476                                    <div :data-option-id="item.id" style="display: contents">
42477                                        <div x-id="getSwatchOptionHtmlIdGroup">
42478    <template x-if="optionIsEnabled">
42479        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
42479self="unsetActiveTooltipItem">
42480            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-17429-163">
42481            <div>
42482                <template x-if="isTextSwatch">
42483                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
42484                </template>
42485                <template x-if="!optionIsActive(163, item.id)">
42486                    <div>
42487                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
42488                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
42489                        </svg>
42490                    </div>
42491                </template>
42492            </div>
42493        </label>
42494    </template>
42495</div>                                    </div>
42496                                </template>
42497                            </div>
42498                        </template>
42499                    </div>
42500                </div>
42501                    </div>
42502    </div>
42503            
42504                                                <div class="meta py-4 pagebuilder-home-hidden">
42505                <div x-data="initMarketingShortText_17429()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
42506                    <!-- Marketing short text -->
42507                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
42508                    </div>
42509
42510                    <!-- Short description -->
42511                                                                <div class="short-description">
42512                            Innerhalb der vielf&auml;ltig ausdifferenzierten konfuzianischen Philosophie des 16. Jahrhunderts bezieht W&aacute;ng T&iacute;ngxi&agrave;ng (1474&ndash;1544) eine markante Position. Seit dem 11. Jahrhundert hatte das ...                            <a href="https://meiner.de/fmv_de/pragmatischer-neokonfuzianismus-17216" class="underline">mehr</a>
42513                        </div>
42514                                    </div>
42515
42516                <!-- Series  -->
42517                                    <div class="mb-1">
42518                        <span class="sr-only">Reihe:</span>
42519                        <a href="https://meiner.de/fmv_de/programm/reihen/sino-philosophica">
42520                            <span>Sino-philosophica</span>
42521                        </a>
42522                                                    3                                            </div>
42523                
42524                
42525                                                    <div class="mb-1">
42526                        <span x-data="initEditionText_17429()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
42527                            <!-- Marketing short text -->
42528                            <span class="edition-text" x-html="editionText"></span>&nbsp;2025, 251 Seiten                        </span>
42529                    </div>
42530                
42531                            </div>
42532            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
42533                
42534                <div class="justify-end" x-data="initPriceBox()" @update-prices-17429.window="updatePrice($event.detail);">
42535                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="17429" data-price-box="product-id-17429"><span class="normal-price">
42536    <span x-data x-id="['product\u002Dprice\u002D17429']" class="price-container price-final_price tax weee">
42537            <span class="price-label">Ab</span>
42538                <span class="approx-price">ca. </span>
42539        <span :id="$id('product\u002Dprice\u002D17429')" data-price-amount="54.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">54,99&nbsp;&euro;</span></span>
42540        </span>
42541</span>
42542
42543
42544</div>                </div>
42545
42546                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
42547                                            <div class="open-access-container open-access-container-17429                    flex mt-4 ml-auto sm:mt-0 hidden">
42548                            <div class="text-gray-700">
42549                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
42550                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
42551                                        Kostenlos online lesen                                    </a>
42552                                </button>
42553                            </div>
42554                        </div>
42555                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Pragmatischer Neokonfuzianismus" aria-label="In den Warenkorb Pragmatischer Neokonfuzianismus" data-addto="cart">
42556                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
42557  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
425570 014 0z"></path>
42558</svg>
42559                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
42560                                        In den Warenkorb                                    </span>
42561                                </button>
42562                                                                                                                    
42563<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(17429)" aria-label="Zur Wunschliste hinzuf&uuml;gen Pragmatischer Neokonfuzianismus" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
42564    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
42565  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
42566</svg>
42567</button>
42568                                    </div>
42569            </div>
42570        </div>
42571        
42571<script>
42572            function initMarketingShortText_17429() {
42573                var marketingShortTextConfig = {};
42574                if (typeof window.initConfigurableSwatchOptions_17429 === "function") {
42575                    var fullConfig = window.initConfigurableSwatchOptions_17429().optionConfig
42576                    var marketingShortTextConfig = fullConfig.marketing_short_text;
42577                }
42578                return {
42579                    marketingShortText: '',
42580                    config: marketingShortTextConfig,
42581                    productId: '17429',
42582                    getMarketingShortText(detail) {
42583                        this.marketingShortText = detail.productIndex ?
42584                            this.config[detail.productIndex] :
42585                            null;
42586                    },
42587                    eventListeners: {
42588                        ['@listing-configurable-selection-changed.window'](event) {
42589                            if (this.productId == event.detail.productId) {
42590                                this.getMarketingShortText(event.detail);
42591                            }
42592
42593                        }
42594                    }
42595                }
42596            }
42597
42598            function initEditionText_17429() {
42599                var editionTextConfig = {};
42600                if (typeof window.initConfigurableSwatchOptions_17429 === "function") {
42601                    var fullConfig = window.initConfigurableSwatchOptions_17429().optionConfig
42602                    var editionTextConfig = fullConfig.edition;
42603                }
42604                return {
42605                    editionText: '',
42606                    config: editionTextConfig,
42607                    productId: '17429',
42608                    getEditionText(detail) {
42609                        this.editionText = detail.productIndex ?
42610                            this.config[detail.productIndex] :
42611                            null;
42612                    },
42613                    eventListeners: {
42614                        ['@listing-configurable-selection-changed.window'](event) {
42615                            if (this.productId == event.detail.productId) {
42616                                this.getEditionText(event.detail);
42617                            }
42618
42619                        }
42620                    }
42621                }
42622            }
42623        </script>
42623
42624                    </form>
42625                            
42626    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/4381/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk16052">
42627        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="4381">
42628                                    <a href="https://meiner.de/fmv_de/kleine-schriften-zum-a-groa-en-lernena-16052" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
42629            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-4381.window="$el.src = $event.detail" alt="Kleine Schriften zum &raquo;Gro&szlig;en Lernen&laquo;" title="Kleine Schriften zum &raquo;Gro&szlig;en Lernen&laquo;" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787344185_3.jpg" :style="{
42630                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
42631                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
42632            }">
42633                    </a>
42634        <div class="product-info flex flex-col flex-grow ">
42635                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
42636                                    <div class="mb-2 text-sm text-gray-500 font-medium">
42637                                                                                    <a href="https://meiner.de/fmv_de/person/Yangming-Wang-13617/" class="mb-2">
42638                                    Y&aacute;ngm&iacute;ng W&aacute;ng                                                                    </a>
42639                                                                                                                                    </div>
42640                                <a class="product-item-link" href="https://meiner.de/fmv_de/kleine-schriften-zum-a-groa-en-lernena-16052">
42641                    Kleine Schriften zum &raquo;Gro&szlig;en Lernen&laquo;                </a>
42642                            </div>
42643
42644            <div x-data="initEditionText_4381()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
42645                <!-- Marketing short text -->
42646                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
42647                </div>
42648            </div>
42649
42650                            <div class="py-1 grid  mb-4 ">
42651                    
42652                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":4381,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":4381,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"4352":"1","9996":"1"},"childProductsAlertStatus":{"4352":"0","9996":"0"},"indexMapping":{"163:11":4352,"163:8":9996},"availabilityMessages":{"4352":"Lieferbar innerhalb von 3-5 Tagen","9996":"Download sofort  verf\u00fcgbar"},"openAccess":{"4381":{"status":0},"4352":{"status":0},"9996":{"status":0}}},"availabilityMessages":{"4352":"Lieferbar innerhalb von 3-5 Tagen","9996":"Download sofort  verf\u00fcgbar"},"openAccess":{"4381":{"status":0},"4352":{"status":0},"9996":{"status":0}}}'>
42653        <template x-if="containerVisible">
42654                            <!-- Popup Trigger -->
42655                <div>
42656                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
42657                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
42658                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
42659  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
42660<title>bell</title></svg>
42661</span>
42662                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
42663
42664                    <!-- Popup Modal -->
42665                    <template x-if="showModal">
42666                        <template x-teleport=".page-wrapper">
42667                            <div x-cloak class="fixed inset-0 flex items-center justify-center
42668                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
42669                                <div class="relative bg-white rounded-lg shadow-xl
42670                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
42671                                    <div class="p-6">
42672                                        <!-- Subscription Form for Popup -->
42673                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
42674                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
42675                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
42676                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
42677
42678                                            <div class="flex flex-col gap-3">
42679                                                <div class="flex-grow grow">
42680                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
42681                                                        shadow-xs focus:outline-none focus:outline-hidden
42682                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
42683                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
42684                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
42685                                                </div>
42686                                                <input type="hidden" name="product_id" :value="currentProductId">
42687                                                <input type="hidden" name="type" value="email">
42688
42689                                                
42690                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
42691
42692                                                <div class="amxnotif_guest_action">
42693                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
42694                                                        rounded-md focus:outline-none
42695                                                        focus:outline-hidden focus:ring-2
42696                                                        focus:ring-offset-2 disabled:opacity-50
42697                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
42698                                                        Benachrichtigen                                                    </button>
42699                                                </div>
42700                                            </div>
42701
42702                                                                                            <div class="flex items-start pt-2">
42703                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
42704                                                        text-blue-600 border-gray-300 rounded-sm">
42705                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
42706                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
42707                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
42708                                                </div>
42709                                                                                    </form>
42710                                    </div>
42711
42712                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
42713                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
42714                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
42715  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
42716<title>x</title></svg>
42717                                    </button>
42718                                </div>
42719                            </div>
42720                        </template>
42721                    </template>
42722                </div>
42723                    </template>
42724    </div>
42725
42726<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_4381" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":4381,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"4352":"1","9996":"1"},"childProductsAlertStatus":{"4352":"0","9996":"0"},"indexMapping":"{\u0022163:11\u0022:4352,\u0022163:8\u0022:9996}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":4381,"availabilityMessages":{"4352":"Lieferbar innerhalb von 3-5 Tagen","9996":"Download sofort  verf\u00fcgbar"},"openAccess":{"4381":{"status":0},"4352":{"status":0},"9996":{"status":0}}}'>
42727    
42728    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
42729        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
42730        <span x-html="optionsLabelText"></span>
42731    </p>
42732</div>                </div>
42733            
42734                                
42734<script>
42735        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
42736            try {
42737                const attributes = (config && config.attributes) ? config.attributes : null;
42738                if (!attributes) return [];
42739                let attr = null;
42740                if (Array.isArray(attributes)) {
42741                    for (let i = 0; i < attributes.length; i++) {
42742                        const a = attributes[i];
42743                        if (a && a.id == attrId) {
42744                            attr = a;
42745                            break;
42746                        }
42747                    }
42748                } else {
42749                    attr = attributes[attrId];
42750                }
42751                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
42752            } catch (e) {
42753                return [];
42754            }
42755        };
42756
42757        function initConfigurableSwatchOptions_4381() {
42758            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"11","label":"Gebunden","products":["4352"]},{"id":"8","label":"PDF","products":["9996"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"4352":{"baseOldPrice":{"amount":97.196260682243},"oldPrice":{"amount":104},"basePrice":{"amount":97.196260682243},"finalPrice":{"amount":104},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"9996":{"baseOldPrice":{"amount":72.88784946729},"oldPrice":{"amount":77.99},"basePrice":{"amount":72.88784946729},"finalPrice":{"amount":77.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":72.88784946729},"oldPrice":{"amount":77.99},"basePrice":{"amount":72.88784946729},"finalPrice":{"amount":77.99},"isApproxPrice":null},"productId":"4381","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"4352":{"163":"11"},"9996":{"163":"8"}},"salable":{"163":{"11":["4352"],"8":["9996"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"4352":"004417","9996":"004418"},"output":{"4352":"Gebunden","9996":"PDF"},"original_name":{"4352":"","9996":""},"openaccess_license_link":{"4352":"","9996":""},"openaccess_license_name":{"4352":"","9996":""},"openaccess_external_link":{"4352":"","9996":""},"gpsr_safety_info":{"4352":"","9996":""},"description":{"4352":"W\u00e1ng Y\u00e1ngm\u00edng (1472\u20131529) ist einer der wichtigsten Denker der chinesischen Kaiserzeit. Im Fokus seines Denkens steht das spontane Mitgef\u00fchl mit Mitmensch und Umwelt, in dem er den Grund f\u00fcr die M\u00f6glichkeit menschlicher Moral erkennt. <br\/><br\/>W\u00e4hrend er dieses moralische Gef\u00fchl mit einem Ausdruck de
42758s klassischen Philosophen Menzius als \u00bbechtes Wissen\u00ab (li\u00e1ng zh\u012b) bezeichnet, ist es ein anderer kanonischer Text, dem die Schl\u00fcsselrolle bei der Ausformulierung seiner Lehre zukommt: Das \u00bbGro\u00dfe Lernen\u00ab, eines der \u00bbVier B\u00fccher\u00ab des Konfuzianismus, schl\u00e4gt einen Bogen von der \u00dcbung des Geistes zu moralischer Selbstsorge und herrschaftlicher F\u00fcrsorge.<br\/><br\/>Dieser kurze Text stand schon im Zentrum des Bildungsprogramms des Zh\u016b X\u012b, der daraus die Auffassung ableitete, im Studium m\u00fcsse man sich ausf\u00fchrlich mit den Dingen (und Texten) befassen, um die darin aufscheinende Ordnung der Welt zu erkennen. Es ist gegen diese Auffassung, dass W\u00e1ng Y\u00e1ngm\u00edng das \u00bbGro\u00dfe Lernen\u00ab als eine Anleitung zur Introspektion der eigenen moralischen Intuition deutet und von jedem Bezug auf die \u00e4u\u00dfere Wirklichkeit l\u00f6st. <br\/><br\/>Der vorliegende Band versammelt sp\u00e4te Texte W\u00e1ng Y\u00e1ngm\u00edngs. Im Mittelpunkt stehen seine \u00bbFragen zum \u203aGro\u00dfen Lernen\u2039\u00ab, einer der wichtigsten Grundlagentexte der nach ihm benannten Denkschule. Eine Einleitung, zahlreiche Anmerkungen und mehrere Anh\u00e4nge erlauben die philosophische und geistesgeschichtliche Einordnung der \u00fcbersetzten Texte.","9996":"W\u00e1ng Y\u00e1ngm\u00edng (1472\u20131529) ist einer der wichtigsten Denker der chinesischen Kaiserzeit. Im Fokus seines Denkens steht das spontane Mitgef\u00fchl mit Mitmensch und Umwelt, in dem er den Grund f\u00fcr die M\u00f6glichkeit menschlicher Moral erkennt. <br\/><br\/>W\u00e4hrend er dieses moralische Gef\u00fchl mit einem Ausdruck de
42758s klassischen Philosophen Menzius als \u00bbechtes Wissen\u00ab (li\u00e1ng zh\u012b) bezeichnet, ist es ein anderer kanonischer Text, dem die Schl\u00fcsselrolle bei der Ausformulierung seiner Lehre zukommt: Das \u00bbGro\u00dfe Lernen\u00ab, eines der \u00bbVier B\u00fccher\u00ab des Konfuzianismus, schl\u00e4gt einen Bogen von der \u00dcbung des Geistes zu moralischer Selbstsorge und herrschaftlicher F\u00fcrsorge.<br\/><br\/>Dieser kurze Text stand schon im Zentrum des Bildungsprogramms des Zh\u016b X\u012b, der daraus die Auffassung ableitete, im Studium m\u00fcsse man sich ausf\u00fchrlich mit den Dingen (und Texten) befassen, um die darin aufscheinende Ordnung der Welt zu erkennen. Es ist gegen diese Auffassung, dass W\u00e1ng Y\u00e1ngm\u00edng das \u00bbGro\u00dfe Lernen\u00ab als eine Anleitung zur Introspektion der eigenen moralischen Intuition deutet und von jedem Bezug auf die \u00e4u\u00dfere Wirklichkeit l\u00f6st. <br\/><br\/>Der vorliegende Band versammelt sp\u00e4te Texte W\u00e1ng Y\u00e1ngm\u00edngs. Im Mittelpunkt stehen seine \u00bbFragen zum \u203aGro\u00dfen Lernen\u2039\u00ab, einer der wichtigsten Grundlagentexte der nach ihm benannten Denkschule. Eine Einleitung, zahlreiche Anmerkungen und mehrere Anh\u00e4nge erlauben die philosophische und geistesgeschichtliche Einordnung der \u00fcbersetzten Texte."},"doi":{"4352":"","9996":"10.28937\/978-3-7873-4418-5"},"isbn":{"4352":"978-3-7873-4417-8","9996":"978-3-7873-4418-5"},"marketing_short_text":{"4352":"","9996":""},"recension_text":{"4352":"","9996":""},"language":{"4352":"","9996":""},"cover":{"4352":"Gebunden","9996":""},"pages":{"4352":"365 Seiten","9996":"365 Seiten"},"edition":{"4352":"","9996":"Unver\u00e4ndertes eBook der 1. Auflage von 2024"},"pod":{"4352":"Nein","9996":"Nein"},"copyright_year":{"4352":"","9996":""},"vlb_tix_link":{"4352":"https:\/\/neu.vlbtix.de\/products\/9783787344178?type=gtin","9996":""},"defaultValues":{"163":"11"}};
42759            const swatchConfig = {"163":{"11":{"type":"0","value":"Gebunden","label":"Gebunden"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
42760
42761            if (typeof window.amxnotif_wrap_attributes === 'function') {
42762                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
42763                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
42764            }
42765
42766            const configurableOptionsComponent = initConfigurableOptions(
42767                '4381',
42768                config
42769            );
42770            const swatchOptionsComponent = initSwatchOptions(
42771                swatchConfig
42772            );
42773
42774            // DWS - Configurable product preselect start
42775            const confProdPreSelect = () => {
42776                return {
42777                    preselectQuerystringItems() {
42778                        var data = {"id":"4352","output":"11"};
42779                        const urlQueryParams = new URLSearchParams(window.location.search);
42780
42781                                                this.$nextTick(() => {
42782                            setTimeout(() => {
42783                                const rootEl = this.$root || this.$el;
42784                                if (!rootEl) return;
42785
42786                                const applySelection = (attrCode, attrValue) => {
42787                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
42788
42789                                    const attributes = Object.values(this.optionConfig.attributes || {});
42790                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
42791
42792                                    if (targetAttr) {
42793                                        const attrId = String(targetAttr.id);
42794                                        const optionVal = String(attrValue);
42795
42796                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
42797
42798                                        if (inputEl) {
42799                                                                                        inputEl.click();
42800                                            inputEl.dispatchEvent(new Event('change', {
42801                                                bubbles: true
42802                                            }));
42803                                        } else {
42804                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
42805                                            if (selectEl) {
42806                                                selectEl.value = optionVal;
42807                                                selectEl.dispatchEvent(new Event('change', {
42808                                                    bubbles: true
42809                                                }));
42810                                            }
42811                                        }
42812
42813                                                                                this.changeOption(attrId, optionVal, false);
42814                                    }
42815                                };
42816
42817                                                                if (data && typeof data === 'object') {
42818                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
42819                                }
42820
42821                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
42822                                    if (attribute && attribute.code) {
42823                                        let optionValue = urlQueryParams.get(attribute.code);
42824                                        if (optionValue) {
42825                                            let optionId = false;
42826                                            const attributes = Object.values(this.optionConfig.attributes || {});
42827                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
42828
42829                                            let found = false;
42830                                            Object.values(targetAttr.options).map(option => {
42831                                                if (found === false && option.label === optionValue) {
42832                                                    optionId = option.id;
42833                                                    found = true;
42834                                                }
42835                                            });
42836
42837                                            const attrId = String(targetAttr.id);
42838                                            let optionVal = String(optionValue);
42839                                            if (found) {
42840                                                optionVal = String(optionId);
42841                                            }
42842
42843                                            applySelection(attribute.code, optionVal);
42844                                        }
42845                                    }
42846                                });
42847                            }, 100);
42848                        });
42849                    }
42850                }
42851            };
42852            // DWS - Configurable product preselect end
42853
42854            const result = Object.assign(
42855                configurableOptionsComponent,
42856                swatchOptionsComponent, {
42857                    productId: '4381',
42858                    productIndex: 0,
42859                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
42860                    showSwatches: false,
42861                    precalcOptions: {},
42862                    originalInit: configurableOptionsComponent.init,
42863                    init() {
42864                        try {
42865                            this.precalcOptions = {};
42866                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
42867                            this.preselectQuerystringItems();
42868                            if (Array.isArray(attrSource)) {
42869                                attrSource.forEach(attr => {
42870                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
42871                                });
42872                            } else if (attrSource && typeof attrSource === 'object') {
42873                                Object.keys(attrSource).forEach(id => {
42874                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
42875                                });
42876                            }
42877                        } catch (e) {
42878                            console.error('Pre-calc error:', e);
42879                        }
42880
42881                        if (typeof this.originalInit === 'function') {
42882                            this.originalInit();
42883                        }
42884
42885                        try {
42886                            this.initShowSwatchesIntersect();
42887                        } catch (e) {
42888                            console.error('intersect error:', e);
42889                        }
42890                    },
42891
42892                    updateGallery() {
42893                        if (!this.productIndex) return;
42894
42895                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
42896                                method: 'GET',
42897                                headers: {
42898                                    'Content-Type': 'application/json',
42899                                    'X-Requested-With': 'XMLHttpRequest'
42900                                }
42901                            })
42902                            .then(response => response.json())
42903                            .then(data => {
42904                                if (data && data.medium) {
42905                                    window.dispatchEvent(new CustomEvent("update-gallery-4381", {
42906                                        detail: data.medium
42907                                    }));
42908                                }
42909                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
42910                    },
42911
42912
42913                    initShowSwatchesIntersect() {
42914                        const observer = new IntersectionObserver(entries => {
42915                            if (entries[0].isIntersecting) {
42916                                this.showSwatches = true;
42917                                observer.disconnect();
42918                            }
42919                        }, {
42920                            rootMargin: '512px'
42921                        });
42922                        observer.observe(this.$el);
42923                    },
42924                    getOptions(attrId) {
42925                        return this.precalcOptions[attrId] || [];
42926                    },
42927                    getOptionsByAttrId() {
42928                        return this.getOptions(this.$el.dataset.attributeId);
42929                    },
42930                    _getItemId() {
42931                        if (this.item && this.item.id) return this.item.id;
42932                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
42933                    },
42934                    getSwatchOptionHtmlId() {
42935                        const itemId = this._getItemId();
42936                        return itemId ? this.$id(`attribute-option-4381-${itemId}`) : '';
42937                    },
42938                    getSwatchOptionHtmlIdGroup() {
42939                        const itemId = this._getItemId();
42940                        return itemId ? [`attribute-option-4381-${itemId}`] : [];
42941                    },
42942                    getAttributeSwatchData(attributeId) {
42943                        const data = Object.assign({}, this.swatchConfig[attributeId]);
42944                        if (data['additional_data']) {
42945                            try {
42946                                data['details'] = JSON.parse(data['additional_data']);
42947                            } catch (e) {
42948                                data['details'] = {};
42949                            }
42950                        }
42951                        return data;
42952                    },
42953                    getSwatchType(attributeId, optionId) {
42954                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
42955                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
42956                        }
42957                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
42958                            this.swatchConfig[attributeId].details.swatch_input_type :
42959                            "empty";
42960                        if (type === 'visual') {
42961                            const config = this.swatchConfig[attributeId];
42962                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
42963                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
42964                            }
42965                            // Fallback to first option type
42966                            for (const oId in config) {
42967                                if (config[oId] && typeof config[oId].type !== 'undefined') {
42968                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
42969                                }
42970                            }
42971                        }
42972                        return type;
42973                    },
42974                    mapSwatchTypeNumberToTypeCode(type) {
42975                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
42976                    },
42977                    isTextSwatch() {
42978                        const itemId = this._getItemId();
42979                        if (!this.$el || !itemId) return false;
42980                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
42981                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
42982                    },
42983
42984                    getSwatchText() {
42985                        const itemId = this._getItemId();
42986                        if (this.item) return this.item.label || '';
42987                        if (!this.$el || !itemId) return '';
42988                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
42989                        const options = attrId ? this.getOptions(attrId) : [];
42990                        const opt = options.find(o => o.id == itemId);
42991                        return opt ? opt.label : '';
42992                    },
42993                    getSwatchBackgroundStyle() {
42994                        const itemId = this._getItemId();
42995                        if (!this.$el || !itemId) return '';
42996                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
42997                        if (!attrId) return '';
42998                        const type = this.getSwatchType(attrId, itemId);
42999                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
43000                            this.swatchConfig[attrId][itemId] :
43001                            null;
43002                        if (!swatchData) return '';
43003                        if (type === "color") return 'background-color:' + swatchData.value;
43004                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
43005                        return '';
43006                    },
43007                    swatchOptionClasses() {
43008                        const itemId = this._getItemId();
43009                        if (!this.$el || !itemId) return {};
43010                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
43011                        return {
43012                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
43013                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
43014                            'w-6 h-6': !this.isTextSwatch()
43015                        }
43016                    },
43017
43018                    onFocusSwatchItem() {
43019                        const itemId = this._getItemId();
43020                        if (itemId) this.focusedLabel = itemId;
43021                    },
43022                    onChangeOption() {
43023                        const itemId = this._getItemId();
43024                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
43025                        if (attrId && itemId) this.changeOption(attrId, itemId);
43026                    },
43027                    changeOption(attributeId, value) {
43028                        if (value === '') {
43029                            return;
43030                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
43031                        } else {
43032                            this.selectedValues[attributeId] = value;
43033                        }
43034
43035                        this.findSimpleIndex();
43036                        this.findAllowedAttributeOptions();
43037                        this.updatePrices();
43038                        this.updateGallery();
43039
43040                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
43041                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
43042
43043                        const eventDetail = {
43044                            productId: this.productId,
43045                            optionId: attributeId,
43046                            value: value,
43047                            productIndex: this.productIndex || 0,
43048                            selectedValues: this.selectedValues,
43049                            candidates: candidates,
43050                            sourceElement: this.$el
43051                        };
43052
43053                        // Dispatch for Amasty
43054                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
43055                            detail: eventDetail
43056                        }));
43057
43058                        // Dispatch for Hyva listing
43059                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
43060                            detail: eventDetail
43061                        }));
43062                    },
43063
43064
43065                    clearOptionIfActive() {
43066                        const itemId = this._getItemId();
43067                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
43068                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
43069                            this.changeOption(attrId, '');
43070
43071                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
43072                            if (!input && this.$el?.querySelector) {
43073                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
43074                            }
43075                            if (!input && this.$el?.closest) {
43076                                const root = this.$el.closest('[data-product-id]') || this.$el;
43077                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
43078                            }
43079                            if (input) {
43080                                input.checked = false;
43081                            }
43082                        }
43083                    },
43084                    get optionIsEnabled() {
43085                        const itemId = this._getItemId();
43086                        if (!this.$el || !itemId) return true;
43087                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
43088                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
43089                        return !!allowedOptions.find(opt => opt.id == itemId);
43090                    },
43091                    get isSelected() {
43092                        const itemId = this._getItemId();
43093                        if (!this.$el || !itemId) return false;
43094                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
43095                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
43096                    },
43097                    get isSwatchRequired() {
43098                        if (!this.$el) return false;
43099                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
43100                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
43101                    },
43102                    focusedLabel: false,
43103                    activeTooltipItem: false,
43104                    tooltipPositionElement: false,
43105                    setActiveTooltipItem() {
43106                        const itemId = this._getItemId();
43107                        if (!this.$el || !itemId) return;
43108                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
43109                        this.activeTooltipItem = {
43110                            attribute: attrId,
43111                            item: itemId,
43112                            index: 0
43113                        };
43114                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
43115                    },
43116                    unsetActiveTooltipItem() {
43117                        this.activeTooltipItem = false;
43118                    }
43119                },
43120                confProdPreSelect()
43121            );
43122
43123            if (result.optionConfig && result.optionConfig.attributes) {
43124                const attributes = result.optionConfig.attributes;
43125                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
43126                    let source = attributes;
43127                    if (Array.isArray(attributes)) {
43128                        source = {};
43129                        attributes.forEach(attr => {
43130                            if (attr && attr.id) source[attr.id] = attr;
43131                        });
43132                    }
43133                    const values = Object.values(source);
43134                    const wrapper = Object.assign(values, source);
43135                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
43136                        value: true,
43137                        enumerable: false
43138                    });
43139                    result.optionConfig.attributes = wrapper;
43140                }
43141            }
43142
43143            return result;
43144        }
43145
43146        window.addEventListener('alpine:init', () => {
43147            Alpine.data('initConfigurableSwatchOptions_4381', initConfigurableSwatchOptions_4381);
43148        }, {
43149            once: true
43150        });
43151    </script>
43151
43152    
43153    <div x-data="initConfigurableSwatchOptions_4381" x-defer="intersect">
43154        <div class="pagebuilder-home-hidden">
43155                                            
43156                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
43157                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
43158                        <template x-if="showSwatches">
43159                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-4381-163" role="radiogroup" aria-label="Einband">
43160                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
43161                                    <div :data-option-id="item.id" style="display: contents">
43162                                        <div x-id="getSwatchOptionHtmlIdGroup">
43163    <template x-if="optionIsEnabled">
43164        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
43164self="unsetActiveTooltipItem">
43165            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-4381-163">
43166            <div>
43167                <template x-if="isTextSwatch">
43168                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
43169                </template>
43170                <template x-if="!optionIsActive(163, item.id)">
43171                    <div>
43172                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
43173                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
43174                        </svg>
43175                    </div>
43176                </template>
43177            </div>
43178        </label>
43179    </template>
43180</div>                                    </div>
43181                                </template>
43182                            </div>
43183                        </template>
43184                    </div>
43185                </div>
43186                    </div>
43187    </div>
43188            
43189                                                <div class="meta py-4 pagebuilder-home-hidden">
43190                <div x-data="initMarketingShortText_4381()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
43191                    <!-- Marketing short text -->
43192                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
43193                    </div>
43194
43195                    <!-- Short description -->
43196                                                                <div class="short-description">
43197                            W&aacute;ng Y&aacute;ngm&iacute;ng (1472&ndash;1529) ist einer der wichtigsten Denker der chinesischen Kaiserzeit. Im Fokus seines Denkens steht das spontane Mitgef&uuml;hl mit Mitmensch und Umwelt, in dem er den Grund f&uuml;r die ...                            <a href="https://meiner.de/fmv_de/kleine-schriften-zum-a-groa-en-lernena-16052" class="underline">mehr</a>
43198                        </div>
43199                                    </div>
43200
43201                <!-- Series  -->
43202                                    <div class="mb-1">
43203                        <span class="sr-only">Reihe:</span>
43204                        <a href="https://meiner.de/fmv_de/programm/reihen/sino-philosophica">
43205                            <span>Sino-philosophica</span>
43206                        </a>
43207                                                    2                                            </div>
43208                
43209                
43210                                                    <div class="mb-1">
43211                        <span x-data="initEditionText_4381()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
43212                            <!-- Marketing short text -->
43213                            <span class="edition-text" x-html="editionText"></span>&nbsp;2024, 365 Seiten                        </span>
43214                    </div>
43215                
43216                            </div>
43217            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
43218                
43219                <div class="justify-end" x-data="initPriceBox()" @update-prices-4381.window="updatePrice($event.detail);">
43220                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="4381" data-price-box="product-id-4381"><span class="normal-price">
43221    <span x-data x-id="['product\u002Dprice\u002D4381']" class="price-container price-final_price tax weee">
43222            <span class="price-label">Ab</span>
43223                <span class="approx-price">ca. </span>
43224        <span :id="$id('product\u002Dprice\u002D4381')" data-price-amount="77.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">77,99&nbsp;&euro;</span></span>
43225        </span>
43226</span>
43227
43228
43229</div>                </div>
43230
43231                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
43232                                            <div class="open-access-container open-access-container-4381                    flex mt-4 ml-auto sm:mt-0 hidden">
43233                            <div class="text-gray-700">
43234                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
43235                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
43236                                        Kostenlos online lesen                                    </a>
43237                                </button>
43238                            </div>
43239                        </div>
43240                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Kleine Schriften zum &raquo;Gro&szlig;en Lernen&laquo;" aria-label="In den Warenkorb Kleine Schriften zum &raquo;Gro&szlig;en Lernen&laquo;" data-addto="cart">
43241                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
43242  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
43243</svg>
43244                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
43245                                        In den Warenkorb                                    </span>
43246                                </button>
43247                                                                                                                    
43248<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(4381)" aria-label="Zur Wunschliste hinzuf&uuml;gen Kleine Schriften zum &raquo;Gro&szlig;en Lernen&laquo;" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
43249    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
43250  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
43251</svg>
43252</button>
43253                                    </div>
43254            </div>
43255        </div>
43256        
43256<script>
43257            function initMarketingShortText_4381() {
43258                var marketingShortTextConfig = {};
43259                if (typeof window.initConfigurableSwatchOptions_4381 === "function") {
43260                    var fullConfig = window.initConfigurableSwatchOptions_4381().optionConfig
43261                    var marketingShortTextConfig = fullConfig.marketing_short_text;
43262                }
43263                return {
43264                    marketingShortText: '',
43265                    config: marketingShortTextConfig,
43266                    productId: '4381',
43267                    getMarketingShortText(detail) {
43268                        this.marketingShortText = detail.productIndex ?
43269                            this.config[detail.productIndex] :
43270                            null;
43271                    },
43272                    eventListeners: {
43273                        ['@listing-configurable-selection-changed.window'](event) {
43274                            if (this.productId == event.detail.productId) {
43275                                this.getMarketingShortText(event.detail);
43276                            }
43277
43278                        }
43279                    }
43280                }
43281            }
43282
43283            function initEditionText_4381() {
43284                var editionTextConfig = {};
43285                if (typeof window.initConfigurableSwatchOptions_4381 === "function") {
43286                    var fullConfig = window.initConfigurableSwatchOptions_4381().optionConfig
43287                    var editionTextConfig = fullConfig.edition;
43288                }
43289                return {
43290                    editionText: '',
43291                    config: editionTextConfig,
43292                    productId: '4381',
43293                    getEditionText(detail) {
43294                        this.editionText = detail.productIndex ?
43295                            this.config[detail.productIndex] :
43296                            null;
43297                    },
43298                    eventListeners: {
43299                        ['@listing-configurable-selection-changed.window'](event) {
43300                            if (this.productId == event.detail.productId) {
43301                                this.getEditionText(event.detail);
43302                            }
43303
43304                        }
43305                    }
43306                }
43307            }
43308        </script>
43308
43309                    </form>
43310                            
43311    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/4214/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk13616">
43312        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="4214">
43313                                    <a href="https://meiner.de/fmv_de/kontroversen-a-ber-die-grundlagen-ethischen-handelns-13616" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
43314            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-4214.window="$el.src = $event.detail" alt="Kontroversen &uuml;ber die Grundlagen ethischen Handelns" title="Kontroversen &uuml;ber die Grundlagen ethischen Handelns" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787343386_3.jpg" :style="{
43315                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
43316                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
43317            }">
43318                    </a>
43319        <div class="product-info flex flex-col flex-grow ">
43320                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
43321                                    <div class="mb-2 text-sm text-gray-500 font-medium">
43322                                                                                    <a href="https://meiner.de/fmv_de/person/Yangming-Wang-13617/" class="mb-2">
43323                                    Y&aacute;ngm&iacute;ng W&aacute;ng                                                                    </a>
43324                                                                    <span>|</span>
43325                                                                                            <a href="https://meiner.de/fmv_de/person/Qinshun-Luo-13618/" class="mb-2">
43326                                    Q&#299;nsh&ugrave;n Lu&oacute;                                                                    </a>
43327                                                                    <span>|</span>
43328                                                                                            <a href="https://meiner.de/fmv_de/person/De-Ouyang-13619/" class="mb-2">
43329                                    D&eacute; &#332;uy&aacute;ng                                                                    </a>
43330                                                                                                                                    </div>
43331                                <a class="product-item-link" href="https://meiner.de/fmv_de/kontroversen-a-ber-die-grundlagen-ethischen-handelns-13616">
43332                    Kontroversen &uuml;ber die Grundlagen ethischen Handelns                </a>
43333                            </div>
43334
43335            <div x-data="initEditionText_4214()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
43336                <!-- Marketing short text -->
43337                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
43338                </div>
43339            </div>
43340
43341                            <div class="py-1 grid  mb-4 ">
43342                    
43343                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":4214,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":4214,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"8167":"1","8207":"1"},"childProductsAlertStatus":{"8167":"0","8207":"0"},"indexMapping":{"163:11":8167,"163:8":8207},"availabilityMessages":{"8167":"Lieferbar innerhalb von 3-5 Tagen","8207":"Download sofort  verf\u00fcgbar"},"openAccess":{"4214":{"status":0},"8167":{"status":0},"8207":{"status":0}}},"availabilityMessages":{"8167":"Lieferbar innerhalb von 3-5 Tagen","8207":"Download sofort  verf\u00fcgbar"},"openAccess":{"4214":{"status":0},"8167":{"status":0},"8207":{"status":0}}}'>
43344        <template x-if="containerVisible">
43345                            <!-- Popup Trigger -->
43346                <div>
43347                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
43348                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
43349                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
43350  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
43351<title>bell</title></svg>
43352</span>
43353                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
43354
43355                    <!-- Popup Modal -->
43356                    <template x-if="showModal">
43357                        <template x-teleport=".page-wrapper">
43358                            <div x-cloak class="fixed inset-0 flex items-center justify-center
43359                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
43360                                <div class="relative bg-white rounded-lg shadow-xl
43361                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
43362                                    <div class="p-6">
43363                                        <!-- Subscription Form for Popup -->
43364                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
43365                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
43366                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
43367                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
43368
43369                                            <div class="flex flex-col gap-3">
43370                                                <div class="flex-grow grow">
43371                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
43372                                                        shadow-xs focus:outline-none focus:outline-hidden
43373                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
43374                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
43375                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
43376                                                </div>
43377                                                <input type="hidden" name="product_id" :value="currentProductId">
43378                                                <input type="hidden" name="type" value="email">
43379
43380                                                
43381                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
43382
43383                                                <div class="amxnotif_guest_action">
43384                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
43385                                                        rounded-md focus:outline-none
43386                                                        focus:outline-hidden focus:ring-2
43387                                                        focus:ring-offset-2 disabled:opacity-50
43388                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
43389                                                        Benachrichtigen                                                    </button>
43390                                                </div>
43391                                            </div>
43392
43393                                                                                            <div class="flex items-start pt-2">
43394                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
43395                                                        text-blue-600 border-gray-300 rounded-sm">
43396                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
43397                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
43398                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
43399                                                </div>
43400                                                                                    </form>
43401                                    </div>
43402
43403                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
43404                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
43405                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
43406  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
43407<title>x</title></svg>
43408                                    </button>
43409                                </div>
43410                            </div>
43411                        </template>
43412                    </template>
43413                </div>
43414                    </template>
43415    </div>
43416
43417<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_4214" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":4214,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"8167":"1","8207":"1"},"childProductsAlertStatus":{"8167":"0","8207":"0"},"indexMapping":"{\u0022163:11\u0022:8167,\u0022163:8\u0022:8207}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":4214,"availabilityMessages":{"8167":"Lieferbar innerhalb von 3-5 Tagen","8207":"Download sofort  verf\u00fcgbar"},"openAccess":{"4214":{"status":0},"8167":{"status":0},"8207":{"status":0}}}'>
43418    
43419    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
43420        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
43421        <span x-html="optionsLabelText"></span>
43422    </p>
43423</div>                </div>
43424            
43425                                
43425<script>
43426        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
43427            try {
43428                const attributes = (config && config.attributes) ? config.attributes : null;
43429                if (!attributes) return [];
43430                let attr = null;
43431                if (Array.isArray(attributes)) {
43432                    for (let i = 0; i < attributes.length; i++) {
43433                        const a = attributes[i];
43434                        if (a && a.id == attrId) {
43435                            attr = a;
43436                            break;
43437                        }
43438                    }
43439                } else {
43440                    attr = attributes[attrId];
43441                }
43442                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
43443            } catch (e) {
43444                return [];
43445            }
43446        };
43447
43448        function initConfigurableSwatchOptions_4214() {
43449            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"11","label":"Gebunden","products":["8167"]},{"id":"8","label":"PDF","products":["8207"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"8167":{"baseOldPrice":{"amount":64.485980308411},"oldPrice":{"amount":69},"basePrice":{"amount":64.485980308411},"finalPrice":{"amount":69},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"8207":{"baseOldPrice":{"amount":49.523363485981},"oldPrice":{"amount":52.99},"basePrice":{"amount":49.523363485981},"finalPrice":{"amount":52.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":49.523363485981},"oldPrice":{"amount":52.99},"basePrice":{"amount":49.523363485981},"finalPrice":{"amount":52.99},"isApproxPrice":null},"productId":"4214","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"8167":{"163":"11"},"8207":{"163":"8"}},"salable":{"163":{"11":["8167"],"8":["8207"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"8167":"004337","8207":"004338"},"output":{"8167":"Gebunden","8207":"PDF"},"original_name":{"8167":"","8207":""},"openaccess_license_link":{"8167":"","8207":""},"openaccess_license_name":{"8167":"","8207":""},"openaccess_external_link":{"8167":"","8207":""},"gpsr_safety_info":{"8167":"","8207":""},"description":{"8167":"W\u00e1ng Y\u00e1ngm\u00edng (1472\u20131529) ist einer der bedeutendsten konfuzianischen Denker des kaiserzeitlichen China. Seine Philosophie der \u00bbEinheit von Wissen und Handeln\u00ab wirkt in China und Ostasien bis zum heutigen Tage nach. Viele seiner Zeitgenossen lehnten seine auf pers\u00f6nlicher Einsicht basierende Ethik ab. <br\/><br\/>Die vorliegende \u00dcbersetzung, mit der die Reihe \u00bbSino-philosophica\u00ab er\u00f6ffnet wird, dokumentiert die Auseinandersetzung \u00fcber die Grundlagen des rechten Handelns, die er und sein Sch\u00fcler \u
43449014cuy\u00e1ng D\u00e9 (1496\u20131554) mit Lu\u00f3 Q\u012bnsh\u00f9n (1465\u20131547) f\u00fchrten. In gr\u00f6\u00dfter Allgemeinheit l\u00e4sst sich diese Kontroverse in folgende Frage fassen: Hat sich ethisches Handeln nach der empirisch erkennbaren objektiven Ordnung des Kosmos (\u00bbOrdnungsprinzipien des Himmels\u00ab) und den tradierten Schriften der \u00bbHeiligen\u00ab (Gespr\u00e4che des Konfuzius, Menzius und anderen Texten) oder aber nach der Einsicht des eigenen \u00bbHerzens\u00ab auszurichten? Nicht nur lassen sich f\u00fcr W\u00e1ng Y\u00e1ngm\u00edng ethische Prinzipien in der objektiven Welt nicht erkennen. Das sich in der eigenen Einsicht offenbarende \u00bburspr\u00fcngliche Wissen\u00ab (li\u00e1ng zh\u012b) hat den Vorrang selbst gegen\u00fcber den Worten von Heiligen wie Konfuzius. Zu keinem Zeitpunkt vor dem Eindringen europ\u00e4ischen Denkens am Ende des 19. Jahrhunderts ist in der chinesischen Philosophie das Verh\u00e4ltnis von Tradition und eigenem individuellen Denken so radikal diskutiert worden. <br\/><br\/>Eine Einleitung sowie umfangreiche Fu\u00dfnoten und Kommentare bieten eine philosophische und geistesgeschichtliche Einordnung.","8207":"W\u00e1ng Y\u00e1ngm\u00edng (1472\u20131529) ist einer der bedeutendsten konfuzianischen Denker des kaiserzeitlichen China. Seine Philosophie der \u00bbEinheit von Wissen und Handeln\u00ab wirkt in China und Ostasien bis zum heutigen Tage nach. Viele seiner Zeitgenossen lehnten seine auf pers\u00f6nlicher Einsicht basierende Ethik ab. <br\/><br\/>Die vorliegende \u00dcbersetzung, mit der die Reihe \u00bbSino-philosophica\u00ab er\u00f6ffnet wird, dokumentiert die Auseinandersetzung \u00fcber die Grundlagen des rechten Handelns, die er und sein Sch\u00fcler \u
43449014cuy\u00e1ng D\u00e9 (1496\u20131554) mit Lu\u00f3 Q\u012bnsh\u00f9n (1465\u20131547) f\u00fchrten. In gr\u00f6\u00dfter Allgemeinheit l\u00e4sst sich diese Kontroverse in folgende Frage fassen: Hat sich ethisches Handeln nach der empirisch erkennbaren objektiven Ordnung des Kosmos (\u00bbOrdnungsprinzipien des Himmels\u00ab) und den tradierten Schriften der \u00bbHeiligen\u00ab (Gespr\u00e4che des Konfuzius, Menzius und anderen Texten) oder aber nach der Einsicht des eigenen \u00bbHerzens\u00ab auszurichten? Nicht nur lassen sich f\u00fcr W\u00e1ng Y\u00e1ngm\u00edng ethische Prinzipien in der objektiven Welt nicht erkennen. Das sich in der eigenen Einsicht offenbarende \u00bburspr\u00fcngliche Wissen\u00ab (li\u00e1ng zh\u012b) hat den Vorrang selbst gegen\u00fcber den Worten von Heiligen wie Konfuzius. Zu keinem Zeitpunkt vor dem Eindringen europ\u00e4ischen Denkens am Ende des 19. Jahrhunderts ist in der chinesischen Philosophie das Verh\u00e4ltnis von Tradition und eigenem individuellen Denken so radikal diskutiert worden. <br\/><br\/>Eine Einleitung sowie umfangreiche Fu\u00dfnoten und Kommentare bieten eine philosophische und geistesgeschichtliche Einordnung."},"doi":{"8167":"","8207":"10.28937\/978-3-7873-4338-6"},"isbn":{"8167":"978-3-7873-4337-9","8207":"978-3-7873-4338-6"},"marketing_short_text":{"8167":"Deutsche Erst\u00fcbersetzungen wichtiger Texte des Konfuzianismus","8207":"Deutsche Erst\u00fcbersetzungen wichtiger Texte des Konfuzianismus"},"recension_text":{"8167":"","8207":""},"language":{"8167":"","8207":""},"cover":{"8167":"Gebunden","8207":""},"pages":{"8167":"238 Seiten","8207":"238 Seiten"},"edition":{"8167":"","8207":"Unver\u00e4ndertes eBook der 1. Auflage von 2023"},"pod":{"8167":"Nein","8207":"Nein"},"copyright_year":{"8167":"","8207":""},"vlb_tix_link":{"8167":"https:\/\/neu.vlbtix.de\/products\/9783787343379?type=gtin","8207":""},"defaultValues":{"163":"11"}};
43450            const swatchConfig = {"163":{"11":{"type":"0","value":"Gebunden","label":"Gebunden"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
43451
43452            if (typeof window.amxnotif_wrap_attributes === 'function') {
43453                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
43454                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
43455            }
43456
43457            const configurableOptionsComponent = initConfigurableOptions(
43458                '4214',
43459                config
43460            );
43461            const swatchOptionsComponent = initSwatchOptions(
43462                swatchConfig
43463            );
43464
43465            // DWS - Configurable product preselect start
43466            const confProdPreSelect = () => {
43467                return {
43468                    preselectQuerystringItems() {
43469                        var data = {"id":"8167","output":"11"};
43470                        const urlQueryParams = new URLSearchParams(window.location.search);
43471
43472                                                this.$nextTick(() => {
43473                            setTimeout(() => {
43474                                const rootEl = this.$root || this.$el;
43475                                if (!rootEl) return;
43476
43477                                const applySelection = (attrCode, attrValue) => {
43478                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
43479
43480                                    const attributes = Object.values(this.optionConfig.attributes || {});
43481                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
43482
43483                                    if (targetAttr) {
43484                                        const attrId = String(targetAttr.id);
43485                                        const optionVal = String(attrValue);
43486
43487                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
43488
43489                                        if (inputEl) {
43490                                                                                        inputEl.click();
43491                                            inputEl.dispatchEvent(new Event('change', {
43492                                                bubbles: true
43493                                            }));
43494                                        } else {
43495                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
43496                                            if (selectEl) {
43497                                                selectEl.value = optionVal;
43498                                                selectEl.dispatchEvent(new Event('change', {
43499                                                    bubbles: true
43500                                                }));
43501                                            }
43502                                        }
43503
43504                                                                                this.changeOption(attrId, optionVal, false);
43505                                    }
43506                                };
43507
43508                                                                if (data && typeof data === 'object') {
43509                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
43510                                }
43511
43512                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
43513                                    if (attribute && attribute.code) {
43514                                        let optionValue = urlQueryParams.get(attribute.code);
43515                                        if (optionValue) {
43516                                            let optionId = false;
43517                                            const attributes = Object.values(this.optionConfig.attributes || {});
43518                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
43519
43520                                            let found = false;
43521                                            Object.values(targetAttr.options).map(option => {
43522                                                if (found === false && option.label === optionValue) {
43523                                                    optionId = option.id;
43524                                                    found = true;
43525                                                }
43526                                            });
43527
43528                                            const attrId = String(targetAttr.id);
43529                                            let optionVal = String(optionValue);
43530                                            if (found) {
43531                                                optionVal = String(optionId);
43532                                            }
43533
43534                                            applySelection(attribute.code, optionVal);
43535                                        }
43536                                    }
43537                                });
43538                            }, 100);
43539                        });
43540                    }
43541                }
43542            };
43543            // DWS - Configurable product preselect end
43544
43545            const result = Object.assign(
43546                configurableOptionsComponent,
43547                swatchOptionsComponent, {
43548                    productId: '4214',
43549                    productIndex: 0,
43550                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
43551                    showSwatches: false,
43552                    precalcOptions: {},
43553                    originalInit: configurableOptionsComponent.init,
43554                    init() {
43555                        try {
43556                            this.precalcOptions = {};
43557                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
43558                            this.preselectQuerystringItems();
43559                            if (Array.isArray(attrSource)) {
43560                                attrSource.forEach(attr => {
43561                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
43562                                });
43563                            } else if (attrSource && typeof attrSource === 'object') {
43564                                Object.keys(attrSource).forEach(id => {
43565                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
43566                                });
43567                            }
43568                        } catch (e) {
43569                            console.error('Pre-calc error:', e);
43570                        }
43571
43572                        if (typeof this.originalInit === 'function') {
43573                            this.originalInit();
43574                        }
43575
43576                        try {
43577                            this.initShowSwatchesIntersect();
43578                        } catch (e) {
43579                            console.error('intersect error:', e);
43580                        }
43581                    },
43582
43583                    updateGallery() {
43584                        if (!this.productIndex) return;
43585
43586                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
43587                                method: 'GET',
43588                                headers: {
43589                                    'Content-Type': 'application/json',
43590                                    'X-Requested-With': 'XMLHttpRequest'
43591                                }
43592                            })
43593                            .then(response => response.json())
43594                            .then(data => {
43595                                if (data && data.medium) {
43596                                    window.dispatchEvent(new CustomEvent("update-gallery-4214", {
43597                                        detail: data.medium
43598                                    }));
43599                                }
43600                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
43601                    },
43602
43603
43604                    initShowSwatchesIntersect() {
43605                        const observer = new IntersectionObserver(entries => {
43606                            if (entries[0].isIntersecting) {
43607                                this.showSwatches = true;
43608                                observer.disconnect();
43609                            }
43610                        }, {
43611                            rootMargin: '512px'
43612                        });
43613                        observer.observe(this.$el);
43614                    },
43615                    getOptions(attrId) {
43616                        return this.precalcOptions[attrId] || [];
43617                    },
43618                    getOptionsByAttrId() {
43619                        return this.getOptions(this.$el.dataset.attributeId);
43620                    },
43621                    _getItemId() {
43622                        if (this.item && this.item.id) return this.item.id;
43623                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
43624                    },
43625                    getSwatchOptionHtmlId() {
43626                        const itemId = this._getItemId();
43627                        return itemId ? this.$id(`attribute-option-4214-${itemId}`) : '';
43628                    },
43629                    getSwatchOptionHtmlIdGroup() {
43630                        const itemId = this._getItemId();
43631                        return itemId ? [`attribute-option-4214-${itemId}`] : [];
43632                    },
43633                    getAttributeSwatchData(attributeId) {
43634                        const data = Object.assign({}, this.swatchConfig[attributeId]);
43635                        if (data['additional_data']) {
43636                            try {
43637                                data['details'] = JSON.parse(data['additional_data']);
43638                            } catch (e) {
43639                                data['details'] = {};
43640                            }
43641                        }
43642                        return data;
43643                    },
43644                    getSwatchType(attributeId, optionId) {
43645                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
43646                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
43647                        }
43648                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
43649                            this.swatchConfig[attributeId].details.swatch_input_type :
43650                            "empty";
43651                        if (type === 'visual') {
43652                            const config = this.swatchConfig[attributeId];
43653                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
43654                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
43655                            }
43656                            // Fallback to first option type
43657                            for (const oId in config) {
43658                                if (config[oId] && typeof config[oId].type !== 'undefined') {
43659                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
43660                                }
43661                            }
43662                        }
43663                        return type;
43664                    },
43665                    mapSwatchTypeNumberToTypeCode(type) {
43666                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
43667                    },
43668                    isTextSwatch() {
43669                        const itemId = this._getItemId();
43670                        if (!this.$el || !itemId) return false;
43671                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
43672                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
43673                    },
43674
43675                    getSwatchText() {
43676                        const itemId = this._getItemId();
43677                        if (this.item) return this.item.label || '';
43678                        if (!this.$el || !itemId) return '';
43679                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
43680                        const options = attrId ? this.getOptions(attrId) : [];
43681                        const opt = options.find(o => o.id == itemId);
43682                        return opt ? opt.label : '';
43683                    },
43684                    getSwatchBackgroundStyle() {
43685                        const itemId = this._getItemId();
43686                        if (!this.$el || !itemId) return '';
43687                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
43688                        if (!attrId) return '';
43689                        const type = this.getSwatchType(attrId, itemId);
43690                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
43691                            this.swatchConfig[attrId][itemId] :
43692                            null;
43693                        if (!swatchData) return '';
43694                        if (type === "color") return 'background-color:' + swatchData.value;
43695                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
43696                        return '';
43697                    },
43698                    swatchOptionClasses() {
43699                        const itemId = this._getItemId();
43700                        if (!this.$el || !itemId) return {};
43701                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
43702                        return {
43703                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
43704                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
43705                            'w-6 h-6': !this.isTextSwatch()
43706                        }
43707                    },
43708
43709                    onFocusSwatchItem() {
43710                        const itemId = this._getItemId();
43711                        if (itemId) this.focusedLabel = itemId;
43712                    },
43713                    onChangeOption() {
43714                        const itemId = this._getItemId();
43715                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
43716                        if (attrId && itemId) this.changeOption(attrId, itemId);
43717                    },
43718                    changeOption(attributeId, value) {
43719                        if (value === '') {
43720                            return;
43721                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
43722                        } else {
43723                            this.selectedValues[attributeId] = value;
43724                        }
43725
43726                        this.findSimpleIndex();
43727                        this.findAllowedAttributeOptions();
43728                        this.updatePrices();
43729                        this.updateGallery();
43730
43731                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
43732                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
43733
43734                        const eventDetail = {
43735                            productId: this.productId,
43736                            optionId: attributeId,
43737                            value: value,
43738                            productIndex: this.productIndex || 0,
43739                            selectedValues: this.selectedValues,
43740                            candidates: candidates,
43741                            sourceElement: this.$el
43742                        };
43743
43744                        // Dispatch for Amasty
43745                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
43746                            detail: eventDetail
43747                        }));
43748
43749                        // Dispatch for Hyva listing
43750                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
43751                            detail: eventDetail
43752                        }));
43753                    },
43754
43755
43756                    clearOptionIfActive() {
43757                        const itemId = this._getItemId();
43758                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
43759                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
43760                            this.changeOption(attrId, '');
43761
43762                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
43763                            if (!input && this.$el?.querySelector) {
43764                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
43765                            }
43766                            if (!input && this.$el?.closest) {
43767                                const root = this.$el.closest('[data-product-id]') || this.$el;
43768                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
43769                            }
43770                            if (input) {
43771                                input.checked = false;
43772                            }
43773                        }
43774                    },
43775                    get optionIsEnabled() {
43776                        const itemId = this._getItemId();
43777                        if (!this.$el || !itemId) return true;
43778                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
43779                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
43780                        return !!allowedOptions.find(opt => opt.id == itemId);
43781                    },
43782                    get isSelected() {
43783                        const itemId = this._getItemId();
43784                        if (!this.$el || !itemId) return false;
43785                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
43786                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
43787                    },
43788                    get isSwatchRequired() {
43789                        if (!this.$el) return false;
43790                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
43791                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
43792                    },
43793                    focusedLabel: false,
43794                    activeTooltipItem: false,
43795                    tooltipPositionElement: false,
43796                    setActiveTooltipItem() {
43797                        const itemId = this._getItemId();
43798                        if (!this.$el || !itemId) return;
43799                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
43800                        this.activeTooltipItem = {
43801                            attribute: attrId,
43802                            item: itemId,
43803                            index: 0
43804                        };
43805                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
43806                    },
43807                    unsetActiveTooltipItem() {
43808                        this.activeTooltipItem = false;
43809                    }
43810                },
43811                confProdPreSelect()
43812            );
43813
43814            if (result.optionConfig && result.optionConfig.attributes) {
43815                const attributes = result.optionConfig.attributes;
43816                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
43817                    let source = attributes;
43818                    if (Array.isArray(attributes)) {
43819                        source = {};
43820                        attributes.forEach(attr => {
43821                            if (attr && attr.id) source[attr.id] = attr;
43822                        });
43823                    }
43824                    const values = Object.values(source);
43825                    const wrapper = Object.assign(values, source);
43826                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
43827                        value: true,
43828                        enumerable: false
43829                    });
43830                    result.optionConfig.attributes = wrapper;
43831                }
43832            }
43833
43834            return result;
43835        }
43836
43837        window.addEventListener('alpine:init', () => {
43838            Alpine.data('initConfigurableSwatchOptions_4214', initConfigurableSwatchOptions_4214);
43839        }, {
43840            once: true
43841        });
43842    </script>
43842
43843    
43844    <div x-data="initConfigurableSwatchOptions_4214" x-defer="intersect">
43845        <div class="pagebuilder-home-hidden">
43846                                            
43847                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
43848                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
43849                        <template x-if="showSwatches">
43850                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-4214-163" role="radiogroup" aria-label="Einband">
43851                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
43852                                    <div :data-option-id="item.id" style="display: contents">
43853                                        <div x-id="getSwatchOptionHtmlIdGroup">
43854    <template x-if="optionIsEnabled">
43855        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
43855self="unsetActiveTooltipItem">
43856            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-4214-163">
43857            <div>
43858                <template x-if="isTextSwatch">
43859                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
43860                </template>
43861                <template x-if="!optionIsActive(163, item.id)">
43862                    <div>
43863                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
43864                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
43865                        </svg>
43866                    </div>
43867                </template>
43868            </div>
43869        </label>
43870    </template>
43871</div>                                    </div>
43872                                </template>
43873                            </div>
43874                        </template>
43875                    </div>
43876                </div>
43877                    </div>
43878    </div>
43879            
43880                                                <div class="meta py-4 pagebuilder-home-hidden">
43881                <div x-data="initMarketingShortText_4214()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
43882                    <!-- Marketing short text -->
43883                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
43884                    </div>
43885
43886                    <!-- Short description -->
43887                                                                <div class="short-description">
43888                            W&aacute;ng Y&aacute;ngm&iacute;ng (1472&ndash;1529) ist einer der bedeutendsten konfuzianischen Denker des kaiserzeitlichen China. Seine Philosophie der &raquo;Einheit von Wissen und Handeln&laquo; wirkt in China und Ostasien bis zum ...                            <a href="https://meiner.de/fmv_de/kontroversen-a-ber-die-grundlagen-ethischen-handelns-13616" class="underline">mehr</a>
43889                        </div>
43890                                    </div>
43891
43892                <!-- Series  -->
43893                                    <div class="mb-1">
43894                        <span class="sr-only">Reihe:</span>
43895                        <a href="https://meiner.de/fmv_de/programm/reihen/sino-philosophica">
43896                            <span>Sino-philosophica</span>
43897                        </a>
43898                                                    1                                            </div>
43899                
43900                
43901                                                    <div class="mb-1">
43902                        <span x-data="initEditionText_4214()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
43903                            <!-- Marketing short text -->
43904                            <span class="edition-text" x-html="editionText"></span>&nbsp;2023, 238 Seiten                        </span>
43905                    </div>
43906                
43907                            </div>
43908            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
43909                
43910                <div class="justify-end" x-data="initPriceBox()" @update-prices-4214.window="updatePrice($event.detail);">
43911                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="4214" data-price-box="product-id-4214"><span class="normal-price">
43912    <span x-data x-id="['product\u002Dprice\u002D4214']" class="price-container price-final_price tax weee">
43913            <span class="price-label">Ab</span>
43914                <span class="approx-price">ca. </span>
43915        <span :id="$id('product\u002Dprice\u002D4214')" data-price-amount="52.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">52,99&nbsp;&euro;</span></span>
43916        </span>
43917</span>
43918
43919
43920</div>                </div>
43921
43922                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
43923                                            <div class="open-access-container open-access-container-4214                    flex mt-4 ml-auto sm:mt-0 hidden">
43924                            <div class="text-gray-700">
43925                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
43926                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
43927                                        Kostenlos online lesen                                    </a>
43928                                </button>
43929                            </div>
43930                        </div>
43931                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Kontroversen &uuml;ber die Grundlagen ethischen Handelns" aria-label="In den Warenkorb Kontroversen &uuml;ber die Grundlagen ethischen Handelns" data-addto="cart">
43932                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
43933  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
43934</svg>
43935                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
43936                                        In den Warenkorb                                    </span>
43937                                </button>
43938                                                                                                                    
43939<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(4214)" aria-label="Zur Wunschliste hinzuf&uuml;gen Kontroversen &uuml;ber die Grundlagen ethischen Handelns" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
43940    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
43941  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
43942</svg>
43943</button>
43944                                    </div>
43945            </div>
43946        </div>
43947        
43947<script>
43948            function initMarketingShortText_4214() {
43949                var marketingShortTextConfig = {};
43950                if (typeof window.initConfigurableSwatchOptions_4214 === "function") {
43951                    var fullConfig = window.initConfigurableSwatchOptions_4214().optionConfig
43952                    var marketingShortTextConfig = fullConfig.marketing_short_text;
43953                }
43954                return {
43955                    marketingShortText: '',
43956                    config: marketingShortTextConfig,
43957                    productId: '4214',
43958                    getMarketingShortText(detail) {
43959                        this.marketingShortText = detail.productIndex ?
43960                            this.config[detail.productIndex] :
43961                            null;
43962                    },
43963                    eventListeners: {
43964                        ['@listing-configurable-selection-changed.window'](event) {
43965                            if (this.productId == event.detail.productId) {
43966                                this.getMarketingShortText(event.detail);
43967                            }
43968
43969                        }
43970                    }
43971                }
43972            }
43973
43974            function initEditionText_4214() {
43975                var editionTextConfig = {};
43976                if (typeof window.initConfigurableSwatchOptions_4214 === "function") {
43977                    var fullConfig = window.initConfigurableSwatchOptions_4214().optionConfig
43978                    var editionTextConfig = fullConfig.edition;
43979                }
43980                return {
43981                    editionText: '',
43982                    config: editionTextConfig,
43983                    productId: '4214',
43984                    getEditionText(detail) {
43985                        this.editionText = detail.productIndex ?
43986                            this.config[detail.productIndex] :
43987                            null;
43988                    },
43989                    eventListeners: {
43990                        ['@listing-configurable-selection-changed.window'](event) {
43991                            if (this.productId == event.detail.productId) {
43992                                this.getEditionText(event.detail);
43993                            }
43994
43995                        }
43996                    }
43997                }
43998            }
43999        </script>
43999
44000                    </form>
44001                    </div>
44002        
44003<div class="carousel-nav flex items-center justify-center flex-1 p-4">
44004    <button aria-label="Zur&uuml;ck" title="Zur&uuml;ck" class="glider-prev w-8 h-8 mr-1 text-black rounded-full outline-none focus:outline-none hidden">
44005        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true">
44006  <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"></path>
44007</svg>
44008    </button>
44009    <div role="tablist" class="glider-dots select-none flex flex-wrap mx-1 justify-center p-0 focus:outline-none"></div>
44010    <button aria-label="Weiter" title="Weiter" class="glider-next w-8 h-8 ml-1 text-black rounded-full outline-none focus:outline-none hidden">
44011        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true">
44012  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"></path>
44013</svg>
44014    </button>
44015</div>
44016    </div>
44017</div></div></div></div></div></div><div data-content-type="row" data-appearance="contained" data-element="main" data-pb-style="EF0RDMC"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="" data-element="inner" data-pb-style="FUIYFW4"><h2 data-content-type="heading" data-appearance="default" data-element="main">Zeitschriften &amp; Jahrb&uuml;cher</h2><div class="pagebuilder-column-group card cmsp2-p-5" data-background-images="{}" data-content-type="column-group" data-appearance="default" data-grid-size="12" data-background-lazy-load="false" data-element="main" data-pb-style="UD26YMC"><div class="pagebuilder-column-line" data-content-type="column-line" data-element="main" data-pb-style="BBAPORQ"><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="false" data-element="main" data-pb-style="GLCHRV4"><h3 data-content-type="heading" data-appearance="default" data-element="main">Von Aufkl&auml;rung bis Ph&auml;nomenologie</h3><div data-content-type="text" data-appearance="default" data-element="main" data-pb-style="KBK5W12"><p style="text-align: left;">Alle Zeitschriften und Jahrb&uuml;cher sind auch &uuml;ber die <a href="https://meiner-elibrary.de/">Meiner-eLibrary</a> verf&uuml;gbar.&nbsp;&nbsp;</p>
44018<p style="text-align: left;">Abonnementbestellungen nehmen wir gerne <a href="mailto:[email protected]" target="_blank" rel="noopener">per Mail</a> entgegen.</p>
44019<p style="text-align: left;">Informationen &uuml;ber Preise und Bezugsbedingungen unserer Abonnements und Fortsetzungen entnehmen Sie bitte der <a href="https://assets.meiner.de/Downloads/Zeitschriften/FMV_Zeitschriften-Preislisten_aktuell_2026.pdf">aktuellen Preisliste</a> (PDF).</p></div></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="MXLJ7AI"></div><div class="pagebuilder-column" data-content-type="column" data-appearance="full-height" data-background-images="{}" data-background-lazy-load="" data-element="main" data-pb-style="HNWY1JL"><h3 data-content-type="heading" data-appearance="default" data-element="main">Zuletzt erschienen</h3><div data-content-type="products" data-appearance="carousel" data-autoplay="false" data-autoplay-speed="4000" data-infinite-loop="false" data-show-arrows="false" data-show-dots="true" data-carousel-mode="default" data-center-padding="90px" data-element="main">        <div class="glider-contain product-items widget-product-carousel">
44020        <div data-role="glider-content" class="mx-auto grid gap-4 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 relative overflow-y-hidden overflow-x-scroll">
44021                            
44022    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/47280/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk25422">
44023        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="47280">
44024                                    <a href="https://meiner.de/fmv_de/a-sthetik-des-computerspiels-25422" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
44025            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-47280.window="$el.src = $event.detail" alt="&Auml;sthetik des Computerspiels" title="&Auml;sthetik des Computerspiels" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787352272_2.jpg" :style="{
44026                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
44027                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
44028            }">
44029                    </a>
44030        <div class="product-info flex flex-col flex-grow ">
44031                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
44032                                    <div class="mb-2 text-sm text-gray-500 font-medium">
44033                                                                                    <a href="https://meiner.de/fmv_de/person/Philipp-Theisohn-3440/" class="mb-2">
44034                                    Philipp Theisohn                                                                    </a>
44035                                                                    <sp
44035an>|</span>
44036                                                                                            <a href="https://meiner.de/fmv_de/person/Reinold-Schmucker-5063/" class="mb-2">
44037                                    Reinold Schm&uuml;cker                                                                            (Hrsg.)
44038                                                                    </a>
44039                                                                                                                                    </div>
44040                                <a class="product-item-link" href="https://meiner.de/fmv_de/a-sthetik-des-computerspiels-25422">
44041                    &Auml;sthetik des Computerspiels                </a>
44042                            </div>
44043
44044            <div x-data="initEditionText_47280()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
44045                <!-- Marketing short text -->
44046                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
44047                </div>
44048            </div>
44049
44050                            <div class="py-1 grid  mb-4 ">
44051                    
44052                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":47280,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":47280,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"47254":"1","47266":"1"},"childProductsAlertStatus":{"47254":"0","47266":"0"},"indexMapping":{"163:15":47254,"163:8":47266},"availabilityMessages":{"47254":"Lieferbar innerhalb von 3-5 Tagen","47266":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"47280":{"status":0},"47254":{"status":0},"47266":{"status":0}}},"availabilityMessages":{"47254":"Lieferbar innerhalb von 3-5 Tagen","47266":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"47280":{"status":0},"47254":{"status":0},"47266":{"status":0}}}'>
44053        <template x-if="containerVisible">
44054                            <!-- Popup Trigger -->
44055                <div>
44056                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
44057                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
44058                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
44059  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
44060<title>bell</title></svg>
44061</span>
44062                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
44063
44064                    <!-- Popup Modal -->
44065                    <template x-if="showModal">
44066                        <template x-teleport=".page-wrapper">
44067                            <div x-cloak class="fixed inset-0 flex items-center justify-center
44068                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
44069                                <div class="relative bg-white rounded-lg shadow-xl
44070                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
44071                                    <div class="p-6">
44072                                        <!-- Subscription Form for Popup -->
44073                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
44074                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
44075                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
44076                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
44077
44078                                            <div class="flex flex-col gap-3">
44079                                                <div class="flex-grow grow">
44080                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
44081                                                        shadow-xs focus:outline-none focus:outline-hidden
44082                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
44083                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
44084                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
44085                                                </div>
44086                                                <input type="hidden" name="product_id" :value="currentProductId">
44087                                                <input type="hidden" name="type" value="email">
44088
44089                                                
44090                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
44091
44092                                                <div class="amxnotif_guest_action">
44093                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
44094                                                        rounded-md focus:outline-none
44095                                                        focus:outline-hidden focu
44095s:ring-2
44096                                                        focus:ring-offset-2 disabled:opacity-50
44097                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
44098                                                        Benachrichtigen                                                    </button>
44099                                                </div>
44100                                            </div>
44101
44102                                                                                            <div class="flex items-start pt-2">
44103                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
44104                                                        text-blue-600 border-gray-300 rounded-sm">
44105                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
44106                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
44107                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
44108                                                </div>
44109                                                                                    </form>
44110                                    </div>
44111
44112                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
44113                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
44114                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
44115  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
44116<title>x</title></svg>
44117                                    </button>
44118                                </div>
44119                            </div>
44120                        </template>
44121                    </template>
44122                </div>
44123                    </template>
44124    </div>
44125
44126<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_47280" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":47280,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"47254":"1","47266":"1"},"childProductsAlertStatus":{"47254":"0","47266":"0"},"indexMapping":"{\u0022163:15\u0022:47254,\u0022163:8\u0022:47266}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":47280,"availabilityMessages":{"47254":"Lieferbar innerhalb von 3-5 Tagen","47266":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"47280":{"status":0},"47254":{"status":0},"47266":{"status":0}}}'>
44127    
44128    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
44129        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
44130        <span x-html="optionsLabelText"></span>
44131    </p>
44132</div>                </div>
44133            
44134                                
44134<script>
44135        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
44136            try {
44137                const attributes = (config && config.attributes) ? config.attributes : null;
44138                if (!attributes) return [];
44139                let attr = null;
44140                if (Array.isArray(attributes)) {
44141                    for (let i = 0; i < attributes.length; i++) {
44142                        const a = attributes[i];
44143                        if (a && a.id == attrId) {
44144                            attr = a;
44145                            break;
44146                        }
44147                    }
44148                } else {
44149                    attr = attributes[attrId];
44150                }
44151                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
44152            } catch (e) {
44153                return [];
44154            }
44155        };
44156
44157        function initConfigurableSwatchOptions_47280() {
44158            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["47254"]},{"id":"8","label":"PDF","products":["47266"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"47254":{"baseOldPrice":{"amount":92.523363485981},"oldPrice":{"amount":99},"basePrice":{"amount":92.523363485981},"finalPrice":{"amount":99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47266":{"baseOldPrice":{"amount":70.084111149533},"oldPrice":{"amount":74.99},"basePrice":{"amount":70.084111149533},"finalPrice":{"amount":74.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":70.084111149533},"oldPrice":{"amount":74.99},"basePrice":{"amount":63.016805722689},"finalPrice":{"amount":74.99},"isApproxPrice":null},"productId":"47280","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"47254":{"163":"15"},"47266":{"163":"8"}},"salable":{"163":{"15":["47254"],"8":["47266"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"47254":"000132-71-1","47266":"eZ\u00c4K-71-1"},"output":{"47254":"Kartoniert","47266":"PDF"},"original_name":{"47254":"","47266":""},"openaccess_license_link":{"47254":"","47266":""},"openaccess_license_name":{"47254":"","47266":""},"openaccess_external_link":{"47254":"","47266":""},"gpsr_safety_info":{"47254":"","47266":""},"description":{"47254":"Was ist mit \u00bb\u00c4sthetik des Computerspiels\u00ab gemeint? Und wo w\u00e4re diese zu finden? Der Schwerpunkt dieser Ausgabe sucht sie in den Zwischenr\u00e4umen und Sollbruchstellen, die die medialen Architekturen des Computerspiels durchziehen. Die Einheit von fiktionaler Welt, operativer Struktur und technischer Konditionierung, von narrativer und ludischer Ebene, von Programmierung, Spielmechanik, Hardware und Interfaces ist jedoch nur eine scheinbare. Stattdessen wird diese Einheit in ihrer Faktur aus den Spielwelten heraus sichtbar. Dabei gew\u00e4hren die selbstreflexiven Momente einen Zugang zu dem, was man den \u00bb\u00e4sthetischen Effekt\u00ab des Computerspiels nennen k\u00f6nnte. Von dort aus beginnt das Nachdenken \u00fcber jene junge und massenhaft verbreitete Kunstform, deren genauer Analyse sich die Beitr\u00e4ge widmen.","47266":"Was ist mit \u00bb\u00c4sthetik des Computerspiels\u00ab gemeint? Und wo w\u00e4re diese zu finden? Der Schwerpunkt dieser Ausgabe sucht sie in den Zwischenr\u00e4umen und Sollbruchstellen, die die medialen Architekturen des Computerspiels durchziehen. Die Einheit von fiktionaler Welt, operativer Struktur und technischer Konditionierung, von narrativer und ludischer Ebene, von Programmierung, Spielmechanik, Hardware und Interfaces ist jedoch nur eine scheinbare. Stattdessen wird diese Einheit in ihrer Faktur aus den Spielwelten heraus sichtbar. Dabei gew\u00e4hren die selbstreflexiven Momente einen Zugang zu dem, was man den \u00bb\u00e4sthetischen Effekt\u00ab des Computerspiels nennen k\u00f6nnte. Von dort aus beginnt das Nachdenken \u00fcber jene junge und massenhaft verbreitete Kunstform, deren genauer Analyse sich die Beitr\u00e4ge widmen."},"doi":{"47254":"","47266":"10.28937\/978-3-7873-5228-9"},"isbn":{"47254":"978-3-7873-5227-2","47266":""},"marketing_short_text":{"47254":"","47266":""},"recension_text":{"47254":"","47266":""},"language":{"47254":"","47266":""},"cover":{"47254":"Kartoniert","47266":""},"pages":{"47254":"168 Seiten.","47266":"168 Seiten."},"edition":{"47254":"","47266":"Unver\u00e4ndertes eJournal der 1. Auflage von 2026"},"pod":{"47254":"Nein","47266":"Nein"},"copyright_year":{"47254":"","47266":""},"vlb_tix_link":{"47254":"https:\/\/neu.vlbtix.de\/products\/9783787352272?type=gtin","47266":""},"defaultValues":{"163":"15"}};
44159            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
44160
44161            if (typeof window.amxnotif_wrap_attributes === 'function') {
44162                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
44163                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
44164            }
44165
44166            const configurableOptionsComponent = initConfigurableOptions(
44167                '47280',
44168                config
44169            );
44170            const swatchOptionsComponent = initSwatchOptions(
44171                swatchConfig
44172            );
44173
44174            // DWS - Configurable product preselect start
44175            const confProdPreSelect = () => {
44176                return {
44177                    preselectQuerystringItems() {
44178                        var data = {"id":"47254","output":"15"};
44179                        const urlQueryParams = new URLSearchParams(window.location.search);
44180
44181                                                this.$nextTick(() => {
44182                            setTimeout(() => {
44183                                const rootEl = this.$root || this.$el;
44184                                if (!rootEl) return;
44185
44186                                const applySelection = (attrCode, attrValue) => {
44187                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
44188
44189                                    const attributes = Object.values(this.optionConfig.attributes || {});
44190                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
44191
44192                                    if (targetAttr) {
44193                                        const attrId = String(targetAttr.id);
44194                                        const optionVal = String(attrValue);
44195
44196                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
44197
44198                                        if (inputEl) {
44199                                                                                        inputEl.click();
44200                                            inputEl.dispatchEvent(new Event('change', {
44201                                                bubbles: true
44202                                            }));
44203                                        } else {
44204                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
44205                                            if (selectEl) {
44206                                                selectEl.value = optionVal;
44207                                                selectEl.dispatchEvent(new Event('change', {
44208                                                    bubbles: true
44209                                                }));
44210                                            }
44211                                        }
44212
44213                                                                                this.changeOption(attrId, optionVal, false);
44214                                    }
44215                                };
44216
44217                                                                if (data && typeof data === 'object') {
44218                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
44219                                }
44220
44221                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
44222                                    if (attribute && attribute.code) {
44223                                        let optionValue = urlQueryParams.get(attribute.code);
44224                                        if (optionValue) {
44225                                            let optionId = false;
44226                                            const attributes = Object.values(this.optionConfig.attributes || {});
44227                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
44228
44229                                            let found = false;
44230                                            Object.values(targetAttr.options).map(option => {
44231                                                if (found === false && option.label === optionValue) {
44232                                                    optionId = option.id;
44233                                                    found = true;
44234                                                }
44235                                            });
44236
44237                                            const attrId = String(targetAttr.id);
44238                                            let optionVal = String(optionValue);
44239                                            if (found) {
44240                                                optionVal = String(optionId);
44241                                            }
44242
44243                                            applySelection(attribute.code, optionVal);
44244                                        }
44245                                    }
44246                                });
44247                            }, 100);
44248                        });
44249                    }
44250                }
44251            };
44252            // DWS - Configurable product preselect end
44253
44254            const result = Object.assign(
44255                configurableOptionsComponent,
44256                swatchOptionsComponent, {
44257                    productId: '47280',
44258                    productIndex: 0,
44259                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
44260                    showSwatches: false,
44261                    precalcOptions: {},
44262                    originalInit: configurableOptionsComponent.init,
44263                    init() {
44264                        try {
44265                            this.precalcOptions = {};
44266                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
44267                            this.preselectQuerystringItems();
44268                            if (Array.isArray(attrSource)) {
44269                                attrSource.forEach(attr => {
44270                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
44271                                });
44272                            } else if (attrSource && typeof attrSource === 'object') {
44273                                Object.keys(attrSource).forEach(id => {
44274                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
44275                                });
44276                            }
44277                        } catch (e) {
44278                            console.error('Pre-calc error:', e);
44279                        }
44280
44281                        if (typeof this.originalInit === 'function') {
44282                            this.originalInit();
44283                        }
44284
44285                        try {
44286                            this.initShowSwatchesIntersect();
44287                        } catch (e) {
44288                            console.error('intersect error:', e);
44289                        }
44290                    },
44291
44292                    updateGallery() {
44293                        if (!this.productIndex) return;
44294
44295                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
44296                                method: 'GET',
44297                                headers: {
44298                                    'Content-Type': 'application/json',
44299                                    'X-Requested-With': 'XMLHttpRequest'
44300                                }
44301                            })
44302                            .then(response => response.json())
44303                            .then(data => {
44304                                if (data && data.medium) {
44305                                    window.dispatchEvent(new CustomEvent("update-gallery-47280", {
44306                                        detail: data.medium
44307                                    }));
44308                                }
44309                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
44310                    },
44311
44312
44313                    initShowSwatchesIntersect() {
44314                        const observer = new IntersectionObserver(entries => {
44315                            if (entries[0].isIntersecting) {
44316                                this.showSwatches = true;
44317                                observer.disconnect();
44318                            }
44319                        }, {
44320                            rootMargin: '512px'
44321                        });
44322                        observer.observe(this.$el);
44323                    },
44324                    getOptions(attrId) {
44325                        return this.precalcOptions[attrId] || [];
44326                    },
44327                    getOptionsByAttrId() {
44328                        return this.getOptions(this.$el.dataset.attributeId);
44329                    },
44330                    _getItemId() {
44331                        if (this.item && this.item.id) return this.item.id;
44332                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
44333                    },
44334                    getSwatchOptionHtmlId() {
44335                        const itemId = this._getItemId();
44336                        return itemId ? this.$id(`attribute-option-47280-${itemId}`) : '';
44337                    },
44338                    getSwatchOptionHtmlIdGroup() {
44339                        const itemId = this._getItemId();
44340                        return itemId ? [`attribute-option-47280-${itemId}`] : [];
44341                    },
44342                    getAttributeSwatchData(attributeId) {
44343                        const data = Object.assign({}, this.swatchConfig[attributeId]);
44344                        if (data['additional_data']) {
44345                            try {
44346                                data['details'] = JSON.parse(data['additional_data']);
44347                            } catch (e) {
44348                                data['details'] = {};
44349                            }
44350                        }
44351                        return data;
44352                    },
44353                    getSwatchType(attributeId, optionId) {
44354                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
44355                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
44356                        }
44357                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
44358                            this.swatchConfig[attributeId].details.swatch_input_type :
44359                            "empty";
44360                        if (type === 'visual') {
44361                            const config = this.swatchConfig[attributeId];
44362                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
44363                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
44364                            }
44365                            // Fallback to first option type
44366                            for (const oId in config) {
44367                                if (config[oId] && typeof config[oId].type !== 'undefined') {
44368                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
44369                                }
44370                            }
44371                        }
44372                        return type;
44373                    },
44374                    mapSwatchTypeNumberToTypeCode(type) {
44375                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
44376                    },
44377                    isTextSwatch() {
44378                        const itemId = this._getItemId();
44379                        if (!this.$el || !itemId) return false;
44380                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
44381                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
44382                    },
44383
44384                    getSwatchText() {
44385                        const itemId = this._getItemId();
44386                        if (this.item) return this.item.label || '';
44387                        if (!this.$el || !itemId) return '';
44388                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
44389                        const options = attrId ? this.getOptions(attrId) : [];
44390                        const opt = options.find(o => o.id == itemId);
44391                        return opt ? opt.label : '';
44392                    },
44393                    getSwatchBackgroundStyle() {
44394                        const itemId = this._getItemId();
44395                        if (!this.$el || !itemId) return '';
44396                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
44397                        if (!attrId) return '';
44398                        const type = this.getSwatchType(attrId, itemId);
44399                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
44400                            this.swatchConfig[attrId][itemId] :
44401                            null;
44402                        if (!swatchData) return '';
44403                        if (type === "color") return 'background-color:' + swatchData.value;
44404                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
44405                        return '';
44406                    },
44407                    swatchOptionClasses() {
44408                        const itemId = this._getItemId();
44409                        if (!this.$el || !itemId) return {};
44410                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
44411                        return {
44412                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
44413                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
44414                            'w-6 h-6': !this.isTextSwatch()
44415                        }
44416                    },
44417
44418                    onFocusSwatchItem() {
44419                        const itemId = this._getItemId();
44420                        if (itemId) this.focusedLabel = itemId;
44421                    },
44422                    onChangeOption() {
44423                        const itemId = this._getItemId();
44424                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
44425                        if (attrId && itemId) this.changeOption(attrId, itemId);
44426                    },
44427                    changeOption(attributeId, value) {
44428                        if (value === '') {
44429                            return;
44430                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
44431                        } else {
44432                            this.selectedValues[attributeId] = value;
44433                        }
44434
44435                        this.findSimpleIndex();
44436                        this.findAllowedAttributeOptions();
44437                        this.updatePrices();
44438                        this.updateGallery();
44439
44440                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
44441                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
44442
44443                        const eventDetail = {
44444                            productId: this.productId,
44445                            optionId: attributeId,
44446                            value: value,
44447                            productIndex: this.productIndex || 0,
44448                            selectedValues: this.selectedValues,
44449                            candidates: candidates,
44450                            sourceElement: this.$el
44451                        };
44452
44453                        // Dispatch for Amasty
44454                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
44455                            detail: eventDetail
44456                        }));
44457
44458                        // Dispatch for Hyva listing
44459                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
44460                            detail: eventDetail
44461                        }));
44462                    },
44463
44464
44465                    clearOptionIfActive() {
44466                        const itemId = this._getItemId();
44467                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
44468                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
44469                            this.changeOption(attrId, '');
44470
44471                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
44472                            if (!input && this.$el?.querySelector) {
44473                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
44474                            }
44475                            if (!input && this.$el?.closest) {
44476                                const root = this.$el.closest('[data-product-id]') || this.$el;
44477                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
44478                            }
44479                            if (input) {
44480                                input.checked = false;
44481                            }
44482                        }
44483                    },
44484                    get optionIsEnabled() {
44485                        const itemId = this._getItemId();
44486                        if (!this.$el || !itemId) return true;
44487                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
44488                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
44489                        return !!allowedOptions.find(opt => opt.id == itemId);
44490                    },
44491                    get isSelected() {
44492                        const itemId = this._getItemId();
44493                        if (!this.$el || !itemId) return false;
44494                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
44495                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
44496                    },
44497                    get isSwatchRequired() {
44498                        if (!this.$el) return false;
44499                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
44500                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
44501                    },
44502                    focusedLabel: false,
44503                    activeTooltipItem: false,
44504                    tooltipPositionElement: false,
44505                    setActiveTooltipItem() {
44506                        const itemId = this._getItemId();
44507                        if (!this.$el || !itemId) return;
44508                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
44509                        this.activeTooltipItem = {
44510                            attribute: attrId,
44511                            item: itemId,
44512                            index: 0
44513                        };
44514                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
44515                    },
44516                    unsetActiveTooltipItem() {
44517                        this.activeTooltipItem = false;
44518                    }
44519                },
44520                confProdPreSelect()
44521            );
44522
44523            if (result.optionConfig && result.optionConfig.attributes) {
44524                const attributes = result.optionConfig.attributes;
44525                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
44526                    let source = attributes;
44527                    if (Array.isArray(attributes)) {
44528                        source = {};
44529                        attributes.forEach(attr => {
44530                            if (attr && attr.id) source[attr.id] = attr;
44531                        });
44532                    }
44533                    const values = Object.values(source);
44534                    const wrapper = Object.assign(values, source);
44535                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
44536                        value: true,
44537                        enumerable: false
44538                    });
44539                    result.optionConfig.attributes = wrapper;
44540                }
44541            }
44542
44543            return result;
44544        }
44545
44546        window.addEventListener('alpine:init', () => {
44547            Alpine.data('initConfigurableSwatchOptions_47280', initConfigurableSwatchOptions_47280);
44548        }, {
44549            once: true
44550        });
44551    </script>
44551
44552    
44553    <div x-data="initConfigurableSwatchOptions_47280" x-defer="intersect">
44554        <div class="pagebuilder-home-hidden">
44555                                            
44556                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
44557                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
44558                        <template x-if="showSwatches">
44559                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-47280-163" role="radiogroup" aria-label="Einband">
44560                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
44561                                    <div :data-option-id="item.id" style="display: contents">
44562                                        <div x-id="getSwatchOptionHtmlIdGroup">
44563    <template x-if="optionIsEnabled">
44564        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
44564self="unsetActiveTooltipItem">
44565            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-47280-163">
44566            <div>
44567                <template x-if="isTextSwatch">
44568                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
44569                </template>
44570                <template x-if="!optionIsActive(163, item.id)">
44571                    <div>
44572                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
44573                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
44574                        </svg>
44575                    </div>
44576                </template>
44577            </div>
44578        </label>
44579    </template>
44580</div>                                    </div>
44581                                </template>
44582                            </div>
44583                        </template>
44584                    </div>
44585                </div>
44586                    </div>
44587    </div>
44588            
44589                                                <div class="meta py-4 pagebuilder-home-hidden">
44590                <div x-data="initMarketingShortText_47280()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
44591                    <!-- Marketing short text -->
44592                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
44593                    </div>
44594
44595                    <!-- Short description -->
44596                                                        </div>
44597
44598                <!-- Series  -->
44599                                    <div class="mb-1">
44600                        <span class="sr-only">Reihe:</span>
44601                        <a href="https://meiner.de/fmv_de/programm/zeitschriften/zeitschrift-fur-asthetik-und-allgemeine-kunstwissenschaft">
44602                            <span>Zeitschrift f&uuml;r &Auml;sthetik und Allgemeine Kunstwissenschaft</span>
44603                        </a>
44604                                                    71/1                                            </div>
44605                
44606                
44607                                                    <div class="mb-1">
44608                        <span x-data="initEditionText_47280()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
44609                            <!-- Marketing short text -->
44610                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 168 Seiten.                        </span>
44611                    </div>
44612                
44613                            </div>
44614            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
44615                
44616                <div class="justify-end" x-data="initPriceBox()" @update-prices-47280.window="updatePrice($event.detail);">
44617                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="47280" data-price-box="product-id-47280"><span class="normal-price">
44618    <span x-data x-id="['product\u002Dprice\u002D47280']" class="price-container price-final_price tax weee">
44619            <span class="price-label">Ab</span>
44620                <span class="approx-price">ca. </span>
44621        <span :id="$id('product\u002Dprice\u002D47280')" data-price-amount="74.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">74,99&nbsp;&euro;</span></span>
44622        </span>
44623</span>
44624
44625
44626</div>                </div>
44627
44628                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
44629                                            <div class="open-access-container open-access-container-47280                    flex mt-4 ml-auto sm:mt-0 hidden">
44630                            <div class="text-gray-700">
44631                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
44632                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
44633                                        Kostenlos online lesen                                    </a>
44634                                </button>
44635                            </div>
44636                        </div>
44637                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb &Auml;sthetik des Computerspiels" aria-label="In den Warenkorb &Auml;sthetik des Computerspiels" data-addto="cart">
44638                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
44639  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
446390 014 0z"></path>
44640</svg>
44641                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
44642                                        In den Warenkorb                                    </span>
44643                                </button>
44644                                                                                                                    
44645<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(47280)" aria-label="Zur Wunschliste hinzuf&uuml;gen &Auml;sthetik des Computerspiels" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
44646    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
44647  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
44648</svg>
44649</button>
44650                                    </div>
44651            </div>
44652        </div>
44653        
44653<script>
44654            function initMarketingShortText_47280() {
44655                var marketingShortTextConfig = {};
44656                if (typeof window.initConfigurableSwatchOptions_47280 === "function") {
44657                    var fullConfig = window.initConfigurableSwatchOptions_47280().optionConfig
44658                    var marketingShortTextConfig = fullConfig.marketing_short_text;
44659                }
44660                return {
44661                    marketingShortText: '',
44662                    config: marketingShortTextConfig,
44663                    productId: '47280',
44664                    getMarketingShortText(detail) {
44665                        this.marketingShortText = detail.productIndex ?
44666                            this.config[detail.productIndex] :
44667                            null;
44668                    },
44669                    eventListeners: {
44670                        ['@listing-configurable-selection-changed.window'](event) {
44671                            if (this.productId == event.detail.productId) {
44672                                this.getMarketingShortText(event.detail);
44673                            }
44674
44675                        }
44676                    }
44677                }
44678            }
44679
44680            function initEditionText_47280() {
44681                var editionTextConfig = {};
44682                if (typeof window.initConfigurableSwatchOptions_47280 === "function") {
44683                    var fullConfig = window.initConfigurableSwatchOptions_47280().optionConfig
44684                    var editionTextConfig = fullConfig.edition;
44685                }
44686                return {
44687                    editionText: '',
44688                    config: editionTextConfig,
44689                    productId: '47280',
44690                    getEditionText(detail) {
44691                        this.editionText = detail.productIndex ?
44692                            this.config[detail.productIndex] :
44693                            null;
44694                    },
44695                    eventListeners: {
44696                        ['@listing-configurable-selection-changed.window'](event) {
44697                            if (this.productId == event.detail.productId) {
44698                                this.getEditionText(event.detail);
44699                            }
44700
44701                        }
44702                    }
44703                }
44704            }
44705        </script>
44705
44706                    </form>
44707                            
44708    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/47264/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21161">
44709        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="47264">
44710                                    <a href="https://meiner.de/fmv_de/hegel-studien-band-59-21161" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
44711            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-47264.window="$el.src = $event.detail" alt="Hegel-Studien Band 59" title="Hegel-Studien Band 59" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787350681_1.jpg" :style="{
44712                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
44713                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
44714            }">
44715                    </a>
44716        <div class="product-info flex flex-col flex-grow ">
44717                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
44718                                    <div class="mb-2 text-sm text-gray-500 font-medium">
44719                                                                                    <a href="https://meiner.de/fmv_de/person/Brady-Bowman-3358/" class="mb-2">
44720                                    Brady Bowman                                                                    </a>
44721                                                                    <span>|</span>
44722                                                                                            <a href="https://meiner.de/fmv_de/person/Dina-Emundts-4132/" class="mb-2">
44723                                    Dina Emundts                                                                    </a>
44724                                                                    <span>|</span>
44725                                                                                            <a href="https://meiner.de/fmv_de/person/Johannes-Georg-Schulein-3356/" class="mb-2">
44726                                    Johannes-Georg Sch&uuml;lein                                                                            (Hrsg.)
44727                                                                    </a>
44728                                                                                                                                    </div>
44729                                <a class="product-item-link" href="https://meiner.de/fmv_de/hegel-studien-band-59-21161">
44730                    Hegel-Studien Band 59                </a>
44731                            </div>
44732
44733            <div x-data="initEditionText_47264()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
44734                <!-- Marketing short text -->
44735                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
44736                </div>
44737            </div>
44738
44739                            <div class="py-1 grid  mb-4 ">
44740                    
44741                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":47264,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":47264,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46911":"1","47260":"1"},"childProductsAlertStatus":{"46911":"0","47260":"0"},"indexMapping":{"163:15":46911,"163:8":47260},"availabilityMessages":{"46911":"Lieferbar innerhalb von 3-5 Tagen","47260":"Download sofort  verf\u00fcgbar"},"openAccess":{"47264":{"status":0},"46911":{"status":0},"47260":{"status":0}}},"availabilityMessages":{"46911":"Lieferbar innerhalb von 3-5 Tagen","47260":"Download sofort  verf\u00fcgbar"},"openAccess":{"47264":{"status":0},"46911":{"status":0},"47260":{"status":0}}}'>
44742        <template x-if="containerVisible">
44743                            <!-- Popup Trigger -->
44744                <div>
44745                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
44746                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
44747                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
44748  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
44749<title>bell</title></svg>
44750</span>
44751                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
44752
44753                    <!-- Popup Modal -->
44754                    <template x-if="showModal">
44755                        <template x-teleport=".page-wrapper">
44756                            <div x-cloak class="fixed inset-0 flex items-center justify-center
44757                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
44758                                <div class="relative bg-white rounded-lg shadow-xl
44759                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
44760                                    <div class="p-6">
44761                                        <!-- Subscription Form for Popup -->
44762                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
44763                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
44764                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
44765                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
44766
44767                                            <div class="flex flex-col gap-3">
44768                                                <div class="flex-grow grow">
44769                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
44770                                                        shadow-xs focus:outline-none focus:outline-hidden
44771                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
44772                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
44773                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
44774                                                </div>
44775                                                <input type="hidden" name="product_id" :value="currentProductId">
44776                                                <input type="hidden" name="type" value="email">
44777
44778                                                
44779                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
44780
44781                                                <div class="amxnotif_guest_action">
44782                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
44783                                                        rounded-md focus:outline-none
44784                                                        focus:outline-hidden focus:ring-2
44785                                                        focus:ring-offset-2 disabled:opacity-50
44786                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
44787                                                        Benachrichtigen                                                    </button>
44788                                                </div>
44789                                            </div>
44790
44791                                                                                            <div class="flex items-start pt-2">
44792                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
44793                                                        text-blue-600 border-gray-300 rounded-sm">
44794                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
44795                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
44796                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
44797                                                </div>
44798                                                                                    </form>
44799                                    </div>
44800
44801                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
44802                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
44803                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
44804  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
44805<title>x</title></svg>
44806                                    </button>
44807                                </div>
44808                            </div>
44809                        </template>
44810                    </template>
44811                </div>
44812                    </template>
44813    </div>
44814
44815<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_47264" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":47264,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46911":"1","47260":"1"},"childProductsAlertStatus":{"46911":"0","47260":"0"},"indexMapping":"{\u0022163:15\u0022:46911,\u0022163:8\u0022:47260}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":47264,"availabilityMessages":{"46911":"Lieferbar innerhalb von 3-5 Tagen","47260":"Download sofort  verf\u00fcgbar"},"openAccess":{"47264":{"status":0},"46911":{"status":0},"47260":{"status":0}}}'>
44816    
44817    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
44818        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
44819        <span x-html="optionsLabelText"></span>
44820    </p>
44821</div>                </div>
44822            
44823                                
44823<script>
44824        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
44825            try {
44826                const attributes = (config && config.attributes) ? config.attributes : null;
44827                if (!attributes) return [];
44828                let attr = null;
44829                if (Array.isArray(attributes)) {
44830                    for (let i = 0; i < attributes.length; i++) {
44831                        const a = attributes[i];
44832                        if (a && a.id == attrId) {
44833                            attr = a;
44834                            break;
44835                        }
44836                    }
44837                } else {
44838                    attr = attributes[attrId];
44839                }
44840                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
44841            } catch (e) {
44842                return [];
44843            }
44844        };
44845
44846        function initConfigurableSwatchOptions_47264() {
44847            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46911"]},{"id":"8","label":"PDF","products":["47260"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46911":{"baseOldPrice":{"amount":119.6261672243},"oldPrice":{"amount":128},"basePrice":{"amount":119.6261672243},"finalPrice":{"amount":128},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47260":{"baseOldPrice":{"amount":88.775699934579},"oldPrice":{"amount":94.99},"basePrice":{"amount":88.775699934579},"finalPrice":{"amount":94.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":88.775699934579},"oldPrice":{"amount":94.99},"basePrice":{"amount":79.823528411765},"finalPrice":{"amount":94.99},"isApproxPrice":null},"productId":"47264","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46911":{"163":"15"},"47260":{"163":"8"}},"salable":{"163":{"15":["46911"],"8":["47260"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"46911":"005067","47260":"005068"},"output":{"46911":"Kartoniert","47260":"PDF"},"original_name":{"46911":"","47260":""},"openaccess_license_link":{"46911":"","47260":""},"openaccess_license_name":{"46911":"","47260":""},"openaccess_external_link":{"46911":"","47260":""},"gpsr_safety_info":{"46911":"","47260":""},"description":{"46911":"","47260":""},"doi":{"46911":"","47260":"10.28937\/978-3-7873-5068-1"},"isbn":{"46911":"978-3-7873-5067-4","47260":"978-3-7873-5068-1"},"marketing_short_text":{"46911":"","47260":""},"recension_text":{"46911":"","47260":""},"language":{"46911":"","47260":""},"cover":{"46911":"Kartoniert","47260":""},"pages":{"46911":"278 Seiten.","47260":""},"edition":{"46911":"","47260":"Unver\u00e4ndertes eBook der 1. Auflage von 2026"},"pod":{"46911":"Nein","47260":"Nein"},"copyright_year":{"46911":"","47260":""},"vlb_tix_link":{"46911":"https:\/\/neu.vlbtix.de\/products\/9783787350674?type=gtin","47260":""},"defaultValues":{"163":"15"}};
44848            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
44849
44850            if (typeof window.amxnotif_wrap_attributes === 'function') {
44851                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
44852                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
44853            }
44854
44855            const configurableOptionsComponent = initConfigurableOptions(
44856                '47264',
44857                config
44858            );
44859            const swatchOptionsComponent = initSwatchOptions(
44860                swatchConfig
44861            );
44862
44863            // DWS - Configurable product preselect start
44864            const confProdPreSelect = () => {
44865                return {
44866                    preselectQuerystringItems() {
44867                        var data = {"id":"46911","output":"15"};
44868                        const urlQueryParams = new URLSearchParams(window.location.search);
44869
44870                                                this.$nextTick(() => {
44871                            setTimeout(() => {
44872                                const rootEl = this.$root || this.$el;
44873                                if (!rootEl) return;
44874
44875                                const applySelection = (attrCode, attrValue) => {
44876                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
44877
44878                                    const attributes = Object.values(this.optionConfig.attributes || {});
44879                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
44880
44881                                    if (targetAttr) {
44882                                        const attrId = String(targetAttr.id);
44883                                        const optionVal = String(attrValue);
44884
44885                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
44886
44887                                        if (inputEl) {
44888                                                                                        inputEl.click();
44889                                            inputEl.dispatchEvent(new Event('change', {
44890                                                bubbles: true
44891                                            }));
44892                                        } else {
44893                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
44894                                            if (selectEl) {
44895                                                selectEl.value = optionVal;
44896                                                selectEl.dispatchEvent(new Event('change', {
44897                                                    bubbles: true
44898                                                }));
44899                                            }
44900                                        }
44901
44902                                                                                this.changeOption(attrId, optionVal, false);
44903                                    }
44904                                };
44905
44906                                                                if (data && typeof data === 'object') {
44907                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
44908                                }
44909
44910                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
44911                                    if (attribute && attribute.code) {
44912                                        let optionValue = urlQueryParams.get(attribute.code);
44913                                        if (optionValue) {
44914                                            let optionId = false;
44915                                            const attributes = Object.values(this.optionConfig.attributes || {});
44916                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
44917
44918                                            let found = false;
44919                                            Object.values(targetAttr.options).map(option => {
44920                                                if (found === false && option.label === optionValue) {
44921                                                    optionId = option.id;
44922                                                    found = true;
44923                                                }
44924                                            });
44925
44926                                            const attrId = String(targetAttr.id);
44927                                            let optionVal = String(optionValue);
44928                                            if (found) {
44929                                                optionVal = String(optionId);
44930                                            }
44931
44932                                            applySelection(attribute.code, optionVal);
44933                                        }
44934                                    }
44935                                });
44936                            }, 100);
44937                        });
44938                    }
44939                }
44940            };
44941            // DWS - Configurable product preselect end
44942
44943            const result = Object.assign(
44944                configurableOptionsComponent,
44945                swatchOptionsComponent, {
44946                    productId: '47264',
44947                    productIndex: 0,
44948                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
44949                    showSwatches: false,
44950                    precalcOptions: {},
44951                    originalInit: configurableOptionsComponent.init,
44952                    init() {
44953                        try {
44954                            this.precalcOptions = {};
44955                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
44956                            this.preselectQuerystringItems();
44957                            if (Array.isArray(attrSource)) {
44958                                attrSource.forEach(attr => {
44959                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
44960                                });
44961                            } else if (attrSource && typeof attrSource === 'object') {
44962                                Object.keys(attrSource).forEach(id => {
44963                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
44964                                });
44965                            }
44966                        } catch (e) {
44967                            console.error('Pre-calc error:', e);
44968                        }
44969
44970                        if (typeof this.originalInit === 'function') {
44971                            this.originalInit();
44972                        }
44973
44974                        try {
44975                            this.initShowSwatchesIntersect();
44976                        } catch (e) {
44977                            console.error('intersect error:', e);
44978                        }
44979                    },
44980
44981                    updateGallery() {
44982                        if (!this.productIndex) return;
44983
44984                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
44985                                method: 'GET',
44986                                headers: {
44987                                    'Content-Type': 'application/json',
44988                                    'X-Requested-With': 'XMLHttpRequest'
44989                                }
44990                            })
44991                            .then(response => response.json())
44992                            .then(data => {
44993                                if (data && data.medium) {
44994                                    window.dispatchEvent(new CustomEvent("update-gallery-47264", {
44995                                        detail: data.medium
44996                                    }));
44997                                }
44998                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
44999                    },
45000
45001
45002                    initShowSwatchesIntersect() {
45003                        const observer = new IntersectionObserver(entries => {
45004                            if (entries[0].isIntersecting) {
45005                                this.showSwatches = true;
45006                                observer.disconnect();
45007                            }
45008                        }, {
45009                            rootMargin: '512px'
45010                        });
45011                        observer.observe(this.$el);
45012                    },
45013                    getOptions(attrId) {
45014                        return this.precalcOptions[attrId] || [];
45015                    },
45016                    getOptionsByAttrId() {
45017                        return this.getOptions(this.$el.dataset.attributeId);
45018                    },
45019                    _getItemId() {
45020                        if (this.item && this.item.id) return this.item.id;
45021                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
45022                    },
45023                    getSwatchOptionHtmlId() {
45024                        const itemId = this._getItemId();
45025                        return itemId ? this.$id(`attribute-option-47264-${itemId}`) : '';
45026                    },
45027                    getSwatchOptionHtmlIdGroup() {
45028                        const itemId = this._getItemId();
45029                        return itemId ? [`attribute-option-47264-${itemId}`] : [];
45030                    },
45031                    getAttributeSwatchData(attributeId) {
45032                        const data = Object.assign({}, this.swatchConfig[attributeId]);
45033                        if (data['additional_data']) {
45034                            try {
45035                                data['details'] = JSON.parse(data['additional_data']);
45036                            } catch (e) {
45037                                data['details'] = {};
45038                            }
45039                        }
45040                        return data;
45041                    },
45042                    getSwatchType(attributeId, optionId) {
45043                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
45044                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
45045                        }
45046                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
45047                            this.swatchConfig[attributeId].details.swatch_input_type :
45048                            "empty";
45049                        if (type === 'visual') {
45050                            const config = this.swatchConfig[attributeId];
45051                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
45052                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
45053                            }
45054                            // Fallback to first option type
45055                            for (const oId in config) {
45056                                if (config[oId] && typeof config[oId].type !== 'undefined') {
45057                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
45058                                }
45059                            }
45060                        }
45061                        return type;
45062                    },
45063                    mapSwatchTypeNumberToTypeCode(type) {
45064                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
45065                    },
45066                    isTextSwatch() {
45067                        const itemId = this._getItemId();
45068                        if (!this.$el || !itemId) return false;
45069                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
45070                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
45071                    },
45072
45073                    getSwatchText() {
45074                        const itemId = this._getItemId();
45075                        if (this.item) return this.item.label || '';
45076                        if (!this.$el || !itemId) return '';
45077                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
45078                        const options = attrId ? this.getOptions(attrId) : [];
45079                        const opt = options.find(o => o.id == itemId);
45080                        return opt ? opt.label : '';
45081                    },
45082                    getSwatchBackgroundStyle() {
45083                        const itemId = this._getItemId();
45084                        if (!this.$el || !itemId) return '';
45085                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
45086                        if (!attrId) return '';
45087                        const type = this.getSwatchType(attrId, itemId);
45088                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
45089                            this.swatchConfig[attrId][itemId] :
45090                            null;
45091                        if (!swatchData) return '';
45092                        if (type === "color") return 'background-color:' + swatchData.value;
45093                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
45094                        return '';
45095                    },
45096                    swatchOptionClasses() {
45097                        const itemId = this._getItemId();
45098                        if (!this.$el || !itemId) return {};
45099                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
45100                        return {
45101                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
45102                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
45103                            'w-6 h-6': !this.isTextSwatch()
45104                        }
45105                    },
45106
45107                    onFocusSwatchItem() {
45108                        const itemId = this._getItemId();
45109                        if (itemId) this.focusedLabel = itemId;
45110                    },
45111                    onChangeOption() {
45112                        const itemId = this._getItemId();
45113                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
45114                        if (attrId && itemId) this.changeOption(attrId, itemId);
45115                    },
45116                    changeOption(attributeId, value) {
45117                        if (value === '') {
45118                            return;
45119                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
45120                        } else {
45121                            this.selectedValues[attributeId] = value;
45122                        }
45123
45124                        this.findSimpleIndex();
45125                        this.findAllowedAttributeOptions();
45126                        this.updatePrices();
45127                        this.updateGallery();
45128
45129                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
45130                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
45131
45132                        const eventDetail = {
45133                            productId: this.productId,
45134                            optionId: attributeId,
45135                            value: value,
45136                            productIndex: this.productIndex || 0,
45137                            selectedValues: this.selectedValues,
45138                            candidates: candidates,
45139                            sourceElement: this.$el
45140                        };
45141
45142                        // Dispatch for Amasty
45143                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
45144                            detail: eventDetail
45145                        }));
45146
45147                        // Dispatch for Hyva listing
45148                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
45149                            detail: eventDetail
45150                        }));
45151                    },
45152
45153
45154                    clearOptionIfActive() {
45155                        const itemId = this._getItemId();
45156                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
45157                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
45158                            this.changeOption(attrId, '');
45159
45160                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
45161                            if (!input && this.$el?.querySelector) {
45162                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
45163                            }
45164                            if (!input && this.$el?.closest) {
45165                                const root = this.$el.closest('[data-product-id]') || this.$el;
45166                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
45167                            }
45168                            if (input) {
45169                                input.checked = false;
45170                            }
45171                        }
45172                    },
45173                    get optionIsEnabled() {
45174                        const itemId = this._getItemId();
45175                        if (!this.$el || !itemId) return true;
45176                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
45177                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
45178                        return !!allowedOptions.find(opt => opt.id == itemId);
45179                    },
45180                    get isSelected() {
45181                        const itemId = this._getItemId();
45182                        if (!this.$el || !itemId) return false;
45183                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
45184                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
45185                    },
45186                    get isSwatchRequired() {
45187                        if (!this.$el) return false;
45188                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
45189                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
45190                    },
45191                    focusedLabel: false,
45192                    activeTooltipItem: false,
45193                    tooltipPositionElement: false,
45194                    setActiveTooltipItem() {
45195                        const itemId = this._getItemId();
45196                        if (!this.$el || !itemId) return;
45197                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
45198                        this.activeTooltipItem = {
45199                            attribute: attrId,
45200                            item: itemId,
45201                            index: 0
45202                        };
45203                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
45204                    },
45205                    unsetActiveTooltipItem() {
45206                        this.activeTooltipItem = false;
45207                    }
45208                },
45209                confProdPreSelect()
45210            );
45211
45212            if (result.optionConfig && result.optionConfig.attributes) {
45213                const attributes = result.optionConfig.attributes;
45214                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
45215                    let source = attributes;
45216                    if (Array.isArray(attributes)) {
45217                        source = {};
45218                        attributes.forEach(attr => {
45219                            if (attr && attr.id) source[attr.id] = attr;
45220                        });
45221                    }
45222                    const values = Object.values(source);
45223                    const wrapper = Object.assign(values, source);
45224                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
45225                        value: true,
45226                        enumerable: false
45227                    });
45228                    result.optionConfig.attributes = wrapper;
45229                }
45230            }
45231
45232            return result;
45233        }
45234
45235        window.addEventListener('alpine:init', () => {
45236            Alpine.data('initConfigurableSwatchOptions_47264', initConfigurableSwatchOptions_47264);
45237        }, {
45238            once: true
45239        });
45240    </script>
45240
45241    
45242    <div x-data="initConfigurableSwatchOptions_47264" x-defer="intersect">
45243        <div class="pagebuilder-home-hidden">
45244                                            
45245                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
45246                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
45247                        <template x-if="showSwatches">
45248                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-47264-163" role="radiogroup" aria-label="Einband">
45249                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
45250                                    <div :data-option-id="item.id" style="display: contents">
45251                                        <div x-id="getSwatchOptionHtmlIdGroup">
45252    <template x-if="optionIsEnabled">
45253        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
45253self="unsetActiveTooltipItem">
45254            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-47264-163">
45255            <div>
45256                <template x-if="isTextSwatch">
45257                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
45258                </template>
45259                <template x-if="!optionIsActive(163, item.id)">
45260                    <div>
45261                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
45262                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
45263                        </svg>
45264                    </div>
45265                </template>
45266            </div>
45267        </label>
45268    </template>
45269</div>                                    </div>
45270                                </template>
45271                            </div>
45272                        </template>
45273                    </div>
45274                </div>
45275                    </div>
45276    </div>
45277            
45278                                                <div class="meta py-4 pagebuilder-home-hidden">
45279                <div x-data="initMarketingShortText_47264()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
45280                    <!-- Marketing short text -->
45281                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
45282                    </div>
45283
45284                    <!-- Short description -->
45285                                                        </div>
45286
45287                <!-- Series  -->
45288                
45289                
45290                                                    <div class="mb-1">
45291                        <span x-data="initEditionText_47264()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
45292                            <!-- Marketing short text -->
45293                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 278 Seiten.                        </span>
45294                    </div>
45295                
45296                            </div>
45297            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
45298                
45299                <div class="justify-end" x-data="initPriceBox()" @update-prices-47264.window="updatePrice($event.detail);">
45300                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="47264" data-price-box="product-id-47264"><span class="normal-price">
45301    <span x-data x-id="['product\u002Dprice\u002D47264']" class="price-container price-final_price tax weee">
45302            <span class="price-label">Ab</span>
45303                <span class="approx-price">ca. </span>
45304        <span :id="$id('product\u002Dprice\u002D47264')" data-price-amount="94.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">94,99&nbsp;&euro;</span></span>
45305        </span>
45306</span>
45307
45308
45309</div>                </div>
45310
45311                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
45312                                            <div class="open-access-container open-access-container-47264                    flex mt-4 ml-auto sm:mt-0 hidden">
45313                            <div class="text-gray-700">
45314                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
45315                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
45316                                        Kostenlos online lesen                                    </a>
45317                                </button>
45318                            </div>
45319                        </div>
45320                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Hegel-Studien Band 59" aria-label="In den Warenkorb Hegel-Studien Band 59" data-addto="cart">
45321                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
45322  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
453220 014 0z"></path>
45323</svg>
45324                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
45325                                        In den Warenkorb                                    </span>
45326                                </button>
45327                                                                                                                    
45328<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(47264)" aria-label="Zur Wunschliste hinzuf&uuml;gen Hegel-Studien Band 59" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
45329    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
45330  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
45331</svg>
45332</button>
45333                                    </div>
45334            </div>
45335        </div>
45336        
45336<script>
45337            function initMarketingShortText_47264() {
45338                var marketingShortTextConfig = {};
45339                if (typeof window.initConfigurableSwatchOptions_47264 === "function") {
45340                    var fullConfig = window.initConfigurableSwatchOptions_47264().optionConfig
45341                    var marketingShortTextConfig = fullConfig.marketing_short_text;
45342                }
45343                return {
45344                    marketingShortText: '',
45345                    config: marketingShortTextConfig,
45346                    productId: '47264',
45347                    getMarketingShortText(detail) {
45348                        this.marketingShortText = detail.productIndex ?
45349                            this.config[detail.productIndex] :
45350                            null;
45351                    },
45352                    eventListeners: {
45353                        ['@listing-configurable-selection-changed.window'](event) {
45354                            if (this.productId == event.detail.productId) {
45355                                this.getMarketingShortText(event.detail);
45356                            }
45357
45358                        }
45359                    }
45360                }
45361            }
45362
45363            function initEditionText_47264() {
45364                var editionTextConfig = {};
45365                if (typeof window.initConfigurableSwatchOptions_47264 === "function") {
45366                    var fullConfig = window.initConfigurableSwatchOptions_47264().optionConfig
45367                    var editionTextConfig = fullConfig.edition;
45368                }
45369                return {
45370                    editionText: '',
45371                    config: editionTextConfig,
45372                    productId: '47264',
45373                    getEditionText(detail) {
45374                        this.editionText = detail.productIndex ?
45375                            this.config[detail.productIndex] :
45376                            null;
45377                    },
45378                    eventListeners: {
45379                        ['@listing-configurable-selection-changed.window'](event) {
45380                            if (this.productId == event.detail.productId) {
45381                                this.getEditionText(event.detail);
45382                            }
45383
45384                        }
45385                    }
45386                }
45387            }
45388        </script>
45388
45389                    </form>
45390                            
45391    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/47209/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21935">
45392        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="47209">
45393                                    <a href="https://meiner.de/fmv_de/mythos-21935" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
45394            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-47209.window="$el.src = $event.detail" alt="Mythos" title="Mythos" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351732_1.jpg" :style="{
45395                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
45396                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
45397            }">
45398                    </a>
45399        <div class="product-info flex flex-col flex-grow ">
45400                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
45401                                    <div class="mb-2 text-sm text-gray-500 font-medium">
45402                                                                                    <a href="https://meiner.de/fmv_de/person/Ralf-Becker-3266/" class="mb-2">
45403                                    Ralf Becker                                                                    </a>
45404                                                                    <span>|</span>
45405                                                                                            <a href="https://meiner.de/fmv_de/person/Christian-Bermes-3208/" class="mb-2">
45406                                    Christian Bermes                                                                    </a>
45407                                                                    <span>|</span>
45408                                                                                            <a href="https://meiner.de/fmv_de/person/Annika-Schlitte-8726/" class="mb-2">
45409                                    Annika Schlitte                                                                            (Hrsg.)
45410                                                                    </a>
45411                                                                                                                                    </div>
45412                                <a class="product-item-link" href="https://meiner.de/fmv_de/mythos-21935">
45413                    Mythos                </a>
45414                            </div>
45415
45416            <div x-data="initEditionText_47209()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
45417                <!-- Marketing short text -->
45418                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
45419                </div>
45420            </div>
45421
45422                            <div class="py-1 grid  mb-4 ">
45423                    
45424                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":47209,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":47209,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46908":"1","47250":"1"},"childProductsAlertStatus":{"46908":"0","47250":"0"},"indexMapping":{"163:15":46908,"163:8":47250},"availabilityMessages":{"46908":"Lieferbar innerhalb von 3-5 Tagen","47250":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"47209":{"status":0}
45424,"46908":{"status":0},"47250":{"status":0}}},"availabilityMessages":{"46908":"Lieferbar innerhalb von 3-5 Tagen","47250":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"47209":{"status":0},"46908":{"status":0},"47250":{"status":0}}}'>
45425        <template x-if="containerVisible">
45426                            <!-- Popup Trigger -->
45427                <div>
45428                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
45429                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
45430                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
45431  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
45432<title>bell</title></svg>
45433</span>
45434                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
45435
45436                    <!-- Popup Modal -->
45437                    <template x-if="showModal">
45438                        <template x-teleport=".page-wrapper">
45439                            <div x-cloak class="fixed inset-0 flex items-center justify-center
45440                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
45441                                <div class="relative bg-white rounded-lg shadow-xl
45442                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
45443                                    <div class="p-6">
45444                                        <!-- Subscription Form for Popup -->
45445                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
45446                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
45447                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
45448                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
45449
45450                                            <div class="flex flex-col gap-3">
45451                                                <div class="flex-grow grow">
45452                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
45453                                                        shadow-xs focus:outline-none focus:outline-hidden
45454                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
45455                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
45456                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
45457                                                </div>
45458                                                <input type="hidden" name="product_id" :value="currentProductId">
45459                                                <input type="hidden" name="type" value="email">
45460
45461                                                
45462                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
45463
45464                                                <div class="amxnotif_guest_action">
45465                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
45466                                                        rounded-md focus:outline-none
45467                                                        focus:outline-hidden focu
45467s:ring-2
45468                                                        focus:ring-offset-2 disabled:opacity-50
45469                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
45470                                                        Benachrichtigen                                                    </button>
45471                                                </div>
45472                                            </div>
45473
45474                                                                                            <div class="flex items-start pt-2">
45475                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
45476                                                        text-blue-600 border-gray-300 rounded-sm">
45477                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
45478                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
45479                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
45480                                                </div>
45481                                                                                    </form>
45482                                    </div>
45483
45484                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
45485                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
45486                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
45487  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
45488<title>x</title></svg>
45489                                    </button>
45490                                </div>
45491                            </div>
45492                        </template>
45493                    </template>
45494                </div>
45495                    </template>
45496    </div>
45497
45498<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_47209" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":47209,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46908":"1","47250":"1"},"childProductsAlertStatus":{"46908":"0","47250":"0"},"indexMapping":"{\u0022163:15\u0022:46908,\u0022163:8\u0022:47250}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":47209,"availabilityMessages":{"46908":"Lieferbar innerhalb von 3-5 Tagen","47250":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"47209":{"status":0},"46908":{"status":0},"47250":{"status":0}}}'>
45499    
45500    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
45501        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
45502        <span x-html="optionsLabelText"></span>
45503    </p>
45504</div>                </div>
45505            
45506                                
45506<script>
45507        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
45508            try {
45509                const attributes = (config && config.attributes) ? config.attributes : null;
45510                if (!attributes) return [];
45511                let attr = null;
45512                if (Array.isArray(attributes)) {
45513                    for (let i = 0; i < attributes.length; i++) {
45514                        const a = attributes[i];
45515                        if (a && a.id == attrId) {
45516                            attr = a;
45517                            break;
45518                        }
45519                    }
45520                } else {
45521                    attr = attributes[attrId];
45522                }
45523                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
45524            } catch (e) {
45525                return [];
45526            }
45527        };
45528
45529        function initConfigurableSwatchOptions_47209() {
45530            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46908"]},{"id":"8","label":"PDF","products":["47250"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46908":{"baseOldPrice":{"amount":67.289718626168},"oldPrice":{"amount":72},"basePrice":{"amount":67.289718626168},"finalPrice":{"amount":72},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47250":{"baseOldPrice":{"amount":46.719625168224},"oldPrice":{"amount":49.99},"basePrice":{"amount":46.719625168224},"finalPrice":{"amount":49.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":46.719625168224},"oldPrice":{"amount":49.99},"basePrice":{"amount":42.008402361345},"finalPrice":{"amount":49.99},"isApproxPrice":null},"productId":"47209","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46908":{"163":"15"},"47250":{"163":"8"}},"salable":{"163":{"15":["46908"],"8":["47250"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"46908":"000845-2026-1","47250":"eZKPh-2026-1"},"output":{"46908":"Kartoniert","47250":"PDF"},"original_name":{"46908":"","47250":""},"openaccess_license_link":{"46908":"","47250":""},"openaccess_license_name":{"46908":"","47250":""},"openaccess_external_link":{"46908":"","47250":""},"gpsr_safety_info":{"46908":"","47250":""},"description":{"46908":"Ernst Cassirer erkannte, dass der Mythos keine veraltete Lebensweise ist, sondern eine Form der Sinnstiftung und Weltgestaltung, die unser gesellschaftliches und politisches Leben noch heute ma\u00dfgeblich mitpr\u00e4gt. Mythen bieten zwar Orientierungsm\u00f6glichkeiten, bergen aber auch die Gefahr, in Ideologien umzuschlagen und somit individuelle sowie gesellschaftliche Selbstbestimmung zu gef\u00e4hrden. <br\/><br\/>Der Band reflektiert diese Ambivalenz des Mythos in aktuellen politischen und gesellschaftlichen Kontexten. Die Beitr\u00e4ge verbinden philosophische, anthropologische, rechtspolitische und \u00e4sthetische Perspektiven und zeigen, wie Mythen politische Orientierung, Meinungsbildung und Vorstellungen von Gerechtigkeit beeinflussen, zugleich aber nicht immun gegen Verblendung sind. ","47250":"Ernst Cassirer erkannte, dass der Mythos keine veraltete Lebensweise ist, sondern eine Form der Sinnstiftung und Weltgestaltung, die unser gesellschaftliches und politisches Leben noch heute ma\u00dfgeblich mitpr\u00e4gt. Mythen bieten zwar Orientierungsm\u00f6glichkeiten, bergen aber auch die Gefahr, in Ideologien umzuschlagen und somit individuelle sowie gesellschaftliche Selbstbestimmung zu gef\u00e4hrden. <br\/><br\/>Der Band reflektiert diese Ambivalenz des Mythos in aktuellen politischen und gesellschaftlichen Kontexten. Die Beitr\u00e4ge verbinden philosophische, anthropologische, rechtspolitische und \u00e4sthetische Perspektiven und zeigen, wie Mythen politische Orientierung, Meinungsbildung und Vorstellungen von Gerechtigkeit beeinflussen, zugleich aber nicht immun gegen Verblendung sind. "},"doi":{"46908":"","47250":"10.28937\/978-3-7873-5173-2"},"isbn":{"46908":"978-3-7873-5172-5","47250":"978-3-7873-5173-2"},"marketing_short_text":{"46908":"","47250":""},"recension_text":{"46908":"","47250":""},"language":{"46908":"","47250":""},"cover":{"46908":"Kartoniert","47250":""},"pages":{"46908":"184 Seiten.","47250":"184"},"edition":{"46908":"","47250":"Unver\u00e4ndertes eJournal der 1. Auflage von 2026"},"pod":{"46908":"Nein","47250":"Nein"},"copyright_year":{"46908":"","47250":""},"vlb_tix_link":{"46908":"https:\/\/neu.vlbtix.de\/products\/9783787351725?type=gtin","47250":""},"defaultValues":{"163":"15"}};
45531            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
45532
45533            if (typeof window.amxnotif_wrap_attributes === 'function') {
45534                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
45535                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
45536            }
45537
45538            const configurableOptionsComponent = initConfigurableOptions(
45539                '47209',
45540                config
45541            );
45542            const swatchOptionsComponent = initSwatchOptions(
45543                swatchConfig
45544            );
45545
45546            // DWS - Configurable product preselect start
45547            const confProdPreSelect = () => {
45548                return {
45549                    preselectQuerystringItems() {
45550                        var data = {"id":"46908","output":"15"};
45551                        const urlQueryParams = new URLSearchParams(window.location.search);
45552
45553                                                this.$nextTick(() => {
45554                            setTimeout(() => {
45555                                const rootEl = this.$root || this.$el;
45556                                if (!rootEl) return;
45557
45558                                const applySelection = (attrCode, attrValue) => {
45559                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
45560
45561                                    const attributes = Object.values(this.optionConfig.attributes || {});
45562                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
45563
45564                                    if (targetAttr) {
45565                                        const attrId = String(targetAttr.id);
45566                                        const optionVal = String(attrValue);
45567
45568                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
45569
45570                                        if (inputEl) {
45571                                                                                        inputEl.click();
45572                                            inputEl.dispatchEvent(new Event('change', {
45573                                                bubbles: true
45574                                            }));
45575                                        } else {
45576                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
45577                                            if (selectEl) {
45578                                                selectEl.value = optionVal;
45579                                                selectEl.dispatchEvent(new Event('change', {
45580                                                    bubbles: true
45581                                                }));
45582                                            }
45583                                        }
45584
45585                                                                                this.changeOption(attrId, optionVal, false);
45586                                    }
45587                                };
45588
45589                                                                if (data && typeof data === 'object') {
45590                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
45591                                }
45592
45593                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
45594                                    if (attribute && attribute.code) {
45595                                        let optionValue = urlQueryParams.get(attribute.code);
45596                                        if (optionValue) {
45597                                            let optionId = false;
45598                                            const attributes = Object.values(this.optionConfig.attributes || {});
45599                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
45600
45601                                            let found = false;
45602                                            Object.values(targetAttr.options).map(option => {
45603                                                if (found === false && option.label === optionValue) {
45604                                                    optionId = option.id;
45605                                                    found = true;
45606                                                }
45607                                            });
45608
45609                                            const attrId = String(targetAttr.id);
45610                                            let optionVal = String(optionValue);
45611                                            if (found) {
45612                                                optionVal = String(optionId);
45613                                            }
45614
45615                                            applySelection(attribute.code, optionVal);
45616                                        }
45617                                    }
45618                                });
45619                            }, 100);
45620                        });
45621                    }
45622                }
45623            };
45624            // DWS - Configurable product preselect end
45625
45626            const result = Object.assign(
45627                configurableOptionsComponent,
45628                swatchOptionsComponent, {
45629                    productId: '47209',
45630                    productIndex: 0,
45631                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
45632                    showSwatches: false,
45633                    precalcOptions: {},
45634                    originalInit: configurableOptionsComponent.init,
45635                    init() {
45636                        try {
45637                            this.precalcOptions = {};
45638                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
45639                            this.preselectQuerystringItems();
45640                            if (Array.isArray(attrSource)) {
45641                                attrSource.forEach(attr => {
45642                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
45643                                });
45644                            } else if (attrSource && typeof attrSource === 'object') {
45645                                Object.keys(attrSource).forEach(id => {
45646                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
45647                                });
45648                            }
45649                        } catch (e) {
45650                            console.error('Pre-calc error:', e);
45651                        }
45652
45653                        if (typeof this.originalInit === 'function') {
45654                            this.originalInit();
45655                        }
45656
45657                        try {
45658                            this.initShowSwatchesIntersect();
45659                        } catch (e) {
45660                            console.error('intersect error:', e);
45661                        }
45662                    },
45663
45664                    updateGallery() {
45665                        if (!this.productIndex) return;
45666
45667                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
45668                                method: 'GET',
45669                                headers: {
45670                                    'Content-Type': 'application/json',
45671                                    'X-Requested-With': 'XMLHttpRequest'
45672                                }
45673                            })
45674                            .then(response => response.json())
45675                            .then(data => {
45676                                if (data && data.medium) {
45677                                    window.dispatchEvent(new CustomEvent("update-gallery-47209", {
45678                                        detail: data.medium
45679                                    }));
45680                                }
45681                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
45682                    },
45683
45684
45685                    initShowSwatchesIntersect() {
45686                        const observer = new IntersectionObserver(entries => {
45687                            if (entries[0].isIntersecting) {
45688                                this.showSwatches = true;
45689                                observer.disconnect();
45690                            }
45691                        }, {
45692                            rootMargin: '512px'
45693                        });
45694                        observer.observe(this.$el);
45695                    },
45696                    getOptions(attrId) {
45697                        return this.precalcOptions[attrId] || [];
45698                    },
45699                    getOptionsByAttrId() {
45700                        return this.getOptions(this.$el.dataset.attributeId);
45701                    },
45702                    _getItemId() {
45703                        if (this.item && this.item.id) return this.item.id;
45704                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
45705                    },
45706                    getSwatchOptionHtmlId() {
45707                        const itemId = this._getItemId();
45708                        return itemId ? this.$id(`attribute-option-47209-${itemId}`) : '';
45709                    },
45710                    getSwatchOptionHtmlIdGroup() {
45711                        const itemId = this._getItemId();
45712                        return itemId ? [`attribute-option-47209-${itemId}`] : [];
45713                    },
45714                    getAttributeSwatchData(attributeId) {
45715                        const data = Object.assign({}, this.swatchConfig[attributeId]);
45716                        if (data['additional_data']) {
45717                            try {
45718                                data['details'] = JSON.parse(data['additional_data']);
45719                            } catch (e) {
45720                                data['details'] = {};
45721                            }
45722                        }
45723                        return data;
45724                    },
45725                    getSwatchType(attributeId, optionId) {
45726                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
45727                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
45728                        }
45729                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
45730                            this.swatchConfig[attributeId].details.swatch_input_type :
45731                            "empty";
45732                        if (type === 'visual') {
45733                            const config = this.swatchConfig[attributeId];
45734                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
45735                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
45736                            }
45737                            // Fallback to first option type
45738                            for (const oId in config) {
45739                                if (config[oId] && typeof config[oId].type !== 'undefined') {
45740                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
45741                                }
45742                            }
45743                        }
45744                        return type;
45745                    },
45746                    mapSwatchTypeNumberToTypeCode(type) {
45747                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
45748                    },
45749                    isTextSwatch() {
45750                        const itemId = this._getItemId();
45751                        if (!this.$el || !itemId) return false;
45752                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
45753                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
45754                    },
45755
45756                    getSwatchText() {
45757                        const itemId = this._getItemId();
45758                        if (this.item) return this.item.label || '';
45759                        if (!this.$el || !itemId) return '';
45760                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
45761                        const options = attrId ? this.getOptions(attrId) : [];
45762                        const opt = options.find(o => o.id == itemId);
45763                        return opt ? opt.label : '';
45764                    },
45765                    getSwatchBackgroundStyle() {
45766                        const itemId = this._getItemId();
45767                        if (!this.$el || !itemId) return '';
45768                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
45769                        if (!attrId) return '';
45770                        const type = this.getSwatchType(attrId, itemId);
45771                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
45772                            this.swatchConfig[attrId][itemId] :
45773                            null;
45774                        if (!swatchData) return '';
45775                        if (type === "color") return 'background-color:' + swatchData.value;
45776                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
45777                        return '';
45778                    },
45779                    swatchOptionClasses() {
45780                        const itemId = this._getItemId();
45781                        if (!this.$el || !itemId) return {};
45782                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
45783                        return {
45784                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
45785                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
45786                            'w-6 h-6': !this.isTextSwatch()
45787                        }
45788                    },
45789
45790                    onFocusSwatchItem() {
45791                        const itemId = this._getItemId();
45792                        if (itemId) this.focusedLabel = itemId;
45793                    },
45794                    onChangeOption() {
45795                        const itemId = this._getItemId();
45796                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
45797                        if (attrId && itemId) this.changeOption(attrId, itemId);
45798                    },
45799                    changeOption(attributeId, value) {
45800                        if (value === '') {
45801                            return;
45802                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
45803                        } else {
45804                            this.selectedValues[attributeId] = value;
45805                        }
45806
45807                        this.findSimpleIndex();
45808                        this.findAllowedAttributeOptions();
45809                        this.updatePrices();
45810                        this.updateGallery();
45811
45812                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
45813                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
45814
45815                        const eventDetail = {
45816                            productId: this.productId,
45817                            optionId: attributeId,
45818                            value: value,
45819                            productIndex: this.productIndex || 0,
45820                            selectedValues: this.selectedValues,
45821                            candidates: candidates,
45822                            sourceElement: this.$el
45823                        };
45824
45825                        // Dispatch for Amasty
45826                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
45827                            detail: eventDetail
45828                        }));
45829
45830                        // Dispatch for Hyva listing
45831                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
45832                            detail: eventDetail
45833                        }));
45834                    },
45835
45836
45837                    clearOptionIfActive() {
45838                        const itemId = this._getItemId();
45839                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
45840                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
45841                            this.changeOption(attrId, '');
45842
45843                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
45844                            if (!input && this.$el?.querySelector) {
45845                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
45846                            }
45847                            if (!input && this.$el?.closest) {
45848                                const root = this.$el.closest('[data-product-id]') || this.$el;
45849                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
45850                            }
45851                            if (input) {
45852                                input.checked = false;
45853                            }
45854                        }
45855                    },
45856                    get optionIsEnabled() {
45857                        const itemId = this._getItemId();
45858                        if (!this.$el || !itemId) return true;
45859                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
45860                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
45861                        return !!allowedOptions.find(opt => opt.id == itemId);
45862                    },
45863                    get isSelected() {
45864                        const itemId = this._getItemId();
45865                        if (!this.$el || !itemId) return false;
45866                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
45867                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
45868                    },
45869                    get isSwatchRequired() {
45870                        if (!this.$el) return false;
45871                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
45872                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
45873                    },
45874                    focusedLabel: false,
45875                    activeTooltipItem: false,
45876                    tooltipPositionElement: false,
45877                    setActiveTooltipItem() {
45878                        const itemId = this._getItemId();
45879                        if (!this.$el || !itemId) return;
45880                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
45881                        this.activeTooltipItem = {
45882                            attribute: attrId,
45883                            item: itemId,
45884                            index: 0
45885                        };
45886                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
45887                    },
45888                    unsetActiveTooltipItem() {
45889                        this.activeTooltipItem = false;
45890                    }
45891                },
45892                confProdPreSelect()
45893            );
45894
45895            if (result.optionConfig && result.optionConfig.attributes) {
45896                const attributes = result.optionConfig.attributes;
45897                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
45898                    let source = attributes;
45899                    if (Array.isArray(attributes)) {
45900                        source = {};
45901                        attributes.forEach(attr => {
45902                            if (attr && attr.id) source[attr.id] = attr;
45903                        });
45904                    }
45905                    const values = Object.values(source);
45906                    const wrapper = Object.assign(values, source);
45907                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
45908                        value: true,
45909                        enumerable: false
45910                    });
45911                    result.optionConfig.attributes = wrapper;
45912                }
45913            }
45914
45915            return result;
45916        }
45917
45918        window.addEventListener('alpine:init', () => {
45919            Alpine.data('initConfigurableSwatchOptions_47209', initConfigurableSwatchOptions_47209);
45920        }, {
45921            once: true
45922        });
45923    </script>
45923
45924    
45925    <div x-data="initConfigurableSwatchOptions_47209" x-defer="intersect">
45926        <div class="pagebuilder-home-hidden">
45927                                            
45928                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
45929                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
45930                        <template x-if="showSwatches">
45931                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-47209-163" role="radiogroup" aria-label="Einband">
45932                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
45933                                    <div :data-option-id="item.id" style="display: contents">
45934                                        <div x-id="getSwatchOptionHtmlIdGroup">
45935    <template x-if="optionIsEnabled">
45936        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
45936self="unsetActiveTooltipItem">
45937            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-47209-163">
45938            <div>
45939                <template x-if="isTextSwatch">
45940                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
45941                </template>
45942                <template x-if="!optionIsActive(163, item.id)">
45943                    <div>
45944                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
45945                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
45946                        </svg>
45947                    </div>
45948                </template>
45949            </div>
45950        </label>
45951    </template>
45952</div>                                    </div>
45953                                </template>
45954                            </div>
45955                        </template>
45956                    </div>
45957                </div>
45958                    </div>
45959    </div>
45960            
45961                                                <div class="meta py-4 pagebuilder-home-hidden">
45962                <div x-data="initMarketingShortText_47209()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
45963                    <!-- Marketing short text -->
45964                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
45965                    </div>
45966
45967                    <!-- Short description -->
45968                                                                <div class="short-description">
45969                            Ernst Cassirer erkannte, dass der Mythos keine veraltete Lebensweise ist, sondern eine Form der Sinnstiftung und Weltgestaltung, die unser gesellschaftliches und politisches Leben noch heute ...                            <a href="https://meiner.de/fmv_de/mythos-21935" class="underline">mehr</a>
45970                        </div>
45971                                    </div>
45972
45973                <!-- Series  -->
45974                                    <div class="mb-1">
45975                        <span class="sr-only">Reihe:</span>
45976                        <a href="https://meiner.de/fmv_de/programm/zeitschriften/zeitschrift-fur-kulturphilosophie">
45977                            <span>Zeitschrift f&uuml;r Kulturphilosophie</span>
45978                        </a>
45979                                                    2026/1                                            </div>
45980                
45981                
45982                                                    <div class="mb-1">
45983                        <span x-data="initEditionText_47209()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
45984                            <!-- Marketing short text -->
45985                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 184 Seiten.                        </span>
45986                    </div>
45987                
45988                            </div>
45989            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
45990                
45991                <div class="justify-end" x-data="initPriceBox()" @update-prices-47209.window="updatePrice($event.detail);">
45992                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="47209" data-price-box="product-id-47209"><span class="normal-price">
45993    <span x-data x-id="['product\u002Dprice\u002D47209']" class="price-container price-final_price tax weee">
45994            <span class="price-label">Ab</span>
45995                <span class="approx-price">ca. </span>
45996        <span :id="$id('product\u002Dprice\u002D47209')" data-price-amount="49.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">49,99&nbsp;&euro;</span></span>
45997        </span>
45998</span>
45999
46000
46001</div>                </div>
46002
46003                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
46004                                            <div class="open-access-container open-access-container-47209                    flex mt-4 ml-auto sm:mt-0 hidden">
46005                            <div class="text-gray-700">
46006                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
46007                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
46008                                        Kostenlos online lesen                                    </a>
46009                                </button>
46010                            </div>
46011                        </div>
46012                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Mythos" aria-label="In den Warenkorb Mythos" data-addto="cart">
46013                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
46014  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
460140 014 0z"></path>
46015</svg>
46016                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
46017                                        In den Warenkorb                                    </span>
46018                                </button>
46019                                                                                                                    
46020<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(47209)" aria-label="Zur Wunschliste hinzuf&uuml;gen Mythos" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
46021    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
46022  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
46023</svg>
46024</button>
46025                                    </div>
46026            </div>
46027        </div>
46028        
46028<script>
46029            function initMarketingShortText_47209() {
46030                var marketingShortTextConfig = {};
46031                if (typeof window.initConfigurableSwatchOptions_47209 === "function") {
46032                    var fullConfig = window.initConfigurableSwatchOptions_47209().optionConfig
46033                    var marketingShortTextConfig = fullConfig.marketing_short_text;
46034                }
46035                return {
46036                    marketingShortText: '',
46037                    config: marketingShortTextConfig,
46038                    productId: '47209',
46039                    getMarketingShortText(detail) {
46040                        this.marketingShortText = detail.productIndex ?
46041                            this.config[detail.productIndex] :
46042                            null;
46043                    },
46044                    eventListeners: {
46045                        ['@listing-configurable-selection-changed.window'](event) {
46046                            if (this.productId == event.detail.productId) {
46047                                this.getMarketingShortText(event.detail);
46048                            }
46049
46050                        }
46051                    }
46052                }
46053            }
46054
46055            function initEditionText_47209() {
46056                var editionTextConfig = {};
46057                if (typeof window.initConfigurableSwatchOptions_47209 === "function") {
46058                    var fullConfig = window.initConfigurableSwatchOptions_47209().optionConfig
46059                    var editionTextConfig = fullConfig.edition;
46060                }
46061                return {
46062                    editionText: '',
46063                    config: editionTextConfig,
46064                    productId: '47209',
46065                    getEditionText(detail) {
46066                        this.editionText = detail.productIndex ?
46067                            this.config[detail.productIndex] :
46068                            null;
46069                    },
46070                    eventListeners: {
46071                        ['@listing-configurable-selection-changed.window'](event) {
46072                            if (this.productId == event.detail.productId) {
46073                                this.getEditionText(event.detail);
46074                            }
46075
46076                        }
46077                    }
46078                }
46079            }
46080        </script>
46080
46081                    </form>
46082                            
46083    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/47263/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21917">
46084        <input name="form_key" type="hidden" value="GKM8ji7I3dapa3xj">        <input type="hidden" name="product" value="47263">
46085                                    <a href="https://meiner.de/fmv_de/kulturwissenschaftliche-zeitschrift-21917" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
46086            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-47263.window="$el.src = $event.detail" alt="Kulturwissenschaftliche Zeitschrift" title="Kulturwissenschaftliche Zeitschrift" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351718_1.jpg" :style="{
46087                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
46088                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
46089            }">
46090                    </a>
46091        <div class="product-info flex flex-col flex-grow ">
46092                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
46093                                    <div class="mb-2 text-sm text-gray-500 font-medium">
46094                                                                                    <a href="https://meiner.de/fmv_de/person/Kulturwissenschaftliche-Gesellschaft-16079/" class="mb-2">
46095                                    Kulturwissenschaftliche Gesellschaft                                                                            (Hrsg.)
46096                                                                    </a>
46097                                                                                                                                    </div>
46098                                <a class="product-item-link" href="https://meiner.de/fmv_de/kulturwissenschaftliche-zeitschrift-21917">
46099                    Kulturwissenschaftliche Zeitschrift                </a>
46100                            </div>
46101
46102            <div x-data="initEditionText_47263()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
46103                <!-- Marketing short text -->
46104                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
46105                </div>
46106            </div>
46107
46108                            <div class="py-1 grid  mb-4 ">
46109                    
46110                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":47263,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":47263,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2RlL2JvZD9fX19mcm9tX3N0b3JlPWRldXRzY2gmZGlyPWFzYyZsaW1pdD01Jm9yZGVyPXByb2R1Y3RzX2F1dGhvcl9zb3J0JnA9MTQ~","childProducts":{"46971":"1","47257":"1"},"childProductsAlertStatus":{"46971":"0","47257":"0"},"indexMapping":{"163:15":46971,"163:8":47257},"availabilityMessages":{"46971":"Lieferbar in 10-14 Tagen","47257":"Open Access unter &lt;a href=\"https:\/\/creativecommons.org\/licenses\/by-sa\/4.0\/deed.de\" target=\"_blank\" class=\"underline\"&gt;CC-BY-SA 4.0 Lizenz&lt;\/a&gt;"}
46110,"openAccess":{"47263":{"status":0},"46971":{"status":0},"47257":{"status":1,"openaccess_license_link":"https:\/\/creativecommons.org\/licenses\/by-sa\/4.0\/deed.de","openaccess_license_name":"CC-BY-SA 4.0 Lizenz","openaccess_external_link":"https:\/\/doi.org\/10.28937\/978-3-7873-5171-8"}}},"availabilityMessages":{"46971":"Lieferbar in 10-14 Tagen","47257":"Open Access unter &lt;a href=\"https:\/\/creativecommons.org\/licenses\/by-sa\/4.0\/deed.de\" target=\"_blank\" class=\"underline\"&gt;CC-BY-SA 4.0 Lizenz&lt;\/a&gt;"},"openAccess":{"47263":{"status":0},"46971":{"status":0},"47257":{"status":1,"openaccess_license_link":"https:\/\/creativecommons.org\/licenses\/by-sa\/4.0\/deed.de","openaccess_license_name":"CC-BY-SA 4.0 Lizenz","openaccess_external_link":"https:\/\/doi.org\/10.28937\/978-3-7873-5171-8"}}}'>
46111        <template x-if="containerVisible">
46112                            <!-- Popup Trigger -->
46113                <div>
46114                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
46115                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
46116                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
46117  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
46118<title>bell</title></svg>
46119</span>
46120                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
46121
46122                    <!-- Popup Modal -->
46123                    <template x-if="showModal">
46124                        <template x-teleport=".page-wrapper">
46125                            <div x-cloak class="fixed inset-0 flex items-center justify-center
46126                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
46127                                <div class="relative bg-white rounded-lg shadow-xl
46128                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
46129                                    <div class="p-6">
46130                                        <!-- Subscription Form for Popup -->
46131                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
46132                                            <input name="form_key" type="hidden" value="GKM8ji7I3dapa3xj">
46133                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
46134                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
46135
46136                                            <div class="flex flex-col gap-3">
46137                                                <div class="flex-grow grow">
46138                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
46139                                                        shadow-xs focus:outline-none focus:outline-hidden
46140                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
46141                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
46142                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
46143                                                </div>
46144                                                <input type="hidden" name="product_id" :value="currentProductId">
46145                                                <input type="hidden" name="type" value="email">
46146
46147                                                
46148                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvZm12X2RlL2JvZD9fX19mcm9tX3N0b3JlPWRldXRzY2gmZGlyPWFzYyZsaW1pdD01Jm9yZGVyPXByb2R1Y3RzX2F1dGhvcl9zb3J0JnA9MTQ~">
46149
46150                                                <div class="amxnotif_guest_action">
46151                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
46152                                                        rounded-md focus:outline-none
46153                                                        focus:outline-hidden focu
46153s:ring-2
46154                                                        focus:ring-offset-2 disabled:opacity-50
46155                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
46156                                                        Benachrichtigen                                                    </button>
46157                                                </div>
46158                                            </div>
46159
46160                                                                                            <div class="flex items-start pt-2">
46161                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
46162                                                        text-blue-600 border-gray-300 rounded-sm">
46163                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
46164                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
46165                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
46166                                                </div>
46167                                                                                    </form>
46168                                    </div>
46169
46170                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
46171                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
46172                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
46173  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
46174<title>x</title></svg>
46175                                    </button>
46176                                </div>
46177                            </div>
46178                        </template>
46179                    </template>
46180                </div>
46181                    </template>
46182    </div>
46183
46184<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_47263" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":47263,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2RlL2JvZD9fX19mcm9tX3N0b3JlPWRldXRzY2gmZGlyPWFzYyZsaW1pdD01Jm9yZGVyPXByb2R1Y3RzX2F1dGhvcl9zb3J0JnA9MTQ~","childProducts":{"46971":"1","47257":"1"},"childProductsAlertStatus":{"46971":"0","47257":"0"},"indexMapping":"{\u0022163:15\u0022:46971,\u0022163:8\u0022:47257}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":47263,"availabilityMessages":{"46971":"Lieferbar in 10-14 Tagen","47257":"Open Access unter \u003Ca href=\u0022https:\/\/creativecommons.org\/licenses\/by-sa\/4.0\/deed.de\u0022 target=\u0022_blank\u0022 class=\u0022underline\u0022\u003ECC-BY-SA 4.0 Lizenz\u003C\/a\u003E"}
46184,"openAccess":{"47263":{"status":0},"46971":{"status":0},"47257":{"status":1,"openaccess_license_link":"https:\/\/creativecommons.org\/licenses\/by-sa\/4.0\/deed.de","openaccess_license_name":"CC-BY-SA 4.0 Lizenz","openaccess_external_link":"https:\/\/doi.org\/10.28937\/978-3-7873-5171-8"}}}'>
46185    
46186    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
46187        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
46188        <span x-html="optionsLabelText"></span>
46189    </p>
46190</div>                </div>
46191            
46192                                
46192<script>
46193        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
46194            try {
46195                const attributes = (config && config.attributes) ? config.attributes : null;
46196                if (!attributes) return [];
46197                let attr = null;
46198                if (Array.isArray(attributes)) {
46199                    for (let i = 0; i < attributes.length; i++) {
46200                        const a = attributes[i];
46201                        if (a && a.id == attrId) {
46202                            attr = a;
46203                            break;
46204                        }
46205                    }
46206                } else {
46207                    attr = attributes[attrId];
46208                }
46209                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
46210            } catch (e) {
46211                return [];
46212            }
46213        };
46214
46215        function initConfigurableSwatchOptions_47263() {
46216            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46971"]},{"id":"8","label":"PDF","products":["47257"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46971":{"baseOldPrice":{"amount":18.598129841121},"oldPrice":{"amount":19.9},"basePrice":{"amount":18.598129841121},"finalPrice":{"amount":19.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47257":{"baseOldPrice":{"amount":0},"oldPrice":{"amount":0},"basePrice":{"amount":0},"finalPrice":{"amount":0},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":0},"oldPrice":{"amount":0},"basePrice":{"amount":0},"finalPrice":{"amount":0},"isApproxPrice":null},"productId":"47263","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46971":{"163":"15"},"47257":{"163":"8"}},"salable":{"163":{"15":["46971"],"8":["47257"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"46971":"005170","47257":"005171"},"output":{"46971":"Kartoniert","47257":"PDF"},"original_name":{"46971":"","47257":""},"openaccess_license_link":{"46971":"","47257":"https:\/\/creativecommons.org\/licenses\/by-sa\/4.0\/deed.de"},"openaccess_license_name":{"46971":"","47257":"CC-BY-SA 4.0 Lizenz"},"openaccess_external_link":{"46971":"","47257":"https:\/\/doi.org\/10.28937\/978-3-7873-5171-8"},"gpsr_safety_info":{"46971":"","47257":""},"description":{"46971":"Die 2016 gegr\u00fcndete Kulturwissenschaftliche Zeitschrift, herausgegeben von der Kulturwissenschaftlichen Gesellschaft, versteht sich als ein offenes Forum der kulturwissenschaftlichen Debatte, in dem historische wie gegenwartskulturelle Themen, Theorien und Forschungsans\u00e4tze aus allen Bereichen und Str\u00f6mungen der Kulturwissenschaften vorgestellt und verhandelt werden.","47257":"Die 2016 gegr\u00fcndete Kulturwissenschaftliche Zeitschrift, herausgegeben von der Kulturwissenschaftlichen Gesellschaft, versteht sich als ein offenes Forum der kulturwissenschaftlichen Debatte, in dem historische wie gegenwartskulturelle Themen, Theorien und Forschungsans\u00e4tze aus allen Bereichen und Str\u00f6mungen der Kulturwissenschaften vorgestellt und verhandelt werden."},"doi":{"46971":"","47257":"10.28937\/978-3-7873-5171-8"},"isbn":{"46971":"978-3-7873-5170-1","47257":"978-3-7873-5171-8"},"marketing_short_text":{"46971":"","47257":""},"recension_text":{"46971":"","47257":""},"language":{"46971":"","47257":""},"cover":{"46971":"Kartoniert","47257":""},"pages":{"46971":"138 Seiten.","47257":"138 Seiten."},"edition":{"46971":"","47257":"Unver\u00e4ndertes Open-Access-eJournal der 1. Auflage von 2026"},"pod":{"46971":"Ja","47257":"Nein"},"copyright_year":{"46971":"","47257":""},"vlb_tix_link":{"46971":"https:\/\/neu.vlbtix.de\/products\/9783787351701?type=gtin","47257":""},"defaultValues":{"163":"15"}};
46217            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
46218
46219            if (typeof window.amxnotif_wrap_attributes === 'function') {
46220                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
46221                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
46222            }
46223
46224            const configurableOptionsComponent = initConfigurableOptions(
46225                '47263',
46226                config
46227            );
46228            const swatchOptionsComponent = initSwatchOptions(
46229                swatchConfig
46230            );
46231
46232            // DWS - Configurable product preselect start
46233            const confProdPreSelect = () => {
46234                return {
46235                    preselectQuerystringItems() {
46236                        var data = {"id":"46971","output":"15"};
46237                        const urlQueryParams = new URLSearchParams(window.location.search);
46238
46239                                                this.$nextTick(() => {
46240                            setTimeout(() => {
46241                                const rootEl = this.$root || this.$el;
46242                                if (!rootEl) return;
46243
46244                                const applySelection = (attrCode, attrValue) => {
46245                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
46246
46247                                    const attributes = Object.values(this.optionConfig.attributes || {});
46248                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
46249
46250                                    if (targetAttr) {
46251                                        const attrId = String(targetAttr.id);
46252                                        const optionVal = String(attrValue);
46253
46254                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
46255
46256                                        if (inputEl) {
46257                                                                                        inputEl.click();
46258                                            inputEl.dispatchEvent(new Event('change', {
46259                                                bubbles: true
46260                                            }));
46261                                        } else {
46262                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
46263                                            if (selectEl) {
46264                                                selectEl.value = optionVal;
46265                                                selectEl.dispatchEvent(new Event('change', {
46266                                                    bubbles: true
46267                                                }));
46268                                            }
46269                                        }
46270
46271                                                                                this.changeOption(attrId, optionVal, false);
46272                                    }
46273                                };
46274
46275                                                                if (data && typeof data === 'object') {
46276                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
46277                                }
46278
46279                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
46280                                    if (attribute && attribute.code) {
46281                                        let optionValue = urlQueryParams.get(attribute.code);
46282                                        if (optionValue) {
46283                                            let optionId = false;
46284                                            const attributes = Object.values(this.optionConfig.attributes || {});
46285                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
46286
46287                                            let found = false;
46288                                            Object.values(targetAttr.options).map(option => {
46289                                                if (found === false && option.label === optionValue) {
46290                                                    optionId = option.id;
46291                                                    found = true;
46292                                                }
46293                                            });
46294
46295                                            const attrId = String(targetAttr.id);
46296                                            let optionVal = String(optionValue);
46297                                            if (found) {
46298                                                optionVal = String(optionId);
46299                                            }
46300
46301                                            applySelection(attribute.code, optionVal);
46302                                        }
46303                                    }
46304                                });
46305                            }, 100);
46306                        });
46307                    }
46308                }
46309            };
46310            // DWS - Configurable product preselect end
46311
46312            const result = Object.assign(
46313                configurableOptionsComponent,
46314                swatchOptionsComponent, {
46315                    productId: '47263',
46316                    productIndex: 0,
46317                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
46318                    showSwatches: false,
46319                    precalcOptions: {},
46320                    originalInit: configurableOptionsComponent.init,
46321                    init() {
46322                        try {
46323                            this.precalcOptions = {};
46324                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
46325                            this.preselectQuerystringItems();
46326                            if (Array.isArray(attrSource)) {
46327                                attrSource.forEach(attr => {
46328                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
46329                                });
46330                            } else if (attrSource && typeof attrSource === 'object') {
46331                                Object.keys(attrSource).forEach(id => {
46332                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
46333                                });
46334                            }
46335                        } catch (e) {
46336                            console.error('Pre-calc error:', e);
46337                        }
46338
46339                        if (typeof this.originalInit === 'function') {
46340                            this.originalInit();
46341                        }
46342
46343                        try {
46344                            this.initShowSwatchesIntersect();
46345                        } catch (e) {
46346                            console.error('intersect error:', e);
46347                        }
46348                    },
46349
46350                    updateGallery() {
46351                        if (!this.productIndex) return;
46352
46353                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
46354                                method: 'GET',
46355                                headers: {
46356                                    'Content-Type': 'application/json',
46357                                    'X-Requested-With': 'XMLHttpRequest'
46358                                }
46359                            })
46360                            .then(response => response.json())
46361                            .then(data => {
46362                                if (data && data.medium) {
46363                                    window.dispatchEvent(new CustomEvent("update-gallery-47263", {
46364                                        detail: data.medium
46365                                    }));
46366                                }
46367                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
46368                    },
46369
46370
46371                    initShowSwatchesIntersect() {
46372                        const observer = new IntersectionObserver(entries => {
46373                            if (entries[0].isIntersecting) {
46374                                this.showSwatches = true;
46375                                observer.disconnect();
46376                            }
46377                        }, {
46378                            rootMargin: '512px'
46379                        });
46380                        observer.observe(this.$el);
46381                    },
46382                    getOptions(attrId) {
46383                        return this.precalcOptions[attrId] || [];
46384                    },
46385                    getOptionsByAttrId() {
46386                        return this.getOptions(this.$el.dataset.attributeId);
46387                    },
46388                    _getItemId() {
46389                        if (this.item && this.item.id) return this.item.id;
46390                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
46391                    },
46392                    getSwatchOptionHtmlId() {
46393                        const itemId = this._getItemId();
46394                        return itemId ? this.$id(`attribute-option-47263-${itemId}`) : '';
46395                    },
46396                    getSwatchOptionHtmlIdGroup() {
46397                        const itemId = this._getItemId();
46398                        return itemId ? [`attribute-option-47263-${itemId}`] : [];
46399                    },
46400                    getAttributeSwatchData(attributeId) {
46401                        const data = Object.assign({}, this.swatchConfig[attributeId]);
46402                        if (data['additional_data']) {
46403                            try {
46404                                data['details'] = JSON.parse(data['additional_data']);
46405                            } catch (e) {
46406                                data['details'] = {};
46407                            }
46408                        }
46409                        return data;
46410                    },
46411                    getSwatchType(attributeId, optionId) {
46412                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
46413                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
46414                        }
46415                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
46416                            this.swatchConfig[attributeId].details.swatch_input_type :
46417                            "empty";
46418                        if (type === 'visual') {
46419                            const config = this.swatchConfig[attributeId];
46420                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
46421                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
46422                            }
46423                            // Fallback to first option type
46424                            for (const oId in config) {
46425                                if (config[oId] && typeof config[oId].type !== 'undefined') {
46426                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
46427                                }
46428                            }
46429                        }
46430                        return type;
46431                    },
46432                    mapSwatchTypeNumberToTypeCode(type) {
46433                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
46434                    },
46435                    isTextSwatch() {
46436                        const itemId = this._getItemId();
46437                        if (!this.$el || !itemId) return false;
46438                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
46439                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
46440                    },
46441
46442                    getSwatchText() {
46443                        const itemId = this._getItemId();
46444                        if (this.item) return this.item.label || '';
46445                        if (!this.$el || !itemId) return '';
46446                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
46447                        const options = attrId ? this.getOptions(attrId) : [];
46448                        const opt = options.find(o => o.id == itemId);
46449                        return opt ? opt.label : '';
46450                    },
46451                    getSwatchBackgroundStyle() {
46452                        const itemId = this._getItemId();
46453                        if (!this.$el || !itemId) return '';
46454                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
46455                        if (!attrId) return '';
46456                        const type = this.getSwatchType(attrId, itemId);
46457                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
46458                            this.swatchConfig[attrId][itemId] :
46459                            null;
46460                        if (!swatchData) return '';
46461                        if (type === "color") return 'background-color:' + swatchData.value;
46462                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
46463                        return '';
46464                    },
46465                    swatchOptionClasses() {
46466                        const itemId = this._getItemId();
46467                        if (!this.$el || !itemId) return {};
46468                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
46469                        return {
46470                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
46471                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
46472                            'w-6 h-6': !this.isTextSwatch()
46473                        }
46474                    },
46475
46476                    onFocusSwatchItem() {
46477                        const itemId = this._getItemId();
46478                        if (itemId) this.focusedLabel = itemId;
46479                    },
46480                    onChangeOption() {
46481                        const itemId = this._getItemId();
46482                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
46483                        if (attrId && itemId) this.changeOption(attrId, itemId);
46484                    },
46485                    changeOption(attributeId, value) {
46486                        if (value === '') {
46487                            return;
46488                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
46489                        } else {
46490                            this.selectedValues[attributeId] = value;
46491                        }
46492
46493                        this.findSimpleIndex();
46494                        this.findAllowedAttributeOptions();
46495                        this.updatePrices();
46496                        this.updateGallery();
46497
46498                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
46499                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
46500
46501                        const eventDetail = {
46502                            productId: this.productId,
46503                            optionId: attributeId,
46504                            value: value,
46505                            productIndex: this.productIndex || 0,
46506                            selectedValues: this.selectedValues,
46507                            candidates: candidates,
46508                            sourceElement: this.$el
46509                        };
46510
46511                        // Dispatch for Amasty
46512                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
46513                            detail: eventDetail
46514                        }));
46515
46516                        // Dispatch for Hyva listing
46517                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
46518                            detail: eventDetail
46519                        }));
46520                    },
46521
46522
46523                    clearOptionIfActive() {
46524                        const itemId = this._getItemId();
46525                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
46526                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
46527                            this.changeOption(attrId, '');
46528
46529                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
46530                            if (!input && this.$el?.querySelector) {
46531                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
46532                            }
46533                            if (!input && this.$el?.closest) {
46534                                const root = this.$el.closest('[data-product-id]') || this.$el;
46535                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
46536                            }
46537                            if (input) {
46538                                input.checked = false;
46539                            }
46540                        }
46541                    },
46542                    get optionIsEnabled() {
46543                        const itemId = this._getItemId();
46544                        if (!this.$el || !itemId) return true;
46545                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
46546                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
46547                        return !!allowedOptions.find(opt => opt.id == itemId);
46548                    },
46549                    get isSelected() {
46550                        const itemId = this._getItemId();
46551                        if (!this.$el || !itemId) return false;
46552                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
46553                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
46554                    },
46555                    get isSwatchRequired() {
46556                        if (!this.$el) return false;
46557                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
46558                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
46559                    },
46560                    focusedLabel: false,
46561                    activeTooltipItem: false,
46562                    tooltipPositionElement: false,
46563                    setActiveTooltipItem() {
46564                        const itemId = this._getItemId();
46565                        if (!this.$el || !itemId) return;
46566                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
46567                        this.activeTooltipItem = {
46568                            attribute: attrId,
46569                            item: itemId,
46570                            index: 0
46571                        };
46572                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
46573                    },
46574                    unsetActiveTooltipItem() {
46575                        this.activeTooltipItem = false;
46576                    }
46577                },
46578                confProdPreSelect()
46579            );
46580
46581            if (result.optionConfig && result.optionConfig.attributes) {
46582                const attributes = result.optionConfig.attributes;
46583                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
46584                    let source = attributes;
46585                    if (Array.isArray(attributes)) {
46586                        source = {};
46587                        attributes.forEach(attr => {
46588                            if (attr && attr.id) source[attr.id] = attr;
46589                        });
46590                    }
46591                    const values = Object.values(source);
46592                    const wrapper = Object.assign(values, source);
46593                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
46594                        value: true,
46595                        enumerable: false
46596                    });
46597                    result.optionConfig.attributes = wrapper;
46598                }
46599            }
46600
46601            return result;
46602        }
46603
46604        window.addEventListener('alpine:init', () => {
46605            Alpine.data('initConfigurableSwatchOptions_47263', initConfigurableSwatchOptions_47263);
46606        }, {
46607            once: true
46608        });
46609    </script>
46609
46610    
46611    <div x-data="initConfigurableSwatchOptions_47263" x-defer="intersect">
46612        <div class="pagebuilder-home-hidden">
46613                                            
46614                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
46615                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
46616                        <template x-if="showSwatches">
46617                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-47263-163" role="radiogroup" aria-label="Einband">
46618                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
46619                                    <div :data-option-id="item.id" style="display: contents">
46620                                        <div x-id="getSwatchOptionHtmlIdGroup">
46621    <template x-if="optionIsEnabled">
46622        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
46622self="unsetActiveTooltipItem">
46623            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-47263-163">
46624            <div>
46625                <template x-if="isTextSwatch">
46626                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
46627                </template>
46628                <template x-if="!optionIsActive(163, item.id)">
46629                    <div>
46630                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
46631                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
46632                        </svg>
46633                    </div>
46634                </template>
46635            </div>
46636        </label>
46637    </template>
46638</div>                                    </div>
46639                                </template>
46640                            </div>
46641                        </template>
46642                    </div>
46643                </div>
46644                    </div>
46645    </div>
46646            
46647                                                <div class="meta py-4 pagebuilder-home-hidden">
46648                <div x-data="initMarketingShortText_47263()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
46649                    <!-- Marketing short text -->
46650                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
46651                    </div>
46652
46653                    <!-- Short description -->
46654                                                        </div>
46655
46656                <!-- Series  -->
46657                                    <div class="mb-1">
46658                        <span class="sr-only">Reihe:</span>
46659                        <a href="https://meiner.de/fmv_de/programm/zeitschriften/kulturwissenschaftliche-zeitschrift">
46660                            <span>Kulturwissenschaftliche Zeitschrift</span>
46661                        </a>
46662                                                    2026/1                                            </div>
46663                
46664                
46665                                                    <div class="mb-1">
46666                        <span x-data="initEditionText_47263()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
46667                            <!-- Marketing short text -->
46668                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 138 Seiten.                        </span>
46669                    </div>
46670                
46671                            </div>
46672            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
46673                
46674                <div class="justify-end" x-data="initPriceBox()" @update-prices-47263.window="updatePrice($event.detail);">
46675                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="47263" data-price-box="product-id-47263"><span class="normal-price">
46676    <span x-data x-id="['product\u002Dprice\u002D47263']" class="price-container price-final_price tax weee">
46677            <span class="price-label">Ab</span>
46678                <span class="approx-price">ca. </span>
46679        <span :id="$id('product\u002Dprice\u002D47263')" data-price-amount="0" data-price-type="finalPrice" class="price-wrapper "><span class="price">0,00&nbsp;&euro;</span></span>
46680        </span>
46681</span>
46682
46683
46684</div>                </div>
46685
46686                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
46687                                            <div class="open-access-container open-access-container-47263                    flex mt-4 ml-auto sm:mt-0 hidden">
46688                            <div class="text-gray-700">
46689                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
46690                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
46691                                        Kostenlos online lesen                                    </a>
46692                                </button>
46693                            </div>
46694                        </div>
46695                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Kulturwissenschaftliche Zeitschrift" aria-label="In den Warenkorb Kulturwissenschaftliche Zeitschrift" data-addto="cart">
46696                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
46697  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
466970 014 0z"></path>
46698</svg>
46699                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
46700                                        In den Warenkorb                                    </span>
46701                                </button>
46702                                                                                                                    
46703<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(47263)" aria-label="Zur Wunschliste hinzuf&uuml;gen Kulturwissenschaftliche Zeitschrift" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
46704    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
46705  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
46706</svg>
46707</button>
46708                                    </div>
46709            </div>
46710        </div>
46711        
46711<script>
46712            function initMarketingShortText_47263() {
46713                var marketingShortTextConfig = {};
46714                if (typeof window.initConfigurableSwatchOptions_47263 === "function") {
46715                    var fullConfig = window.initConfigurableSwatchOptions_47263().optionConfig
46716                    var marketingShortTextConfig = fullConfig.marketing_short_text;
46717                }
46718                return {
46719                    marketingShortText: '',
46720                    config: marketingShortTextConfig,
46721                    productId: '47263',
46722                    getMarketingShortText(detail) {
46723                        this.marketingShortText = detail.productIndex ?
46724                            this.config[detail.productIndex] :
46725                            null;
46726                    },
46727                    eventListeners: {
46728                        ['@listing-configurable-selection-changed.window'](event) {
46729                            if (this.productId == event.detail.productId) {
46730                                this.getMarketingShortText(event.detail);
46731                            }
46732
46733                        }
46734                    }
46735                }
46736            }
46737
46738            function initEditionText_47263() {
46739                var editionTextConfig = {};
46740                if (typeof window.initConfigurableSwatchOptions_47263 === "function") {
46741                    var fullConfig = window.initConfigurableSwatchOptions_47263().optionConfig
46742                    var editionTextConfig = fullConfig.edition;
46743                }
46744                return {
46745                    editionText: '',
46746                    config: editionTextConfig,
46747                    productId: '47263',
46748                    getEditionText(detail) {
46749                        this.editionText = detail.productIndex ?
46750                            this.config[detail.productIndex] :
46751                            null;
46752                    },
46753                    eventListeners: {
46754                        ['@listing-configurable-selection-changed.window'](event) {
46755                            if (this.productId == event.detail.productId) {
46756                                this.getEditionText(event.detail);
46757                            }
46758
46759                        }
46760                    }
46761                }
46762            }
46763        </script>
46763
46764                    </form>
46765                            
46766    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/47259/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk17478">
46767        <input name="form_key" type="hidden" value="GKM8ji7I3dapa3xj">        <input type="hidden" name="product" value="47259">
46768                                    <a href="https://meiner.de/fmv_de/geschwisterlichkeit-17478" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
46769            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-47259.window="$el.src = $event.detail" alt="Geschwisterlichkeit" title="Geschwisterlichkeit" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351671_1.jpg" :style="{
46770                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
46771                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
46772            }">
46773                    </a>
46774        <div class="product-info flex flex-col flex-grow ">
46775                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
46776                                    <div class="mb-2 text-sm text-gray-500 font-medium">
46777                                                                                    <a href="https://meiner.de/fmv_de/person/Iris-Darmann-10689/" class="mb-2">
46778                                    Iris D&auml;rmann                                                                    </a>
46779                                                                    <span>|</span>
46780                                                                                            <a href="https://meiner.de/fmv_de/person/Maud-Meyzaud-21540/" class="mb-2">
46781                                    Maud Meyzaud                                                                    </a>
46782                                                                    <span>|</span>
46783                                                                                            <a href="https://meiner.de/fmv_de/person/Gudrun-Rath-21539/" class="mb-2">
46784                                    Gudrun Rath                                                                    </a>
46785                                                                    <span>|</span>
46786                                                                                            <a href="https://meiner.de/fmv_de/person/Felix-Trautmann-13193/" class="mb-2">
46787                                    Felix Trautmann                                                                            (Hrsg.)
46788                                                                    </a>
46789                                                                                                                                    </div>
46790                                <a class="product-item-link" href="https://meiner.de/fmv_de/geschwisterlichkeit-17478">
46791                    Geschwisterlichkeit                </a>
46792                            </div>
46793
46794            <div x-data="initEditionText_47259()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
46795                <!-- Marketing short text -->
46796                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
46797                </div>
46798            </div>
46799
46800                            <div class="py-1 grid  mb-4 ">
46801                    
46802                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":47259,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }
46802","0":{"productId":47259,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2RlL2JvZD9fX19mcm9tX3N0b3JlPWRldXRzY2gmZGlyPWFzYyZsaW1pdD01Jm9yZGVyPXByb2R1Y3RzX2F1dGhvcl9zb3J0JnA9MTQ~","childProducts":{"46969":"1","47237":"1"},"childProductsAlertStatus":{"46969":"0","47237":"0"},"indexMapping":{"163:15":46969,"163:8":47237},"availabilityMessages":{"46969":"Lieferbar in 10-14 Tagen","47237":"Open Access unter &lt;a href=\"https:\/\/creativecommons.org\/licenses\/by-nc-nd\/4.0\/deed.de\" target=\"_blank\" class=\"underline\"&gt;CC-BY-NC-ND 4.0 Lizenz&lt;\/a&gt;"},"openAccess":{"47259":{"status":0},"46969":{"status":0},"47237":{"status":1,"openaccess_license_link":"https:\/\/creativecommons.org\/licenses\/by-nc-nd\/4.0\/deed.de","openaccess_license_name":"CC-BY-NC-ND 4.0 Lizenz","openaccess_external_link":"https:\/\/doi.org\/10.28937\/978-3-7873-5167-1"}}},"availabilityMessages":{"46969":"Lieferbar in 10-14 Tagen","47237":"Open Access unter &lt;a href=\"https:\/\/creativecommons.org\/licenses\/by-nc-nd\/4.0\/deed.de\" target=\"_blank\" class=\"underline\"&gt;CC-BY-NC-ND 4.0 Lizenz&lt;\/a&gt;"},"openAccess":{"47259":{"status":0},"46969":{"status":0},"47237":{"status":1,"openaccess_license_link":"https:\/\/creativecommons.org\/licenses\/by-nc-nd\/4.0\/deed.de","openaccess_license_name":"CC-BY-NC-ND 4.0 Lizenz","openaccess_external_link":"https:\/\/doi.org\/10.28937\/978-3-7873-5167-1"}}}'>
46803        <template x-if="containerVisible">
46804                            <!-- Popup Trigger -->
46805                <div>
46806                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
46807                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
46808                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
46809  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
46810<title>bell</title></svg>
46811</span>
46812                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
46813
46814                    <!-- Popup Modal -->
46815                    <template x-if="showModal">
46816                        <template x-teleport=".page-wrapper">
46817                            <div x-cloak class="fixed inset-0 flex items-center justify-center
46818                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
46819                                <div class="relative bg-white rounded-lg shadow-xl
46820                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
46821                                    <div class="p-6">
46822                                        <!-- Subscription Form for Popup -->
46823                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
46824                                            <input name="form_key" type="hidden" value="GKM8ji7I3dapa3xj">
46825                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
46826                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
46827
46828                                            <div class="flex flex-col gap-3">
46829                                                <div class="flex-grow grow">
46830                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
46831                                                        shadow-xs focus:outline-none focus:outline-hidden
46832                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
46833                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
46834                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
46835                                                </div>
46836                                                <input type="hidden" name="product_id" :value="currentProductId">
46837                                                <input type="hidden" name="type" value="email">
46838
46839                                                
46840                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvZm12X2RlL2JvZD9fX19mcm9tX3N0b3JlPWRldXRzY2gmZGlyPWFzYyZsaW1pdD01Jm9yZGVyPXByb2R1Y3RzX2F1dGhvcl9zb3J0JnA9MTQ~">
46841
46842                                                <div class="amxnotif_guest_action">
46843                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
46844                                                        rounded-md focus:outline-none
46845                                                        focus:outline-hidden focu
46845s:ring-2
46846                                                        focus:ring-offset-2 disabled:opacity-50
46847                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
46848                                                        Benachrichtigen                                                    </button>
46849                                                </div>
46850                                            </div>
46851
46852                                                                                            <div class="flex items-start pt-2">
46853                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
46854                                                        text-blue-600 border-gray-300 rounded-sm">
46855                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
46856                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
46857                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
46858                                                </div>
46859                                                                                    </form>
46860                                    </div>
46861
46862                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
46863                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
46864                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
46865  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
46866<title>x</title></svg>
46867                                    </button>
46868                                </div>
46869                            </div>
46870                        </template>
46871                    </template>
46872                </div>
46873                    </template>
46874    </div>
46875
46876<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_47259" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":47259,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2RlL2JvZD9fX19mcm9tX3N0b3JlPWRldXRzY2gmZGlyPWFzYyZsaW1pdD01Jm9yZGVyPXByb2R1Y3RzX2F1dGhvcl9zb3J0JnA9MTQ~","childProducts":{"46969":"1","47237":"1"},"childProductsAlertStatus":{"46969":"0","47237":"0"},"indexMapping":"{\u0022163:15\u0022:46969,\u0022163:8\u0022:47237}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":47259,"availabilityMessages":{"46969":"Lieferbar in 10-14 Tagen","47237":"Open Access unter \u003Ca href=\u0022https:\/\/creativecommons.org\/licenses\/by-nc-nd\/4.0\/deed.de\u0022 target=\u0022_blank\u0022 class=\u0022underline\u0022\u003ECC-BY-NC-ND 4.0 Lizenz\u003C\/a\u003E"},"openAccess":{"47259":{"status":0},"46969":{"status":0},"47237":{"status":1,"openaccess_license_link":"https:\/\/creativecommons.org\/licenses\/by-nc-nd\/4.0\/deed.de","openaccess_license_name":"CC-BY-NC-ND 4.0 Lizenz","openaccess_external_link":"https:\/\/doi.org\/10.28937\/978-3-7873-5167-1"}}}'>
46877    
46878    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
46879        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
46880        <span x-html="optionsLabelText"></span>
46881    </p>
46882</div>                </div>
46883            
46884                                
46884<script>
46885        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
46886            try {
46887                const attributes = (config && config.attributes) ? config.attributes : null;
46888                if (!attributes) return [];
46889                let attr = null;
46890                if (Array.isArray(attributes)) {
46891                    for (let i = 0; i < attributes.length; i++) {
46892                        const a = attributes[i];
46893                        if (a && a.id == attrId) {
46894                            attr = a;
46895                            break;
46896                        }
46897                    }
46898                } else {
46899                    attr = attributes[attrId];
46900                }
46901                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
46902            } catch (e) {
46903                return [];
46904            }
46905        };
46906
46907        function initConfigurableSwatchOptions_47259() {
46908            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46969"]},{"id":"8","label":"PDF","products":["47237"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46969":{"baseOldPrice":{"amount":18.598129841121},"oldPrice":{"amount":19.9},"basePrice":{"amount":18.598129841121},"finalPrice":{"amount":19.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47237":{"baseOldPrice":{"amount":0},"oldPrice":{"amount":0},"basePrice":{"amount":0},"finalPrice":{"amount":0},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":0},"oldPrice":{"amount":0},"basePrice":{"amount":0},"finalPrice":{"amount":0},"isApproxPrice":null},"productId":"47259","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46969":{"163":"15"},"47237":{"163":"8"}},"salable":{"163":{"15":["46969"],"8":["47237"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"46969":"005166","47237":"005167"},"output":{"46969":"Kartoniert","47237":"PDF"},"original_name":{"46969":"","47237":""},"openaccess_license_link":{"46969":"","47237":"https:\/\/creativecommons.org\/licenses\/by-nc-nd\/4.0\/deed.de"},"openaccess_license_name":{"46969":"","47237":"CC-BY-NC-ND 4.0 Lizenz"},"openaccess_external_link":{"46969":"","47237":"https:\/\/doi.org\/10.28937\/978-3-7873-5167-1"},"gpsr_safety_info":{"46969":"","47237":""},"description":{"46969":"Das Heft untersucht politische und \u00e4sthetische Artikulationsformen von Geschwisterlichkeit im Nachgang zur christlich gepr\u00e4gten Br\u00fcderlichkeit und in Differenz zu der durch die Franz\u00f6sische Revolution adaptieren Pathosformel. Dabei stehen folgende Fragen im Fokus: Was passiert mit der Schwester im sozialen Band der Br\u00fcder? Kann der politische Neuanfang Mutterschaft einschlie\u00dfen? L\u00e4sst sich Geschwisterlichkeit von der Familie \u2013 von welcher? \u2013 losl\u00f6sen? Welche Br\u00fcche und Grenzerfahrungen ergeben sich daraus? Die Autor*innen erkunden Schwesterlichkeit in Sophokles\u2019 \u00bbAntigone\u00ab und im fr\u00fchsozialistischen Feminismus, Gemeinschaftsformen im \u00bbQuilombismo\u00ab, in der Pariser Kommune und im Kolonialismus sowie das ephemere Auftreten der Br\u00fcderlichkeit im Kontext von Fabrikarbeit.","47237":"Das Heft untersucht politische und \u00e4sthetische Artikulationsformen von Geschwisterlichkeit im Nachgang zur christlich gepr\u00e4gten Br\u00fcderlichkeit und in Differenz zu der durch die Franz\u00f6sische Revolution adaptieren Pathosformel. Dabei stehen folgende Fragen im Fokus: Was passiert mit der Schwester im sozialen Band der Br\u00fcder? Kann der politische Neuanfang Mutterschaft einschlie\u00dfen? L\u00e4sst sich Geschwisterlichkeit von der Familie \u2013 von welcher? \u2013 losl\u00f6sen? Welche Br\u00fcche und Grenzerfahrungen ergeben sich daraus? Die Autor*innen erkunden Schwesterlichkeit in Sophokles\u2019 \u00bbAntigone\u00ab und im fr\u00fchsozialistischen Feminismus, Gemeinschaftsformen im \u00bbQuilombismo\u00ab, in der Pariser Kommune und im Kolonialismus sowie das ephemere Auftreten der Br\u00fcderlichkeit im Kontext von Fabrikarbeit."},"doi":{"46969":"","47237":"10.28937\/978-3-7873-5167-1"},"isbn":{"46969":"978-3-7873-5166-4","47237":"978-3-7873-5167-1"},"marketing_short_text":{"46969":"","47237":""},"recension_text":{"46969":"","47237":""},"language":{"46969":"","47237":""},"cover":{"46969":"Kartoniert","47237":""},"pages":{"46969":"145 Seiten.","47237":"145 Seiten."},"edition":{"46969":"","47237":"Unver\u00e4ndertes Open-Access-eJournal der 1. Auflage von 2026"},"pod":{"46969":"Ja","47237":"Nein"},"copyright_year":{"46969":"","47237":""},"vlb_tix_link":{"46969":"https:\/\/neu.vlbtix.de\/products\/9783787351664?type=gtin","47237":""},"defaultValues":{"163":"15"}};
46909            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
46910
46911            if (typeof window.amxnotif_wrap_attributes === 'function') {
46912                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
46913                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
46914            }
46915
46916            const configurableOptionsComponent = initConfigurableOptions(
46917                '47259',
46918                config
46919            );
46920            const swatchOptionsComponent = initSwatchOptions(
46921                swatchConfig
46922            );
46923
46924            // DWS - Configurable product preselect start
46925            const confProdPreSelect = () => {
46926                return {
46927                    preselectQuerystringItems() {
46928                        var data = {"id":"46969","output":"15"};
46929                        const urlQueryParams = new URLSearchParams(window.location.search);
46930
46931                                                this.$nextTick(() => {
46932                            setTimeout(() => {
46933                                const rootEl = this.$root || this.$el;
46934                                if (!rootEl) return;
46935
46936                                const applySelection = (attrCode, attrValue) => {
46937                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
46938
46939                                    const attributes = Object.values(this.optionConfig.attributes || {});
46940                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
46941
46942                                    if (targetAttr) {
46943                                        const attrId = String(targetAttr.id);
46944                                        const optionVal = String(attrValue);
46945
46946                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
46947
46948                                        if (inputEl) {
46949                                                                                        inputEl.click();
46950                                            inputEl.dispatchEvent(new Event('change', {
46951                                                bubbles: true
46952                                            }));
46953                                        } else {
46954                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
46955                                            if (selectEl) {
46956                                                selectEl.value = optionVal;
46957                                                selectEl.dispatchEvent(new Event('change', {
46958                                                    bubbles: true
46959                                                }));
46960                                            }
46961                                        }
46962
46963                                                                                this.changeOption(attrId, optionVal, false);
46964                                    }
46965                                };
46966
46967                                                                if (data && typeof data === 'object') {
46968                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
46969                                }
46970
46971                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
46972                                    if (attribute && attribute.code) {
46973                                        let optionValue = urlQueryParams.get(attribute.code);
46974                                        if (optionValue) {
46975                                            let optionId = false;
46976                                            const attributes = Object.values(this.optionConfig.attributes || {});
46977                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
46978
46979                                            let found = false;
46980                                            Object.values(targetAttr.options).map(option => {
46981                                                if (found === false && option.label === optionValue) {
46982                                                    optionId = option.id;
46983                                                    found = true;
46984                                                }
46985                                            });
46986
46987                                            const attrId = String(targetAttr.id);
46988                                            let optionVal = String(optionValue);
46989                                            if (found) {
46990                                                optionVal = String(optionId);
46991                                            }
46992
46993                                            applySelection(attribute.code, optionVal);
46994                                        }
46995                                    }
46996                                });
46997                            }, 100);
46998                        });
46999                    }
47000                }
47001            };
47002            // DWS - Configurable product preselect end
47003
47004            const result = Object.assign(
47005                configurableOptionsComponent,
47006                swatchOptionsComponent, {
47007                    productId: '47259',
47008                    productIndex: 0,
47009                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
47010                    showSwatches: false,
47011                    precalcOptions: {},
47012                    originalInit: configurableOptionsComponent.init,
47013                    init() {
47014                        try {
47015                            this.precalcOptions = {};
47016                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
47017                            this.preselectQuerystringItems();
47018                            if (Array.isArray(attrSource)) {
47019                                attrSource.forEach(attr => {
47020                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
47021                                });
47022                            } else if (attrSource && typeof attrSource === 'object') {
47023                                Object.keys(attrSource).forEach(id => {
47024                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
47025                                });
47026                            }
47027                        } catch (e) {
47028                            console.error('Pre-calc error:', e);
47029                        }
47030
47031                        if (typeof this.originalInit === 'function') {
47032                            this.originalInit();
47033                        }
47034
47035                        try {
47036                            this.initShowSwatchesIntersect();
47037                        } catch (e) {
47038                            console.error('intersect error:', e);
47039                        }
47040                    },
47041
47042                    updateGallery() {
47043                        if (!this.productIndex) return;
47044
47045                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
47046                                method: 'GET',
47047                                headers: {
47048                                    'Content-Type': 'application/json',
47049                                    'X-Requested-With': 'XMLHttpRequest'
47050                                }
47051                            })
47052                            .then(response => response.json())
47053                            .then(data => {
47054                                if (data && data.medium) {
47055                                    window.dispatchEvent(new CustomEvent("update-gallery-47259", {
47056                                        detail: data.medium
47057                                    }));
47058                                }
47059                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
47060                    },
47061
47062
47063                    initShowSwatchesIntersect() {
47064                        const observer = new IntersectionObserver(entries => {
47065                            if (entries[0].isIntersecting) {
47066                                this.showSwatches = true;
47067                                observer.disconnect();
47068                            }
47069                        }, {
47070                            rootMargin: '512px'
47071                        });
47072                        observer.observe(this.$el);
47073                    },
47074                    getOptions(attrId) {
47075                        return this.precalcOptions[attrId] || [];
47076                    },
47077                    getOptionsByAttrId() {
47078                        return this.getOptions(this.$el.dataset.attributeId);
47079                    },
47080                    _getItemId() {
47081                        if (this.item && this.item.id) return this.item.id;
47082                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
47083                    },
47084                    getSwatchOptionHtmlId() {
47085                        const itemId = this._getItemId();
47086                        return itemId ? this.$id(`attribute-option-47259-${itemId}`) : '';
47087                    },
47088                    getSwatchOptionHtmlIdGroup() {
47089                        const itemId = this._getItemId();
47090                        return itemId ? [`attribute-option-47259-${itemId}`] : [];
47091                    },
47092                    getAttributeSwatchData(attributeId) {
47093                        const data = Object.assign({}, this.swatchConfig[attributeId]);
47094                        if (data['additional_data']) {
47095                            try {
47096                                data['details'] = JSON.parse(data['additional_data']);
47097                            } catch (e) {
47098                                data['details'] = {};
47099                            }
47100                        }
47101                        return data;
47102                    },
47103                    getSwatchType(attributeId, optionId) {
47104                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
47105                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
47106                        }
47107                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
47108                            this.swatchConfig[attributeId].details.swatch_input_type :
47109                            "empty";
47110                        if (type === 'visual') {
47111                            const config = this.swatchConfig[attributeId];
47112                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
47113                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
47114                            }
47115                            // Fallback to first option type
47116                            for (const oId in config) {
47117                                if (config[oId] && typeof config[oId].type !== 'undefined') {
47118                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
47119                                }
47120                            }
47121                        }
47122                        return type;
47123                    },
47124                    mapSwatchTypeNumberToTypeCode(type) {
47125                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
47126                    },
47127                    isTextSwatch() {
47128                        const itemId = this._getItemId();
47129                        if (!this.$el || !itemId) return false;
47130                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
47131                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
47132                    },
47133
47134                    getSwatchText() {
47135                        const itemId = this._getItemId();
47136                        if (this.item) return this.item.label || '';
47137                        if (!this.$el || !itemId) return '';
47138                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
47139                        const options = attrId ? this.getOptions(attrId) : [];
47140                        const opt = options.find(o => o.id == itemId);
47141                        return opt ? opt.label : '';
47142                    },
47143                    getSwatchBackgroundStyle() {
47144                        const itemId = this._getItemId();
47145                        if (!this.$el || !itemId) return '';
47146                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
47147                        if (!attrId) return '';
47148                        const type = this.getSwatchType(attrId, itemId);
47149                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
47150                            this.swatchConfig[attrId][itemId] :
47151                            null;
47152                        if (!swatchData) return '';
47153                        if (type === "color") return 'background-color:' + swatchData.value;
47154                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
47155                        return '';
47156                    },
47157                    swatchOptionClasses() {
47158                        const itemId = this._getItemId();
47159                        if (!this.$el || !itemId) return {};
47160                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
47161                        return {
47162                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
47163                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
47164                            'w-6 h-6': !this.isTextSwatch()
47165                        }
47166                    },
47167
47168                    onFocusSwatchItem() {
47169                        const itemId = this._getItemId();
47170                        if (itemId) this.focusedLabel = itemId;
47171                    },
47172                    onChangeOption() {
47173                        const itemId = this._getItemId();
47174                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
47175                        if (attrId && itemId) this.changeOption(attrId, itemId);
47176                    },
47177                    changeOption(attributeId, value) {
47178                        if (value === '') {
47179                            return;
47180                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
47181                        } else {
47182                            this.selectedValues[attributeId] = value;
47183                        }
47184
47185                        this.findSimpleIndex();
47186                        this.findAllowedAttributeOptions();
47187                        this.updatePrices();
47188                        this.updateGallery();
47189
47190                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
47191                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
47192
47193                        const eventDetail = {
47194                            productId: this.productId,
47195                            optionId: attributeId,
47196                            value: value,
47197                            productIndex: this.productIndex || 0,
47198                            selectedValues: this.selectedValues,
47199                            candidates: candidates,
47200                            sourceElement: this.$el
47201                        };
47202
47203                        // Dispatch for Amasty
47204                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
47205                            detail: eventDetail
47206                        }));
47207
47208                        // Dispatch for Hyva listing
47209                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
47210                            detail: eventDetail
47211                        }));
47212                    },
47213
47214
47215                    clearOptionIfActive() {
47216                        const itemId = this._getItemId();
47217                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
47218                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
47219                            this.changeOption(attrId, '');
47220
47221                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
47222                            if (!input && this.$el?.querySelector) {
47223                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
47224                            }
47225                            if (!input && this.$el?.closest) {
47226                                const root = this.$el.closest('[data-product-id]') || this.$el;
47227                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
47228                            }
47229                            if (input) {
47230                                input.checked = false;
47231                            }
47232                        }
47233                    },
47234                    get optionIsEnabled() {
47235                        const itemId = this._getItemId();
47236                        if (!this.$el || !itemId) return true;
47237                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
47238                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
47239                        return !!allowedOptions.find(opt => opt.id == itemId);
47240                    },
47241                    get isSelected() {
47242                        const itemId = this._getItemId();
47243                        if (!this.$el || !itemId) return false;
47244                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
47245                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
47246                    },
47247                    get isSwatchRequired() {
47248                        if (!this.$el) return false;
47249                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
47250                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
47251                    },
47252                    focusedLabel: false,
47253                    activeTooltipItem: false,
47254                    tooltipPositionElement: false,
47255                    setActiveTooltipItem() {
47256                        const itemId = this._getItemId();
47257                        if (!this.$el || !itemId) return;
47258                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
47259                        this.activeTooltipItem = {
47260                            attribute: attrId,
47261                            item: itemId,
47262                            index: 0
47263                        };
47264                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
47265                    },
47266                    unsetActiveTooltipItem() {
47267                        this.activeTooltipItem = false;
47268                    }
47269                },
47270                confProdPreSelect()
47271            );
47272
47273            if (result.optionConfig && result.optionConfig.attributes) {
47274                const attributes = result.optionConfig.attributes;
47275                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
47276                    let source = attributes;
47277                    if (Array.isArray(attributes)) {
47278                        source = {};
47279                        attributes.forEach(attr => {
47280                            if (attr && attr.id) source[attr.id] = attr;
47281                        });
47282                    }
47283                    const values = Object.values(source);
47284                    const wrapper = Object.assign(values, source);
47285                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
47286                        value: true,
47287                        enumerable: false
47288                    });
47289                    result.optionConfig.attributes = wrapper;
47290                }
47291            }
47292
47293            return result;
47294        }
47295
47296        window.addEventListener('alpine:init', () => {
47297            Alpine.data('initConfigurableSwatchOptions_47259', initConfigurableSwatchOptions_47259);
47298        }, {
47299            once: true
47300        });
47301    </script>
47301
47302    
47303    <div x-data="initConfigurableSwatchOptions_47259" x-defer="intersect">
47304        <div class="pagebuilder-home-hidden">
47305                                            
47306                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
47307                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
47308                        <template x-if="showSwatches">
47309                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-47259-163" role="radiogroup" aria-label="Einband">
47310                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
47311                                    <div :data-option-id="item.id" style="display: contents">
47312                                        <div x-id="getSwatchOptionHtmlIdGroup">
47313    <template x-if="optionIsEnabled">
47314        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
47314self="unsetActiveTooltipItem">
47315            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-47259-163">
47316            <div>
47317                <template x-if="isTextSwatch">
47318                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
47319                </template>
47320                <template x-if="!optionIsActive(163, item.id)">
47321                    <div>
47322                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
47323                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
47324                        </svg>
47325                    </div>
47326                </template>
47327            </div>
47328        </label>
47329    </template>
47330</div>                                    </div>
47331                                </template>
47332                            </div>
47333                        </template>
47334                    </div>
47335                </div>
47336                    </div>
47337    </div>
47338            
47339                                                <div class="meta py-4 pagebuilder-home-hidden">
47340                <div x-data="initMarketingShortText_47259()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
47341                    <!-- Marketing short text -->
47342                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
47343                    </div>
47344
47345                    <!-- Short description -->
47346                                                        </div>
47347
47348                <!-- Series  -->
47349                                    <div class="mb-1">
47350                        <span class="sr-only">Reihe:</span>
47351                        <a href="https://meiner.de/fmv_de/programm/zeitschriften/kulturwissenschaftliche-zeitschrift">
47352                            <span>Kulturwissenschaftliche Zeitschrift</span>
47353                        </a>
47354                                                    2026/2                                            </div>
47355                
47356                
47357                                                    <div class="mb-1">
47358                        <span x-data="initEditionText_47259()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
47359                            <!-- Marketing short text -->
47360                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 145 Seiten.                        </span>
47361                    </div>
47362                
47363                            </div>
47364            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
47365                
47366                <div class="justify-end" x-data="initPriceBox()" @update-prices-47259.window="updatePrice($event.detail);">
47367                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="47259" data-price-box="product-id-47259"><span class="normal-price">
47368    <span x-data x-id="['product\u002Dprice\u002D47259']" class="price-container price-final_price tax weee">
47369            <span class="price-label">Ab</span>
47370                <span class="approx-price">ca. </span>
47371        <span :id="$id('product\u002Dprice\u002D47259')" data-price-amount="0" data-price-type="finalPrice" class="price-wrapper "><span class="price">0,00&nbsp;&euro;</span></span>
47372        </span>
47373</span>
47374
47375
47376</div>                </div>
47377
47378                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
47379                                            <div class="open-access-container open-access-container-47259                    flex mt-4 ml-auto sm:mt-0 hidden">
47380                            <div class="text-gray-700">
47381                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
47382                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
47383                                        Kostenlos online lesen                                    </a>
47384                                </button>
47385                            </div>
47386                        </div>
47387                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Geschwisterlichkeit" aria-label="In den Warenkorb Geschwisterlichkeit" data-addto="cart">
47388                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
47389  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
473890 014 0z"></path>
47390</svg>
47391                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
47392                                        In den Warenkorb                                    </span>
47393                                </button>
47394                                                                                                                    
47395<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(47259)" aria-label="Zur Wunschliste hinzuf&uuml;gen Geschwisterlichkeit" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
47396    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
47397  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
47398</svg>
47399</button>
47400                                    </div>
47401            </div>
47402        </div>
47403        
47403<script>
47404            function initMarketingShortText_47259() {
47405                var marketingShortTextConfig = {};
47406                if (typeof window.initConfigurableSwatchOptions_47259 === "function") {
47407                    var fullConfig = window.initConfigurableSwatchOptions_47259().optionConfig
47408                    var marketingShortTextConfig = fullConfig.marketing_short_text;
47409                }
47410                return {
47411                    marketingShortText: '',
47412                    config: marketingShortTextConfig,
47413                    productId: '47259',
47414                    getMarketingShortText(detail) {
47415                        this.marketingShortText = detail.productIndex ?
47416                            this.config[detail.productIndex] :
47417                            null;
47418                    },
47419                    eventListeners: {
47420                        ['@listing-configurable-selection-changed.window'](event) {
47421                            if (this.productId == event.detail.productId) {
47422                                this.getMarketingShortText(event.detail);
47423                            }
47424
47425                        }
47426                    }
47427                }
47428            }
47429
47430            function initEditionText_47259() {
47431                var editionTextConfig = {};
47432                if (typeof window.initConfigurableSwatchOptions_47259 === "function") {
47433                    var fullConfig = window.initConfigurableSwatchOptions_47259().optionConfig
47434                    var editionTextConfig = fullConfig.edition;
47435                }
47436                return {
47437                    editionText: '',
47438                    config: editionTextConfig,
47439                    productId: '47259',
47440                    getEditionText(detail) {
47441                        this.editionText = detail.productIndex ?
47442                            this.config[detail.productIndex] :
47443                            null;
47444                    },
47445                    eventListeners: {
47446                        ['@listing-configurable-selection-changed.window'](event) {
47447                            if (this.productId == event.detail.productId) {
47448                                this.getEditionText(event.detail);
47449                            }
47450
47451                        }
47452                    }
47453                }
47454            }
47455        </script>
47455
47456                    </form>
47457                            
47458    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/47049/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk22146">
47459        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="47049">
47460                                    <a href="https://meiner.de/fmv_de/archiv-fa-r-begriffsgeschichte-band-672-22146" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
47461            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-47049.window="$el.src = $event.detail" alt="Archiv f&uuml;r Begriffsgeschichte. Band 67,2" title="Archiv f&uuml;r Begriffsgeschichte. Band 67,2" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351770_15.jpg" :style="{
47462                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
47463                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
47464            }">
47465                    </a>
47466        <div class="product-info flex flex-col flex-grow ">
47467                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
47468                                    <div class="mb-2 text-sm text-gray-500 font-medium">
47469                                                                                    <a href="https://meiner.de/fmv_de/person/Carsten-Dutt-8730/" class="mb-2">
47470                                    Carsten Dutt                                                                    </a>
47471                                                                    <span>|</span>
47472                                                                                            <a href="https://meiner.de/fmv_de/person/Hubertus-Busche-3209/" class="mb-2">
47473                                    Hubertus Busche                                                                    </a>
47474                                                                    <span>|</span>
47475                                                                                            <a href="https://meiner.de/fmv_de/person/Michael-Erler-3210/" class="mb-2">
47476                                    Michael Erler                                                                            (Hrsg.)
47477                                                                    </a>
47478                                                                                                                                    </div>
47479                                <a class="product-item-link" href="https://meiner.de/fmv_de/archiv-fa-r-begriffsgeschichte-band-672-22146">
47480                    Archiv f&uuml;r Begriffsgeschichte. Band 67,2                </a>
47481                            </div>
47482
47483            <div x-data="initEditionText_47049()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
47484                <!-- Marketing short text -->
47485                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
47486                </div>
47487            </div>
47488
47489                            <div class="py-1 grid  mb-4 ">
47490                    
47491                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":47049,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":47049,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46920":"1","47024":"1"},"childProductsAlertStatus":{"46920":"0","47024":"0"},"indexMapping":{"163:15":46920,"163:8":47024},"availabilityMessages":{"46920":"Lieferbar innerhalb von 3-5 Tagen","47024":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"47049":{"status":0},"46920":{"status":0},"47024":{"status":0}}},"availabilityMessages":{"46920":"Lieferbar innerhalb von 3-5 Tagen","47024":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"47049":{"status":0},"46920":{"status":0},"47024":{"status":0}}}'>
47492        <template x-if="containerVisible">
47493                            <!-- Popup Trigger -->
47494                <div>
47495                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
47496                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
47497                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
47498  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
47499<title>bell</title></svg>
47500</span>
47501                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
47502
47503                    <!-- Popup Modal -->
47504                    <template x-if="showModal">
47505                        <template x-teleport=".page-wrapper">
47506                            <div x-cloak class="fixed inset-0 flex items-center justify-center
47507                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
47508                                <div class="relative bg-white rounded-lg shadow-xl
47509                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
47510                                    <div class="p-6">
47511                                        <!-- Subscription Form for Popup -->
47512                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
47513                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
47514                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
47515                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
47516
47517                                            <div class="flex flex-col gap-3">
47518                                                <div class="flex-grow grow">
47519                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
47520                                                        shadow-xs focus:outline-none focus:outline-hidden
47521                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
47522                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
47523                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
47524                                                </div>
47525                                                <input type="hidden" name="product_id" :value="currentProductId">
47526                                                <input type="hidden" name="type" value="email">
47527
47528                                                
47529                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
47530
47531                                                <div class="amxnotif_guest_action">
47532                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
47533                                                        rounded-md focus:outline-none
47534                                                        focus:outline-hidden focus:ring-2
47535                                                        focus:ring-offset-2 disabled:opacity-50
47536                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
47537                                                        Benachrichtigen                                                    </button>
47538                                                </div>
47539                                            </div>
47540
47541                                                                                            <div class="flex items-start pt-2">
47542                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
47543                                                        text-blue-600 border-gray-300 rounded-sm">
47544                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
47545                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
47546                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
47547                                                </div>
47548                                                                                    </form>
47549                                    </div>
47550
47551                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
47552                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
47553                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
47554  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
47555<title>x</title></svg>
47556                                    </button>
47557                                </div>
47558                            </div>
47559                        </template>
47560                    </template>
47561                </div>
47562                    </template>
47563    </div>
47564
47565<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_47049" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":47049,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46920":"1","47024":"1"},"childProductsAlertStatus":{"46920":"0","47024":"0"},"indexMapping":"{\u0022163:15\u0022:46920,\u0022163:8\u0022:47024}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":47049,"availabilityMessages":{"46920":"Lieferbar innerhalb von 3-5 Tagen","47024":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"47049":{"status":0},"46920":{"status":0},"47024":{"status":0}}}'>
47566    
47567    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
47568        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
47569        <span x-html="optionsLabelText"></span>
47570    </p>
47571</div>                </div>
47572            
47573                                
47573<script>
47574        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
47575            try {
47576                const attributes = (config && config.attributes) ? config.attributes : null;
47577                if (!attributes) return [];
47578                let attr = null;
47579                if (Array.isArray(attributes)) {
47580                    for (let i = 0; i < attributes.length; i++) {
47581                        const a = attributes[i];
47582                        if (a && a.id == attrId) {
47583                            attr = a;
47584                            break;
47585                        }
47586                    }
47587                } else {
47588                    attr = attributes[attrId];
47589                }
47590                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
47591            } catch (e) {
47592                return [];
47593            }
47594        };
47595
47596        function initConfigurableSwatchOptions_47049() {
47597            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46920"]},{"id":"8","label":"PDF","products":["47024"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46920":{"baseOldPrice":{"amount":62.616821429907},"oldPrice":{"amount":67},"basePrice":{"amount":62.616821429907},"finalPrice":{"amount":67},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"47024":{"baseOldPrice":{"amount":46.719625168224},"oldPrice":{"amount":49.99},"basePrice":{"amount":46.719625168224},"finalPrice":{"amount":49.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":46.719625168224},"oldPrice":{"amount":49.99},"basePrice":{"amount":42.008402361345},"finalPrice":{"amount":49.99},"isApproxPrice":null},"productId":"47049","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46920":{"163":"15"},"47024":{"163":"8"}},"salable":{"163":{"15":["46920"],"8":["47024"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"46920":"000369-67-2","47024":"eAFB-67-2"},"output":{"46920":"Kartoniert","47024":"PDF"},"original_name":{"46920":"","47024":""},"openaccess_license_link":{"46920":"","47024":""},"openaccess_license_name":{"46920":"","47024":""},"openaccess_external_link":{"46920":"","47024":""},"gpsr_safety_info":{"46920":"","47024":""},"description":{"46920":"Mit dem von Nadja Germann und Frieder Vogelmann kuratierten Schwerpunkt \u00bbWissen \u00fcber Grenzen\u00ab versammelt das Archiv f\u00fcr Begriffsgeschichte theoretisch-methodologische Reflexionen und materiale Studien zu einer \u00bbkritisch-aufkl\u00e4rerischen, transkulturell geweiteten Begriffsgeschichte\u00ab. Der einleitende Beitrag profiliert ihre Erkenntnisziele und Verfahren als Revision der bisherigen Praxis philosophischer Begriffsgeschichtsschreibung. Die sich anschlie\u00dfenden Studien von Germann, Maarten J. F. M. Hoenen und Bret W. Davis gehen je auf ihre Weise Grenzziehungen und -verschiebungen des Wissensbegriffs in der arabisch-islamischen Philosophie des Mittelalters, im sp\u00e4tmittelalterlichen Thomismus sowie im Zen-Buddhismus nach. Eine abschlie\u00dfende Replik von Carsten Dutt nimmt zu den kritischen und konstruktiven Anspr\u00fcchen des Heftschwerpunkts Stellung.","47024":"Mit dem von Nadja Germann und Frieder Vogelmann kuratierten Schwerpunkt \u00bbWissen \u00fcber Grenzen\u00ab versammelt das Archiv f\u00fcr Begriffsgeschichte theoretisch-methodologische Reflexionen und materiale Studien zu einer \u00bbkritisch-aufkl\u00e4rerischen, transkulturell geweiteten Begriffsgeschichte\u00ab. Der einleitende Beitrag profiliert ihre Erkenntnisziele und Verfahren als Revision der bisherigen Praxis philosophischer Begriffsgeschichtsschreibung. Die sich anschlie\u00dfenden Studien von Germann, Maarten J. F. M. Hoenen und Bret W. Davis gehen je auf ihre Weise Grenzziehungen und -verschiebungen des Wissensbegriffs in der arabisch-islamischen Philosophie des Mittelalters, im sp\u00e4tmittelalterlichen Thomismus sowie im Zen-Buddhismus nach. Eine abschlie\u00dfende Replik von Carsten Dutt nimmt zu den kritischen und konstruktiven Anspr\u00fcchen des Heftschwerpunkts Stellung."},"doi":{"46920":"","47024":"10.28937\/978-3-7873-5177-0"},"isbn":{"46920":"978-3-7873-5176-3","47024":""},"marketing_short_text":{"46920":"","47024":""},"recension_text":{"46920":"","47024":""},"language":{"46920":"","47024":""},"cover":{"46920":"Kartoniert","47024":""},"pages":{"46920":"191 Seiten.","47024":"191 Seiten."},"edition":{"46920":"","47024":"Unver\u00e4ndertes eJournal der 1. Auflage von 2025"},"pod":{"46920":"Nein","47024":"Nein"},"copyright_year":{"46920":"","47024":""},"vlb_tix_link":{"46920":"https:\/\/neu.vlbtix.de\/products\/9783787351763?type=gtin","47024":""},"defaultValues":{"163":"15"}};
47598            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
47599
47600            if (typeof window.amxnotif_wrap_attributes === 'function') {
47601                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
47602                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
47603            }
47604
47605            const configurableOptionsComponent = initConfigurableOptions(
47606                '47049',
47607                config
47608            );
47609            const swatchOptionsComponent = initSwatchOptions(
47610                swatchConfig
47611            );
47612
47613            // DWS - Configurable product preselect start
47614            const confProdPreSelect = () => {
47615                return {
47616                    preselectQuerystringItems() {
47617                        var data = {"id":"46920","output":"15"};
47618                        const urlQueryParams = new URLSearchParams(window.location.search);
47619
47620                                                this.$nextTick(() => {
47621                            setTimeout(() => {
47622                                const rootEl = this.$root || this.$el;
47623                                if (!rootEl) return;
47624
47625                                const applySelection = (attrCode, attrValue) => {
47626                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
47627
47628                                    const attributes = Object.values(this.optionConfig.attributes || {});
47629                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
47630
47631                                    if (targetAttr) {
47632                                        const attrId = String(targetAttr.id);
47633                                        const optionVal = String(attrValue);
47634
47635                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
47636
47637                                        if (inputEl) {
47638                                                                                        inputEl.click();
47639                                            inputEl.dispatchEvent(new Event('change', {
47640                                                bubbles: true
47641                                            }));
47642                                        } else {
47643                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
47644                                            if (selectEl) {
47645                                                selectEl.value = optionVal;
47646                                                selectEl.dispatchEvent(new Event('change', {
47647                                                    bubbles: true
47648                                                }));
47649                                            }
47650                                        }
47651
47652                                                                                this.changeOption(attrId, optionVal, false);
47653                                    }
47654                                };
47655
47656                                                                if (data && typeof data === 'object') {
47657                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
47658                                }
47659
47660                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
47661                                    if (attribute && attribute.code) {
47662                                        let optionValue = urlQueryParams.get(attribute.code);
47663                                        if (optionValue) {
47664                                            let optionId = false;
47665                                            const attributes = Object.values(this.optionConfig.attributes || {});
47666                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
47667
47668                                            let found = false;
47669                                            Object.values(targetAttr.options).map(option => {
47670                                                if (found === false && option.label === optionValue) {
47671                                                    optionId = option.id;
47672                                                    found = true;
47673                                                }
47674                                            });
47675
47676                                            const attrId = String(targetAttr.id);
47677                                            let optionVal = String(optionValue);
47678                                            if (found) {
47679                                                optionVal = String(optionId);
47680                                            }
47681
47682                                            applySelection(attribute.code, optionVal);
47683                                        }
47684                                    }
47685                                });
47686                            }, 100);
47687                        });
47688                    }
47689                }
47690            };
47691            // DWS - Configurable product preselect end
47692
47693            const result = Object.assign(
47694                configurableOptionsComponent,
47695                swatchOptionsComponent, {
47696                    productId: '47049',
47697                    productIndex: 0,
47698                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
47699                    showSwatches: false,
47700                    precalcOptions: {},
47701                    originalInit: configurableOptionsComponent.init,
47702                    init() {
47703                        try {
47704                            this.precalcOptions = {};
47705                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
47706                            this.preselectQuerystringItems();
47707                            if (Array.isArray(attrSource)) {
47708                                attrSource.forEach(attr => {
47709                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
47710                                });
47711                            } else if (attrSource && typeof attrSource === 'object') {
47712                                Object.keys(attrSource).forEach(id => {
47713                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
47714                                });
47715                            }
47716                        } catch (e) {
47717                            console.error('Pre-calc error:', e);
47718                        }
47719
47720                        if (typeof this.originalInit === 'function') {
47721                            this.originalInit();
47722                        }
47723
47724                        try {
47725                            this.initShowSwatchesIntersect();
47726                        } catch (e) {
47727                            console.error('intersect error:', e);
47728                        }
47729                    },
47730
47731                    updateGallery() {
47732                        if (!this.productIndex) return;
47733
47734                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
47735                                method: 'GET',
47736                                headers: {
47737                                    'Content-Type': 'application/json',
47738                                    'X-Requested-With': 'XMLHttpRequest'
47739                                }
47740                            })
47741                            .then(response => response.json())
47742                            .then(data => {
47743                                if (data && data.medium) {
47744                                    window.dispatchEvent(new CustomEvent("update-gallery-47049", {
47745                                        detail: data.medium
47746                                    }));
47747                                }
47748                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
47749                    },
47750
47751
47752                    initShowSwatchesIntersect() {
47753                        const observer = new IntersectionObserver(entries => {
47754                            if (entries[0].isIntersecting) {
47755                                this.showSwatches = true;
47756                                observer.disconnect();
47757                            }
47758                        }, {
47759                            rootMargin: '512px'
47760                        });
47761                        observer.observe(this.$el);
47762                    },
47763                    getOptions(attrId) {
47764                        return this.precalcOptions[attrId] || [];
47765                    },
47766                    getOptionsByAttrId() {
47767                        return this.getOptions(this.$el.dataset.attributeId);
47768                    },
47769                    _getItemId() {
47770                        if (this.item && this.item.id) return this.item.id;
47771                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
47772                    },
47773                    getSwatchOptionHtmlId() {
47774                        const itemId = this._getItemId();
47775                        return itemId ? this.$id(`attribute-option-47049-${itemId}`) : '';
47776                    },
47777                    getSwatchOptionHtmlIdGroup() {
47778                        const itemId = this._getItemId();
47779                        return itemId ? [`attribute-option-47049-${itemId}`] : [];
47780                    },
47781                    getAttributeSwatchData(attributeId) {
47782                        const data = Object.assign({}, this.swatchConfig[attributeId]);
47783                        if (data['additional_data']) {
47784                            try {
47785                                data['details'] = JSON.parse(data['additional_data']);
47786                            } catch (e) {
47787                                data['details'] = {};
47788                            }
47789                        }
47790                        return data;
47791                    },
47792                    getSwatchType(attributeId, optionId) {
47793                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
47794                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
47795                        }
47796                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
47797                            this.swatchConfig[attributeId].details.swatch_input_type :
47798                            "empty";
47799                        if (type === 'visual') {
47800                            const config = this.swatchConfig[attributeId];
47801                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
47802                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
47803                            }
47804                            // Fallback to first option type
47805                            for (const oId in config) {
47806                                if (config[oId] && typeof config[oId].type !== 'undefined') {
47807                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
47808                                }
47809                            }
47810                        }
47811                        return type;
47812                    },
47813                    mapSwatchTypeNumberToTypeCode(type) {
47814                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
47815                    },
47816                    isTextSwatch() {
47817                        const itemId = this._getItemId();
47818                        if (!this.$el || !itemId) return false;
47819                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
47820                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
47821                    },
47822
47823                    getSwatchText() {
47824                        const itemId = this._getItemId();
47825                        if (this.item) return this.item.label || '';
47826                        if (!this.$el || !itemId) return '';
47827                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
47828                        const options = attrId ? this.getOptions(attrId) : [];
47829                        const opt = options.find(o => o.id == itemId);
47830                        return opt ? opt.label : '';
47831                    },
47832                    getSwatchBackgroundStyle() {
47833                        const itemId = this._getItemId();
47834                        if (!this.$el || !itemId) return '';
47835                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
47836                        if (!attrId) return '';
47837                        const type = this.getSwatchType(attrId, itemId);
47838                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
47839                            this.swatchConfig[attrId][itemId] :
47840                            null;
47841                        if (!swatchData) return '';
47842                        if (type === "color") return 'background-color:' + swatchData.value;
47843                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
47844                        return '';
47845                    },
47846                    swatchOptionClasses() {
47847                        const itemId = this._getItemId();
47848                        if (!this.$el || !itemId) return {};
47849                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
47850                        return {
47851                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
47852                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
47853                            'w-6 h-6': !this.isTextSwatch()
47854                        }
47855                    },
47856
47857                    onFocusSwatchItem() {
47858                        const itemId = this._getItemId();
47859                        if (itemId) this.focusedLabel = itemId;
47860                    },
47861                    onChangeOption() {
47862                        const itemId = this._getItemId();
47863                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
47864                        if (attrId && itemId) this.changeOption(attrId, itemId);
47865                    },
47866                    changeOption(attributeId, value) {
47867                        if (value === '') {
47868                            return;
47869                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
47870                        } else {
47871                            this.selectedValues[attributeId] = value;
47872                        }
47873
47874                        this.findSimpleIndex();
47875                        this.findAllowedAttributeOptions();
47876                        this.updatePrices();
47877                        this.updateGallery();
47878
47879                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
47880                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
47881
47882                        const eventDetail = {
47883                            productId: this.productId,
47884                            optionId: attributeId,
47885                            value: value,
47886                            productIndex: this.productIndex || 0,
47887                            selectedValues: this.selectedValues,
47888                            candidates: candidates,
47889                            sourceElement: this.$el
47890                        };
47891
47892                        // Dispatch for Amasty
47893                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
47894                            detail: eventDetail
47895                        }));
47896
47897                        // Dispatch for Hyva listing
47898                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
47899                            detail: eventDetail
47900                        }));
47901                    },
47902
47903
47904                    clearOptionIfActive() {
47905                        const itemId = this._getItemId();
47906                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
47907                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
47908                            this.changeOption(attrId, '');
47909
47910                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
47911                            if (!input && this.$el?.querySelector) {
47912                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
47913                            }
47914                            if (!input && this.$el?.closest) {
47915                                const root = this.$el.closest('[data-product-id]') || this.$el;
47916                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
47917                            }
47918                            if (input) {
47919                                input.checked = false;
47920                            }
47921                        }
47922                    },
47923                    get optionIsEnabled() {
47924                        const itemId = this._getItemId();
47925                        if (!this.$el || !itemId) return true;
47926                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
47927                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
47928                        return !!allowedOptions.find(opt => opt.id == itemId);
47929                    },
47930                    get isSelected() {
47931                        const itemId = this._getItemId();
47932                        if (!this.$el || !itemId) return false;
47933                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
47934                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
47935                    },
47936                    get isSwatchRequired() {
47937                        if (!this.$el) return false;
47938                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
47939                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
47940                    },
47941                    focusedLabel: false,
47942                    activeTooltipItem: false,
47943                    tooltipPositionElement: false,
47944                    setActiveTooltipItem() {
47945                        const itemId = this._getItemId();
47946                        if (!this.$el || !itemId) return;
47947                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
47948                        this.activeTooltipItem = {
47949                            attribute: attrId,
47950                            item: itemId,
47951                            index: 0
47952                        };
47953                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
47954                    },
47955                    unsetActiveTooltipItem() {
47956                        this.activeTooltipItem = false;
47957                    }
47958                },
47959                confProdPreSelect()
47960            );
47961
47962            if (result.optionConfig && result.optionConfig.attributes) {
47963                const attributes = result.optionConfig.attributes;
47964                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
47965                    let source = attributes;
47966                    if (Array.isArray(attributes)) {
47967                        source = {};
47968                        attributes.forEach(attr => {
47969                            if (attr && attr.id) source[attr.id] = attr;
47970                        });
47971                    }
47972                    const values = Object.values(source);
47973                    const wrapper = Object.assign(values, source);
47974                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
47975                        value: true,
47976                        enumerable: false
47977                    });
47978                    result.optionConfig.attributes = wrapper;
47979                }
47980            }
47981
47982            return result;
47983        }
47984
47985        window.addEventListener('alpine:init', () => {
47986            Alpine.data('initConfigurableSwatchOptions_47049', initConfigurableSwatchOptions_47049);
47987        }, {
47988            once: true
47989        });
47990    </script>
47990
47991    
47992    <div x-data="initConfigurableSwatchOptions_47049" x-defer="intersect">
47993        <div class="pagebuilder-home-hidden">
47994                                            
47995                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
47996                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
47997                        <template x-if="showSwatches">
47998                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-47049-163" role="radiogroup" aria-label="Einband">
47999                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
48000                                    <div :data-option-id="item.id" style="display: contents">
48001                                        <div x-id="getSwatchOptionHtmlIdGroup">
48002    <template x-if="optionIsEnabled">
48003        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
48003self="unsetActiveTooltipItem">
48004            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-47049-163">
48005            <div>
48006                <template x-if="isTextSwatch">
48007                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
48008                </template>
48009                <template x-if="!optionIsActive(163, item.id)">
48010                    <div>
48011                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
48012                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
48013                        </svg>
48014                    </div>
48015                </template>
48016            </div>
48017        </label>
48018    </template>
48019</div>                                    </div>
48020                                </template>
48021                            </div>
48022                        </template>
48023                    </div>
48024                </div>
48025                    </div>
48026    </div>
48027            
48028                                                <div class="meta py-4 pagebuilder-home-hidden">
48029                <div x-data="initMarketingShortText_47049()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
48030                    <!-- Marketing short text -->
48031                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
48032                    </div>
48033
48034                    <!-- Short description -->
48035                                                                <div class="short-description">
48036                            Mit dem von Nadja Germann und Frieder Vogelmann kuratierten Schwerpunkt &raquo;Wissen &uuml;ber Grenzen&laquo; versammelt das Archiv f&uuml;r Begriffsgeschichte theoretisch-methodologische Reflexionen und materiale ...                            <a href="https://meiner.de/fmv_de/archiv-fa-r-begriffsgeschichte-band-672-22146" class="underline">mehr</a>
48037                        </div>
48038                                    </div>
48039
48040                <!-- Series  -->
48041                                    <div class="mb-1">
48042                        <span class="sr-only">Reihe:</span>
48043                        <a href="https://meiner.de/fmv_de/programm/zeitschriften/archiv-fur-begriffsgeschichte">
48044                            <span>Archiv f&uuml;r Begriffsgeschichte</span>
48045                        </a>
48046                                                    67,2                                            </div>
48047                
48048                
48049                                                    <div class="mb-1">
48050                        <span x-data="initEditionText_47049()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
48051                            <!-- Marketing short text -->
48052                            <span class="edition-text" x-html="editionText"></span>&nbsp;2026, 191 Seiten.                        </span>
48053                    </div>
48054                
48055                            </div>
48056            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
48057                
48058                <div class="justify-end" x-data="initPriceBox()" @update-prices-47049.window="updatePrice($event.detail);">
48059                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="47049" data-price-box="product-id-47049"><span class="normal-price">
48060    <span x-data x-id="['product\u002Dprice\u002D47049']" class="price-container price-final_price tax weee">
48061            <span class="price-label">Ab</span>
48062                <span class="approx-price">ca. </span>
48063        <span :id="$id('product\u002Dprice\u002D47049')" data-price-amount="49.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">49,99&nbsp;&euro;</span></span>
48064        </span>
48065</span>
48066
48067
48068</div>                </div>
48069
48070                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
48071                                            <div class="open-access-container open-access-container-47049                    flex mt-4 ml-auto sm:mt-0 hidden">
48072                            <div class="text-gray-700">
48073                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
48074                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
48075                                        Kostenlos online lesen                                    </a>
48076                                </button>
48077                            </div>
48078                        </div>
48079                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Archiv f&uuml;r Begriffsgeschichte. Band 67,2" aria-label="In den Warenkorb Archiv f&uuml;r Begriffsgeschichte. Band 67,2" data-addto="cart">
48080                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
48081  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
48082</svg>
48083                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
48084                                        In den Warenkorb                                    </span>
48085                                </button>
48086                                                                                                                    
48087<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(47049)" aria-label="Zur Wunschliste hinzuf&uuml;gen Archiv f&uuml;r Begriffsgeschichte. Band 67,2" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
48088    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
48089  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
48090</svg>
48091</button>
48092                                    </div>
48093            </div>
48094        </div>
48095        
48095<script>
48096            function initMarketingShortText_47049() {
48097                var marketingShortTextConfig = {};
48098                if (typeof window.initConfigurableSwatchOptions_47049 === "function") {
48099                    var fullConfig = window.initConfigurableSwatchOptions_47049().optionConfig
48100                    var marketingShortTextConfig = fullConfig.marketing_short_text;
48101                }
48102                return {
48103                    marketingShortText: '',
48104                    config: marketingShortTextConfig,
48105                    productId: '47049',
48106                    getMarketingShortText(detail) {
48107                        this.marketingShortText = detail.productIndex ?
48108                            this.config[detail.productIndex] :
48109                            null;
48110                    },
48111                    eventListeners: {
48112                        ['@listing-configurable-selection-changed.window'](event) {
48113                            if (this.productId == event.detail.productId) {
48114                                this.getMarketingShortText(event.detail);
48115                            }
48116
48117                        }
48118                    }
48119                }
48120            }
48121
48122            function initEditionText_47049() {
48123                var editionTextConfig = {};
48124                if (typeof window.initConfigurableSwatchOptions_47049 === "function") {
48125                    var fullConfig = window.initConfigurableSwatchOptions_47049().optionConfig
48126                    var editionTextConfig = fullConfig.edition;
48127                }
48128                return {
48129                    editionText: '',
48130                    config: editionTextConfig,
48131                    productId: '47049',
48132                    getEditionText(detail) {
48133                        this.editionText = detail.productIndex ?
48134                            this.config[detail.productIndex] :
48135                            null;
48136                    },
48137                    eventListeners: {
48138                        ['@listing-configurable-selection-changed.window'](event) {
48139                            if (this.productId == event.detail.productId) {
48140                                this.getEditionText(event.detail);
48141                            }
48142
48143                        }
48144                    }
48145                }
48146            }
48147        </script>
48147
48148                    </form>
48149                            
48150    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/46910/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk21493">
48151        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="46910">
48152                                    <a href="https://meiner.de/fmv_de/identita-t-differenz-21493" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
48153            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-46910.window="$el.src = $event.detail" alt="Identit&auml;t/Differenz" title="Identit&auml;t/Differenz" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787351398_18.jpg" :style="{
48154                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
48155                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
48156            }">
48157                    </a>
48158        <div class="product-info flex flex-col flex-grow ">
48159                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
48160                                    <div class="mb-2 text-sm text-gray-500 font-medium">
48161                                                                                    <a href="https://meiner.de/fmv_de/person/Ralf-Becker-3266/" class="mb-2">
48162                                    Ralf Becker                                                                    </a>
48163                                                                    <span>|</span>
48164                                                                                            <a href="https://meiner.de/fmv_de/person/Christian-Bermes-3208/" class="mb-2">
48165                                    Christian Bermes                                                                    </a>
48166                                                                    <span>|</span>
48167                                                                                            <a href="https://meiner.de/fmv_de/person/Annika-Schlitte-8726/" class="mb-2">
48168                                    Annika Schlitte                                                                    </a>
48169                                                                    <span>|</span>
48170                                                                                            <a href="https://meiner.de/fmv_de/person/Dirk-Westerkamp-3251/" class="mb-2">
48171                                    Dirk Westerkamp                                                                            (Hrsg.)
48172                                                                    </a>
48173                                                                                                                                    </div>
48174                                <a class="product-item-link" href="https://meiner.de/fmv_de/identita-t-differenz-21493">
48175                    Identit&auml;t/Differenz                </a>
48176                            </div>
48177
48178            <div x-data="initEditionText_46910()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
48179                <!-- Marketing short text -->
48180                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
48181                </div>
48182            </div>
48183
48184                            <div class="py-1 grid  mb-4 ">
48185                    
48186                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":46910,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":46910,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46735":"1","46931":"1"},"childProductsAlertStatus":{"46735":"0","46931":"0"},"indexMapping":{"163:15":46735,"163:8":46931},"availabilityMessages":{"46735":"Lieferbar innerhalb von 3-5 Tagen","46931":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"46910":{"status":0},"46735":{"status":0},"46931":{"status":0}}},"availabilityMessages":{"46735":"Lieferbar innerhalb von 3-5 Tagen","46931":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"46910":{"status":0},"46735":{"status":0},"46931":{"status":0}}}'>
48187        <template x-if="containerVisible">
48188                            <!-- Popup Trigger -->
48189                <div>
48190                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
48191                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
48192                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
48193  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
48194<title>bell</title></svg>
48195</span>
48196                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
48197
48198                    <!-- Popup Modal -->
48199                    <template x-if="showModal">
48200                        <template x-teleport=".page-wrapper">
48201                            <div x-cloak class="fixed inset-0 flex items-center justify-center
48202                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
48203                                <div class="relative bg-white rounded-lg shadow-xl
48204                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
48205                                    <div class="p-6">
48206                                        <!-- Subscription Form for Popup -->
48207                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
48208                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
48209                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
48210                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
48211
48212                                            <div class="flex flex-col gap-3">
48213                                                <div class="flex-grow grow">
48214                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
48215                                                        shadow-xs focus:outline-none focus:outline-hidden
48216                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
48217                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
48218                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
48219                                                </div>
48220                                                <input type="hidden" name="product_id" :value="currentProductId">
48221                                                <input type="hidden" name="type" value="email">
48222
48223                                                
48224                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
48225
48226                                                <div class="amxnotif_guest_action">
48227                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
48228                                                        rounded-md focus:outline-none
48229                                                        focus:outline-hidden focus:ring-2
48230                                                        focus:ring-offset-2 disabled:opacity-50
48231                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
48232                                                        Benachrichtigen                                                    </button>
48233                                                </div>
48234                                            </div>
48235
48236                                                                                            <div class="flex items-start pt-2">
48237                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
48238                                                        text-blue-600 border-gray-300 rounded-sm">
48239                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
48240                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
48241                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
48242                                                </div>
48243                                                                                    </form>
48244                                    </div>
48245
48246                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
48247                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
48248                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
48249  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
48250<title>x</title></svg>
48251                                    </button>
48252                                </div>
48253                            </div>
48254                        </template>
48255                    </template>
48256                </div>
48257                    </template>
48258    </div>
48259
48260<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_46910" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":46910,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"46735":"1","46931":"1"},"childProductsAlertStatus":{"46735":"0","46931":"0"},"indexMapping":"{\u0022163:15\u0022:46735,\u0022163:8\u0022:46931}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":46910,"availabilityMessages":{"46735":"Lieferbar innerhalb von 3-5 Tagen","46931":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"46910":{"status":0},"46735":{"status":0},"46931":{"status":0}}}'>
48261    
48262    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
48263        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
48264        <span x-html="optionsLabelText"></span>
48265    </p>
48266</div>                </div>
48267            
48268                                
48268<script>
48269        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
48270            try {
48271                const attributes = (config && config.attributes) ? config.attributes : null;
48272                if (!attributes) return [];
48273                let attr = null;
48274                if (Array.isArray(attributes)) {
48275                    for (let i = 0; i < attributes.length; i++) {
48276                        const a = attributes[i];
48277                        if (a && a.id == attrId) {
48278                            attr = a;
48279                            break;
48280                        }
48281                    }
48282                } else {
48283                    attr = attributes[attrId];
48284                }
48285                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
48286            } catch (e) {
48287                return [];
48288            }
48289        };
48290
48291        function initConfigurableSwatchOptions_46910() {
48292            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46735"]},{"id":"8","label":"PDF","products":["46931"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"46735":{"baseOldPrice":{"amount":64.485980308411},"oldPrice":{"amount":69},"basePrice":{"amount":64.485980308411},"finalPrice":{"amount":69},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46931":{"baseOldPrice":{"amount":46.719625168224},"oldPrice":{"amount":49.99},"basePrice":{"amount":46.719625168224},"finalPrice":{"amount":49.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":46.719625168224},"oldPrice":{"amount":49.99},"basePrice":{"amount":42.008402361345},"finalPrice":{"amount":49.99},"isApproxPrice":null},"productId":"46910","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"46735":{"163":"15"},"46931":{"163":"8"}},"salable":{"163":{"15":["46735"],"8":["46931"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"46735":"000845-2025-2","46931":"eZKPh-2025-2"},"output":{"46735":"Kartoniert","46931":"PDF"},"original_name":{"46735":"","46931":""},"openaccess_license_link":{"46735":"","46931":""},"openaccess_license_name":{"46735":"","46931":""},"openaccess_external_link":{"46735":"","46931":""},"gpsr_safety_info":{"46735":"","46931":""},"description":{"46735":"Die Begriffe \u00bbIdentit\u00e4t\u00ab und \u00bbDifferenz\u00ab gewinnen heute \u00fcber die Philosophie hinaus in sozialen und politischen Kontexten sowie in kulturwissenschaftlichen Debatten zunehmend an Bedeutung. Doch trotz \u2013 oder vielleicht gerade wegen \u2013 ihrer breiten Verwendung bleiben sie oft unbestimmt. Es ist nicht immer klar, was identisch oder unterschiedlich ist oder worauf sich Identit\u00e4t und Differenz \u00fcberhaupt beziehen. <br\/><br\/>In diesem Sinne thematisieren die Beitr\u00e4ge des vorliegenden Schwerpunktes die Wechselwirkung zwischen Individuum und Gesellschaft, etwa bei der Gestaltung pers\u00f6nlicher Identit\u00e4t. Sie argumentieren gegen reduktionistische Identit\u00e4tszuschreibungen und pl\u00e4dieren f\u00fcr eine Ethik der Beziehungen, die etwa interkulturell f\u00fcr ein situationsgebundenes und r\u00fccksichtsvolles Unterscheiden eintritt.","46931":"Die Begriffe \u00bbIdentit\u00e4t\u00ab und \u00bbDifferenz\u00ab gewinnen heute \u00fcber die Philosophie hinaus in sozialen und politischen Kontexten sowie in kulturwissenschaftlichen Debatten zunehmend an Bedeutung. Doch trotz \u2013 oder vielleicht gerade wegen \u2013 ihrer breiten Verwendung bleiben sie oft unbestimmt. Es ist nicht immer klar, was identisch oder unterschiedlich ist oder worauf sich Identit\u00e4t und Differenz \u00fcberhaupt beziehen. <br\/><br\/>In diesem Sinne thematisieren die Beitr\u00e4ge des vorliegenden Schwerpunktes die Wechselwirkung zwischen Individuum und Gesellschaft, etwa bei der Gestaltung pers\u00f6nlicher Identit\u00e4t. Sie argumentieren gegen reduktionistische Identit\u00e4tszuschreibungen und pl\u00e4dieren f\u00fcr eine Ethik der Beziehungen, die etwa interkulturell f\u00fcr ein situationsgebundenes und r\u00fccksichtsvolles Unterscheiden eintritt."},"doi":{"46735":"","46931":"10.28937\/978-3-7873-5139-8"},"isbn":{"46735":"978-3-7873-5138-1","46931":""},"marketing_short_text":{"46735":"","46931":""},"recension_text":{"46735":"","46931":""},"language":{"46735":"","46931":""},"cover":{"46735":"Kartoniert","46931":""},"pages":{"46735":"180 Seiten","46931":"180 Seiten."},"edition":{"46735":"","46931":"Unver\u00e4ndertes eJournal der 1. Auflage von 2025"},"pod":{"46735":"Nein","46931":"Nein"},"copyright_year":{"46735":"","46931":""},"vlb_tix_link":{"46735":"https:\/\/neu.vlbtix.de\/products\/9783787351381?type=gtin","46931":""},"defaultValues":{"163":"15"}};
48293            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
48294
48295            if (typeof window.amxnotif_wrap_attributes === 'function') {
48296                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
48297                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
48298            }
48299
48300            const configurableOptionsComponent = initConfigurableOptions(
48301                '46910',
48302                config
48303            );
48304            const swatchOptionsComponent = initSwatchOptions(
48305                swatchConfig
48306            );
48307
48308            // DWS - Configurable product preselect start
48309            const confProdPreSelect = () => {
48310                return {
48311                    preselectQuerystringItems() {
48312                        var data = {"id":"46735","output":"15"};
48313                        const urlQueryParams = new URLSearchParams(window.location.search);
48314
48315                                                this.$nextTick(() => {
48316                            setTimeout(() => {
48317                                const rootEl = this.$root || this.$el;
48318                                if (!rootEl) return;
48319
48320                                const applySelection = (attrCode, attrValue) => {
48321                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
48322
48323                                    const attributes = Object.values(this.optionConfig.attributes || {});
48324                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
48325
48326                                    if (targetAttr) {
48327                                        const attrId = String(targetAttr.id);
48328                                        const optionVal = String(attrValue);
48329
48330                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
48331
48332                                        if (inputEl) {
48333                                                                                        inputEl.click();
48334                                            inputEl.dispatchEvent(new Event('change', {
48335                                                bubbles: true
48336                                            }));
48337                                        } else {
48338                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
48339                                            if (selectEl) {
48340                                                selectEl.value = optionVal;
48341                                                selectEl.dispatchEvent(new Event('change', {
48342                                                    bubbles: true
48343                                                }));
48344                                            }
48345                                        }
48346
48347                                                                                this.changeOption(attrId, optionVal, false);
48348                                    }
48349                                };
48350
48351                                                                if (data && typeof data === 'object') {
48352                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
48353                                }
48354
48355                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
48356                                    if (attribute && attribute.code) {
48357                                        let optionValue = urlQueryParams.get(attribute.code);
48358                                        if (optionValue) {
48359                                            let optionId = false;
48360                                            const attributes = Object.values(this.optionConfig.attributes || {});
48361                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
48362
48363                                            let found = false;
48364                                            Object.values(targetAttr.options).map(option => {
48365                                                if (found === false && option.label === optionValue) {
48366                                                    optionId = option.id;
48367                                                    found = true;
48368                                                }
48369                                            });
48370
48371                                            const attrId = String(targetAttr.id);
48372                                            let optionVal = String(optionValue);
48373                                            if (found) {
48374                                                optionVal = String(optionId);
48375                                            }
48376
48377                                            applySelection(attribute.code, optionVal);
48378                                        }
48379                                    }
48380                                });
48381                            }, 100);
48382                        });
48383                    }
48384                }
48385            };
48386            // DWS - Configurable product preselect end
48387
48388            const result = Object.assign(
48389                configurableOptionsComponent,
48390                swatchOptionsComponent, {
48391                    productId: '46910',
48392                    productIndex: 0,
48393                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
48394                    showSwatches: false,
48395                    precalcOptions: {},
48396                    originalInit: configurableOptionsComponent.init,
48397                    init() {
48398                        try {
48399                            this.precalcOptions = {};
48400                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
48401                            this.preselectQuerystringItems();
48402                            if (Array.isArray(attrSource)) {
48403                                attrSource.forEach(attr => {
48404                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
48405                                });
48406                            } else if (attrSource && typeof attrSource === 'object') {
48407                                Object.keys(attrSource).forEach(id => {
48408                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
48409                                });
48410                            }
48411                        } catch (e) {
48412                            console.error('Pre-calc error:', e);
48413                        }
48414
48415                        if (typeof this.originalInit === 'function') {
48416                            this.originalInit();
48417                        }
48418
48419                        try {
48420                            this.initShowSwatchesIntersect();
48421                        } catch (e) {
48422                            console.error('intersect error:', e);
48423                        }
48424                    },
48425
48426                    updateGallery() {
48427                        if (!this.productIndex) return;
48428
48429                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
48430                                method: 'GET',
48431                                headers: {
48432                                    'Content-Type': 'application/json',
48433                                    'X-Requested-With': 'XMLHttpRequest'
48434                                }
48435                            })
48436                            .then(response => response.json())
48437                            .then(data => {
48438                                if (data && data.medium) {
48439                                    window.dispatchEvent(new CustomEvent("update-gallery-46910", {
48440                                        detail: data.medium
48441                                    }));
48442                                }
48443                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
48444                    },
48445
48446
48447                    initShowSwatchesIntersect() {
48448                        const observer = new IntersectionObserver(entries => {
48449                            if (entries[0].isIntersecting) {
48450                                this.showSwatches = true;
48451                                observer.disconnect();
48452                            }
48453                        }, {
48454                            rootMargin: '512px'
48455                        });
48456                        observer.observe(this.$el);
48457                    },
48458                    getOptions(attrId) {
48459                        return this.precalcOptions[attrId] || [];
48460                    },
48461                    getOptionsByAttrId() {
48462                        return this.getOptions(this.$el.dataset.attributeId);
48463                    },
48464                    _getItemId() {
48465                        if (this.item && this.item.id) return this.item.id;
48466                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
48467                    },
48468                    getSwatchOptionHtmlId() {
48469                        const itemId = this._getItemId();
48470                        return itemId ? this.$id(`attribute-option-46910-${itemId}`) : '';
48471                    },
48472                    getSwatchOptionHtmlIdGroup() {
48473                        const itemId = this._getItemId();
48474                        return itemId ? [`attribute-option-46910-${itemId}`] : [];
48475                    },
48476                    getAttributeSwatchData(attributeId) {
48477                        const data = Object.assign({}, this.swatchConfig[attributeId]);
48478                        if (data['additional_data']) {
48479                            try {
48480                                data['details'] = JSON.parse(data['additional_data']);
48481                            } catch (e) {
48482                                data['details'] = {};
48483                            }
48484                        }
48485                        return data;
48486                    },
48487                    getSwatchType(attributeId, optionId) {
48488                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
48489                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
48490                        }
48491                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
48492                            this.swatchConfig[attributeId].details.swatch_input_type :
48493                            "empty";
48494                        if (type === 'visual') {
48495                            const config = this.swatchConfig[attributeId];
48496                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
48497                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
48498                            }
48499                            // Fallback to first option type
48500                            for (const oId in config) {
48501                                if (config[oId] && typeof config[oId].type !== 'undefined') {
48502                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
48503                                }
48504                            }
48505                        }
48506                        return type;
48507                    },
48508                    mapSwatchTypeNumberToTypeCode(type) {
48509                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
48510                    },
48511                    isTextSwatch() {
48512                        const itemId = this._getItemId();
48513                        if (!this.$el || !itemId) return false;
48514                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
48515                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
48516                    },
48517
48518                    getSwatchText() {
48519                        const itemId = this._getItemId();
48520                        if (this.item) return this.item.label || '';
48521                        if (!this.$el || !itemId) return '';
48522                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
48523                        const options = attrId ? this.getOptions(attrId) : [];
48524                        const opt = options.find(o => o.id == itemId);
48525                        return opt ? opt.label : '';
48526                    },
48527                    getSwatchBackgroundStyle() {
48528                        const itemId = this._getItemId();
48529                        if (!this.$el || !itemId) return '';
48530                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
48531                        if (!attrId) return '';
48532                        const type = this.getSwatchType(attrId, itemId);
48533                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
48534                            this.swatchConfig[attrId][itemId] :
48535                            null;
48536                        if (!swatchData) return '';
48537                        if (type === "color") return 'background-color:' + swatchData.value;
48538                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
48539                        return '';
48540                    },
48541                    swatchOptionClasses() {
48542                        const itemId = this._getItemId();
48543                        if (!this.$el || !itemId) return {};
48544                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
48545                        return {
48546                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
48547                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
48548                            'w-6 h-6': !this.isTextSwatch()
48549                        }
48550                    },
48551
48552                    onFocusSwatchItem() {
48553                        const itemId = this._getItemId();
48554                        if (itemId) this.focusedLabel = itemId;
48555                    },
48556                    onChangeOption() {
48557                        const itemId = this._getItemId();
48558                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
48559                        if (attrId && itemId) this.changeOption(attrId, itemId);
48560                    },
48561                    changeOption(attributeId, value) {
48562                        if (value === '') {
48563                            return;
48564                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
48565                        } else {
48566                            this.selectedValues[attributeId] = value;
48567                        }
48568
48569                        this.findSimpleIndex();
48570                        this.findAllowedAttributeOptions();
48571                        this.updatePrices();
48572                        this.updateGallery();
48573
48574                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
48575                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
48576
48577                        const eventDetail = {
48578                            productId: this.productId,
48579                            optionId: attributeId,
48580                            value: value,
48581                            productIndex: this.productIndex || 0,
48582                            selectedValues: this.selectedValues,
48583                            candidates: candidates,
48584                            sourceElement: this.$el
48585                        };
48586
48587                        // Dispatch for Amasty
48588                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
48589                            detail: eventDetail
48590                        }));
48591
48592                        // Dispatch for Hyva listing
48593                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
48594                            detail: eventDetail
48595                        }));
48596                    },
48597
48598
48599                    clearOptionIfActive() {
48600                        const itemId = this._getItemId();
48601                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
48602                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
48603                            this.changeOption(attrId, '');
48604
48605                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
48606                            if (!input && this.$el?.querySelector) {
48607                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
48608                            }
48609                            if (!input && this.$el?.closest) {
48610                                const root = this.$el.closest('[data-product-id]') || this.$el;
48611                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
48612                            }
48613                            if (input) {
48614                                input.checked = false;
48615                            }
48616                        }
48617                    },
48618                    get optionIsEnabled() {
48619                        const itemId = this._getItemId();
48620                        if (!this.$el || !itemId) return true;
48621                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
48622                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
48623                        return !!allowedOptions.find(opt => opt.id == itemId);
48624                    },
48625                    get isSelected() {
48626                        const itemId = this._getItemId();
48627                        if (!this.$el || !itemId) return false;
48628                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
48629                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
48630                    },
48631                    get isSwatchRequired() {
48632                        if (!this.$el) return false;
48633                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
48634                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
48635                    },
48636                    focusedLabel: false,
48637                    activeTooltipItem: false,
48638                    tooltipPositionElement: false,
48639                    setActiveTooltipItem() {
48640                        const itemId = this._getItemId();
48641                        if (!this.$el || !itemId) return;
48642                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
48643                        this.activeTooltipItem = {
48644                            attribute: attrId,
48645                            item: itemId,
48646                            index: 0
48647                        };
48648                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
48649                    },
48650                    unsetActiveTooltipItem() {
48651                        this.activeTooltipItem = false;
48652                    }
48653                },
48654                confProdPreSelect()
48655            );
48656
48657            if (result.optionConfig && result.optionConfig.attributes) {
48658                const attributes = result.optionConfig.attributes;
48659                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
48660                    let source = attributes;
48661                    if (Array.isArray(attributes)) {
48662                        source = {};
48663                        attributes.forEach(attr => {
48664                            if (attr && attr.id) source[attr.id] = attr;
48665                        });
48666                    }
48667                    const values = Object.values(source);
48668                    const wrapper = Object.assign(values, source);
48669                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
48670                        value: true,
48671                        enumerable: false
48672                    });
48673                    result.optionConfig.attributes = wrapper;
48674                }
48675            }
48676
48677            return result;
48678        }
48679
48680        window.addEventListener('alpine:init', () => {
48681            Alpine.data('initConfigurableSwatchOptions_46910', initConfigurableSwatchOptions_46910);
48682        }, {
48683            once: true
48684        });
48685    </script>
48685
48686    
48687    <div x-data="initConfigurableSwatchOptions_46910" x-defer="intersect">
48688        <div class="pagebuilder-home-hidden">
48689                                            
48690                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
48691                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
48692                        <template x-if="showSwatches">
48693                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-46910-163" role="radiogroup" aria-label="Einband">
48694                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
48695                                    <div :data-option-id="item.id" style="display: contents">
48696                                        <div x-id="getSwatchOptionHtmlIdGroup">
48697    <template x-if="optionIsEnabled">
48698        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
48698self="unsetActiveTooltipItem">
48699            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-46910-163">
48700            <div>
48701                <template x-if="isTextSwatch">
48702                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
48703                </template>
48704                <template x-if="!optionIsActive(163, item.id)">
48705                    <div>
48706                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
48707                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
48708                        </svg>
48709                    </div>
48710                </template>
48711            </div>
48712        </label>
48713    </template>
48714</div>                                    </div>
48715                                </template>
48716                            </div>
48717                        </template>
48718                    </div>
48719                </div>
48720                    </div>
48721    </div>
48722            
48723                                                <div class="meta py-4 pagebuilder-home-hidden">
48724                <div x-data="initMarketingShortText_46910()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
48725                    <!-- Marketing short text -->
48726                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
48727                    </div>
48728
48729                    <!-- Short description -->
48730                                                                <div class="short-description">
48731                            Die Begriffe &raquo;Identit&auml;t&laquo; und &raquo;Differenz&laquo; gewinnen heute &uuml;ber die Philosophie hinaus in sozialen und politischen Kontexten sowie in kulturwissenschaftlichen Debatten zunehmend an Bedeutung. Doch ...                            <a href="https://meiner.de/fmv_de/identita-t-differenz-21493" class="underline">mehr</a>
48732                        </div>
48733                                    </div>
48734
48735                <!-- Series  -->
48736                                    <div class="mb-1">
48737                        <span class="sr-only">Reihe:</span>
48738                        <a href="https://meiner.de/fmv_de/programm/zeitschriften/zeitschrift-fur-kulturphilosophie">
48739                            <span>Zeitschrift f&uuml;r Kulturphilosophie</span>
48740                        </a>
48741                                                    2025/2                                            </div>
48742                
48743                
48744                                                    <div class="mb-1">
48745                        <span x-data="initEditionText_46910()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
48746                            <!-- Marketing short text -->
48747                            <span class="edition-text" x-html="editionText"></span>&nbsp;2025, 180 Seiten                        </span>
48748                    </div>
48749                
48750                            </div>
48751            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
48752                
48753                <div class="justify-end" x-data="initPriceBox()" @update-prices-46910.window="updatePrice($event.detail);">
48754                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="46910" data-price-box="product-id-46910"><span class="normal-price">
48755    <span x-data x-id="['product\u002Dprice\u002D46910']" class="price-container price-final_price tax weee">
48756            <span class="price-label">Ab</span>
48757                <span class="approx-price">ca. </span>
48758        <span :id="$id('product\u002Dprice\u002D46910')" data-price-amount="49.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">49,99&nbsp;&euro;</span></span>
48759        </span>
48760</span>
48761
48762
48763</div>                </div>
48764
48765                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
48766                                            <div class="open-access-container open-access-container-46910                    flex mt-4 ml-auto sm:mt-0 hidden">
48767                            <div class="text-gray-700">
48768                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
48769                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
48770                                        Kostenlos online lesen                                    </a>
48771                                </button>
48772                            </div>
48773                        </div>
48774                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Identit&auml;t/Differenz" aria-label="In den Warenkorb Identit&auml;t/Differenz" data-addto="cart">
48775                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
48776  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
48777</svg>
48778                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
48779                                        In den Warenkorb                                    </span>
48780                                </button>
48781                                                                                                                    
48782<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(46910)" aria-label="Zur Wunschliste hinzuf&uuml;gen Identit&auml;t/Differenz" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
48783    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
48784  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
48785</svg>
48786</button>
48787                                    </div>
48788            </div>
48789        </div>
48790        
48790<script>
48791            function initMarketingShortText_46910() {
48792                var marketingShortTextConfig = {};
48793                if (typeof window.initConfigurableSwatchOptions_46910 === "function") {
48794                    var fullConfig = window.initConfigurableSwatchOptions_46910().optionConfig
48795                    var marketingShortTextConfig = fullConfig.marketing_short_text;
48796                }
48797                return {
48798                    marketingShortText: '',
48799                    config: marketingShortTextConfig,
48800                    productId: '46910',
48801                    getMarketingShortText(detail) {
48802                        this.marketingShortText = detail.productIndex ?
48803                            this.config[detail.productIndex] :
48804                            null;
48805                    },
48806                    eventListeners: {
48807                        ['@listing-configurable-selection-changed.window'](event) {
48808                            if (this.productId == event.detail.productId) {
48809                                this.getMarketingShortText(event.detail);
48810                            }
48811
48812                        }
48813                    }
48814                }
48815            }
48816
48817            function initEditionText_46910() {
48818                var editionTextConfig = {};
48819                if (typeof window.initConfigurableSwatchOptions_46910 === "function") {
48820                    var fullConfig = window.initConfigurableSwatchOptions_46910().optionConfig
48821                    var editionTextConfig = fullConfig.edition;
48822                }
48823                return {
48824                    editionText: '',
48825                    config: editionTextConfig,
48826                    productId: '46910',
48827                    getEditionText(detail) {
48828                        this.editionText = detail.productIndex ?
48829                            this.config[detail.productIndex] :
48830                            null;
48831                    },
48832                    eventListeners: {
48833                        ['@listing-configurable-selection-changed.window'](event) {
48834                            if (this.productId == event.detail.productId) {
48835                                this.getEditionText(event.detail);
48836                            }
48837
48838                        }
48839                    }
48840                }
48841            }
48842        </script>
48842
48843                    </form>
48844                            
48845    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/9425/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk15944">
48846        <input name="form_key" type="hidden" value="R6NBsKL42phFmgWc">        <input type="hidden" name="product" value="9425">
48847                                    <a href="https://meiner.de/fmv_de/hegel-studien-band-42" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
48848            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-9425.window="$el.src = $event.detail" alt="Hegel-Studien Band 42" title="Hegel-Studien Band 42" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787347858_1.jpg" :style="{
48849                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
48850                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
48851            }">
48852                    </a>
48853        <div class="product-info flex flex-col flex-grow ">
48854                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
48855                                    <div class="mb-2 text-sm text-gray-500 font-medium">
48856                                                                                    <a href="https://meiner.de/fmv_de/person/Ludwig-Siep-3730/" class="mb-2">
48857                                    Ludwig Siep                                                                            (Hrsg.)
48858                                                                    </a>
48859                                                                                                                                    </div>
48860                                <a class="product-item-link" href="https://meiner.de/fmv_de/hegel-studien-band-42">
48861                    Hegel-Studien Band 42                </a>
48862                            </div>
48863
48864            <div x-data="initEditionText_9425()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
48865                <!-- Marketing short text -->
48866                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
48867                </div>
48868            </div>
48869
48870                            <div class="py-1 grid  mb-4 ">
48871                    
48872                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":9425,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":9425,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2Rl","childProducts":{"7045":"1","46858":"1"},"childProductsAlertStatus":{"7045":"0","46858":"0"},"indexMapping":{"163:8":7045,"163:15":46858},"availabilityMessages":{"7045":"Download sofort  verf\u00fcgbar","46858":"Lieferbar in 10-14 Tagen"},"openAccess":{"9425":{"status":0},"7045":{"status":0},"46858":{"status":0}}},"availabilityMessages":{"7045":"Download sofort  verf\u00fcgbar","46858":"Lieferbar in 10-14 Tagen"},"openAccess":{"9425":{"status":0},"7045":{"status":0},"46858":{"status":0}}}'>
48873        <template x-if="containerVisible">
48874                            <!-- Popup Trigger -->
48875                <div>
48876                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
48877                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
48878                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
48879  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
48880<title>bell</title></svg>
48881</span>
48882                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
48883
48884                    <!-- Popup Modal -->
48885                    <template x-if="showModal">
48886                        <template x-teleport=".page-wrapper">
48887                            <div x-cloak class="fixed inset-0 flex items-center justify-center
48888                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
48889                                <div class="relative bg-white rounded-lg shadow-xl
48890                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
48891                                    <div class="p-6">
48892                                        <!-- Subscription Form for Popup -->
48893                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
48894                                            <input name="form_key" type="hidden" value="R6NBsKL42phFmgWc">
48895                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
48896                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
48897
48898                                            <div class="flex flex-col gap-3">
48899                                                <div class="flex-grow grow">
48900                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
48901                                                        shadow-xs focus:outline-none focus:outline-hidden
48902                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
48903                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
48904                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
48905                                                </div>
48906                                                <input type="hidden" name="product_id" :value="currentProductId">
48907                                                <input type="hidden" name="type" value="email">
48908
48909                                                
48910                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvZm12X2Rl">
48911
48912                                                <div class="amxnotif_guest_action">
48913                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
48914                                                        rounded-md focus:outline-none
48915                                                        focus:outline-hidden focus:ring-2
48916                                                        focus:ring-offset-2 disabled:opacity-50
48917                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
48918                                                        Benachrichtigen                                                    </button>
48919                                                </div>
48920                                            </div>
48921
48922                                                                                            <div class="flex items-start pt-2">
48923                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
48924                                                        text-blue-600 border-gray-300 rounded-sm">
48925                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
48926                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
48927                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
48928                                                </div>
48929                                                                                    </form>
48930                                    </div>
48931
48932                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
48933                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
48934                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
48935  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
48936<title>x</title></svg>
48937                                    </button>
48938                                </div>
48939                            </div>
48940                        </template>
48941                    </template>
48942                </div>
48943                    </template>
48944    </div>
48945
48946<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_9425" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":9425,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2Rl","childProducts":{"7045":"1","46858":"1"},"childProductsAlertStatus":{"7045":"0","46858":"0"},"indexMapping":"{\u0022163:8\u0022:7045,\u0022163:15\u0022:46858}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":9425,"availabilityMessages":{"7045":"Download sofort  verf\u00fcgbar","46858":"Lieferbar in 10-14 Tagen"},"openAccess":{"9425":{"status":0},"7045":{"status":0}
48946,"46858":{"status":0}}}'>
48947    
48948    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
48949        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
48950        <span x-html="optionsLabelText"></span>
48951    </p>
48952</div>                </div>
48953            
48954                                
48954<script>
48955        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
48956            try {
48957                const attributes = (config && config.attributes) ? config.attributes : null;
48958                if (!attributes) return [];
48959                let attr = null;
48960                if (Array.isArray(attributes)) {
48961                    for (let i = 0; i < attributes.length; i++) {
48962                        const a = attributes[i];
48963                        if (a && a.id == attrId) {
48964                            attr = a;
48965                            break;
48966                        }
48967                    }
48968                } else {
48969                    attr = attributes[attrId];
48970                }
48971                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
48972            } catch (e) {
48973                return [];
48974            }
48975        };
48976
48977        function initConfigurableSwatchOptions_9425() {
48978            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["46858"]},{"id":"8","label":"PDF","products":["7045"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"7045":{"baseOldPrice":{"amount":56.065419560748},"oldPrice":{"amount":59.99},"basePrice":{"amount":56.065419560748},"finalPrice":{"amount":59.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"46858":{"baseOldPrice":{"amount":72.897195261682},"oldPrice":{"amount":78},"basePrice":{"amount":72.897195261682},"finalPrice":{"amount":78},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":56.065419560748},"oldPrice":{"amount":59.99},"basePrice":{"amount":56.065419560748},"finalPrice":{"amount":59.99},"isApproxPrice":null},"productId":"9425","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"7045":{"163":"8"},"46858":{"163":"15"}},"salable":{"163":{"8":["7045"],"15":["46858"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"7045":"003461","46858":"004785"},"output":{"7045":"PDF","46858":"Kartoniert"},"original_name":{"7045":"","46858":""},"openaccess_license_link":{"7045":"","46858":""},"openaccess_license_name":{"7045":"","46858":""},"openaccess_external_link":{"7045":"","46858":""},"gpsr_safety_info":{"7045":"","46858":""},"description":{"7045":"<h5>Texte und Dokumente<\/h5>\n<ul><li>Herbert Albrecht (Berlin): <i>Ein neu aufgefundener Brief Hegels an Christian Friedrich Winter (Mohr- und Wintersche Buchhandlung) in Heidelberg vom 3. Februar 1818<\/i><\/li><\/ul>\n<h5>Abhandlungen<\/h5>\n<ul><li>Ludwig Siep (M\u00fcnster): <i>Hegel \u00fcber Moralit\u00e4t und Wirklichkeit. Prolegomena zu einer Auseinandersetzung zwischen Hegel und der Realismusdebatte der modernen Metaethik<\/i><\/li><li>Juha Manninen (Helsinki): <i>Staat und Bildung. Folgen und Folgerungen aus der Hegelschen Rechtsphilosophie in Finnland im Jahre 1830\u20131831<\/i><\/li><li>Dean Moyar (Baltimore, MD): <i>Urteil, Schlu\u00df und Handlung: Hegels logische \u00dcberg\u00e4nge im Argument zur Sittlichkeit<\/i><\/li><li>Axel Hutter (M\u00fcnchen): <i>Hegels Philosophie des Geistes<\/i><\/li><\/ul>\n<h5>Perspektiven der Forschung<\/h5>\n<ul><li>Martin Wendte (T\u00fcbingen): <i>Zu begreifen, was ist. Lage und Aufgabe der Forschung zu Hegels Berliner Religionsphilosophie<\/i><\/li><\/ul>\n<h5>Literaturberichte und Kritik<\/h5>\n<ul><li>Georg Wilhelm Friedrich Hegel: <i>Philosophie der Kunst. Vorlesung von 1826. Georg Wilhelm Friedrich Hegel: Philosophie der Kunst oder \u00c4sthetik. Nach Hegel. Im Sommer 1826. Mitschrift Friedrich Carl Hermann Victor Kehler<\/i> (Nathan Ross, Chicago, IL)<\/li><li>Renato Caputo: <i>Il tragico nel primo Hegel. Tragedia cristiana e destino della modernit\u00e0. [Der Tragiker beim fr\u00fchen Hegel. Christliche Trag\u00f6die und Schicksal der Moderne.]<\/i> (Lea L. Ypi, San Domenico di Fiesole [FI])<\/li><li>Gerhard Hofweber: <i>Skeptizismus als \"die erste Stuffe zur Philosophie\" beim Jenaer Hegel<\/i> (Fabian Kettner, Bochum)<\/li><li>Leonardo di Carlo: <i>Sistema giuridico e interazione sociale in Hegel. Dagli scritti jenesi ai Lineamenti di filosofia del diritto. [System des Rechts und soziale Interaktion bei Hegel. Von den Jenaer Schriften zu den Grundlinien der Philosophie des Rechts.]<\/i> (Alfredo Berg\u00e9s, Bochum)<\/li><li>Thomas Auinger: <i>
48978Das absolute Wissen als Ort der Ver-Einigung. Zur absoluten Wissensdimension des Gewissens und der Religion in Hegels Ph\u00e4nomenologie des Geistes<\/i> (Kurt Appel, Wien)<\/li><li>Stephen Houlgate: <i>The Opening of Hegel's Logic. From Being to Infinity<\/i> (Karin de Boer, Groningen)<\/li><li>Tommaso Pierini: <i>Theorie der Freiheit. Der Begriff des Zwecks in Hegels Wissenschaft der Logik<\/i> (Friedrike Schick, T\u00fcbingen)<\/li><li>Renate Wahsner: <i>Der Widerstreit von Mechanismus und Organismus. Kant und Hegel im Widerstreit um das neuzeitliche Denkprinzip und den Status der Naturwissenschaft<\/i> (Wolfgang Bonsiepen, Bochum)<\/li><li>Ekkehart Schaffer: <i>Die pythagoreische Tradition. Studien zu Platon, Kepler und Hegel<\/i> (Wolfgang Bonsiepen, Bochum)<\/li><li>Keiji Sayama: <i>Die Geburt der b\u00fcrgerlichen Gesellschaft. Zur Entstehung von Hegels Sozialphilosophie<\/i> (David P. Schweikard, K\u00f6ln)<\/li><li>Robert M. Wallace: <i>Hegel's Philosophy of Reality, Freedom, and God<\/i> (Attila Karakus, M\u00fcnster)<\/li><li>Ursula Franke \/ Annemarie Gethmann-Siefert (Hgg.): <i>Kulturpolitik und Kunstgeschichte. Perspektiven der Hegelschen \u00c4sthetik<\/i> (Dimitri Liebsch, Bochum)<\/li><li>Francesca Michelini \/ Roberto Morani (Eds.): <i>Hegel e il Nichilismo. [Hegel und der Nihilismus.]<\/i> (Pierluigi Valenza, Roma)<\/li><li>Tobias Blanke: <i>Das B\u00f6se in der politischen Theorie. Die Furcht vor der Freiheit bei Kant, Hegel und vielen anderen<\/i> (Britta Caspers, Bochum)<\/li><li>Marco Haase: <i>Grundnorm \u2013 Gemeinwille \u2013 Geist. Der Grund des Rechts nach Kelsen, Kant und Hegel<\/i> (David P. Schweikard, K\u00f6ln)<\/li><li>Rainer Rotermundt: <i>Konfrontationen. Hegel, Heidegger, L\u00e9vinas. Ein Essay<\/i> (Fabian Kettner, Bochum)<\/li><li>Leo Lugarini: <i>Hegel e Heidegger. Divergenze e consonanze. [Hegel und Heidegger. Unterschiede und Gemeinsamkeiten.]<\/i> (Gabriella Baptist, Cagliari)<\/li><li>Luca Illetterati \/ Antonio Moretto (Eds.): <i>Hegel, Heidegger e la questione della romanitas. Atti del convegno Verona, 16\u201317 maggio 2003. [Hegel, Heidegger und die Frage nach der romanitas. Kongre\u00df-Akten Verona, 16.\u201317. Mai 2003.]<\/i> (Corrado Bertani, Torino)<\/li><li>Marcella D'Abbiero (Ed.): <i>Desiderio e filosofia. Descartes Hegel Freud Heidegger Sartre Koj\u00e8ve Bataille Caillois Lacan Derrida. [Begierde und Philosophie.]<\/i> (Marcello Monaldi, Trieste)<\/li><li>Eduard Gans: <i>Naturrecht und Universalrechtsgeschichte. Vorlesungen nach G. W. F. Hegel<\/i><\/li><\/ul>","46858":"<h5>Texte und Dokumente<\/h5>\n<ul><li>Herbert Albrecht (Berlin): <i>Ein neu aufgefundener Brief Hegels an Christian Friedrich Winter (Mohr- und Wintersche Buchhandlung) in Heidelberg vom 3. Februar 1818<\/i><\/li><\/ul>\n<h5>Abhandlungen<\/h5>\n<ul><li>Ludwig Siep (M\u00fcnster): <i>Hegel \u00fcber Moralit\u00e4t und Wirklichkeit. Prolegomena zu einer Auseinandersetzung zwischen Hegel und der Realismusdebatte der modernen Metaethik<\/i><\/li><li>Juha Manninen (Helsinki): <i>Staat und Bildung. Folgen und Folgerungen aus der Hegelschen Rechtsphilosophie in Finnland im Jahre 1830\u20131831<\/i><\/li><li>Dean Moyar (Baltimore, MD): <i>Urteil, Schlu\u00df und Handlung: Hegels logische \u00dcberg\u00e4nge im Argument zur Sittlichkeit<\/i><\/li><li>Axel Hutter (M\u00fcnchen): <i>Hegels Philosophie des Geistes<\/i><\/li><\/ul>\n<h5>Perspektiven der Forschung<\/h5>\n<ul><li>Martin Wendte (T\u00fcbingen): <i>Zu begreifen, was ist. Lage und Aufgabe der Forschung zu Hegels Berliner Religionsphilosophie<\/i><\/li><\/ul>\n<h5>Literaturberichte und Kritik<\/h5>\n<ul><li>Georg Wilhelm Friedrich Hegel: <i>Philosophie der Kunst. Vorlesung von 1826. Georg Wilhelm Friedrich Hegel: Philosophie der Kunst oder \u00c4sthetik. Nach Hegel. Im Sommer 1826. Mitschrift Friedrich Carl Hermann Victor Kehler<\/i> (Nathan Ross, Chicago, IL)<\/li><li>Renato Caputo: <i>Il tragico nel primo Hegel. Tragedia cristiana e destino della modernit\u00e0. [Der Tragiker beim fr\u00fchen Hegel. Christliche Trag\u00f6die und Schicksal der Moderne.]<\/i> (Lea L. Ypi, San Domenico di Fiesole [FI])<\/li><li>Gerhard Hofweber: <i>Skeptizismus als \"die erste Stuffe zur Philosophie\" beim Jenaer Hegel<\/i> (Fabian Kettner, Bochum)<\/li><li>Leonardo di Carlo: <i>Sistema giuridico e interazione sociale in Hegel. Dagli scritti jenesi ai Lineamenti di filosofia del diritto. [System des Rechts und soziale Interaktion bei Hegel. Von den Jenaer Schriften zu den Grundlinien der Philosophie des Rechts.]<\/i> (Alfredo Berg\u00e9s, Bochum)<\/li><li>Thomas Auinger: <i>
48978Das absolute Wissen als Ort der Ver-Einigung. Zur absoluten Wissensdimension des Gewissens und der Religion in Hegels Ph\u00e4nomenologie des Geistes<\/i> (Kurt Appel, Wien)<\/li><li>Stephen Houlgate: <i>The Opening of Hegel's Logic. From Being to Infinity<\/i> (Karin de Boer, Groningen)<\/li><li>Tommaso Pierini: <i>Theorie der Freiheit. Der Begriff des Zwecks in Hegels Wissenschaft der Logik<\/i> (Friedrike Schick, T\u00fcbingen)<\/li><li>Renate Wahsner: <i>Der Widerstreit von Mechanismus und Organismus. Kant und Hegel im Widerstreit um das neuzeitliche Denkprinzip und den Status der Naturwissenschaft<\/i> (Wolfgang Bonsiepen, Bochum)<\/li><li>Ekkehart Schaffer: <i>Die pythagoreische Tradition. Studien zu Platon, Kepler und Hegel<\/i> (Wolfgang Bonsiepen, Bochum)<\/li><li>Keiji Sayama: <i>Die Geburt der b\u00fcrgerlichen Gesellschaft. Zur Entstehung von Hegels Sozialphilosophie<\/i> (David P. Schweikard, K\u00f6ln)<\/li><li>Robert M. Wallace: <i>Hegel's Philosophy of Reality, Freedom, and God<\/i> (Attila Karakus, M\u00fcnster)<\/li><li>Ursula Franke \/ Annemarie Gethmann-Siefert (Hgg.): <i>Kulturpolitik und Kunstgeschichte. Perspektiven der Hegelschen \u00c4sthetik<\/i> (Dimitri Liebsch, Bochum)<\/li><li>Francesca Michelini \/ Roberto Morani (Eds.): <i>Hegel e il Nichilismo. [Hegel und der Nihilismus.]<\/i> (Pierluigi Valenza, Roma)<\/li><li>Tobias Blanke: <i>Das B\u00f6se in der politischen Theorie. Die Furcht vor der Freiheit bei Kant, Hegel und vielen anderen<\/i> (Britta Caspers, Bochum)<\/li><li>Marco Haase: <i>Grundnorm \u2013 Gemeinwille \u2013 Geist. Der Grund des Rechts nach Kelsen, Kant und Hegel<\/i> (David P. Schweikard, K\u00f6ln)<\/li><li>Rainer Rotermundt: <i>Konfrontationen. Hegel, Heidegger, L\u00e9vinas. Ein Essay<\/i> (Fabian Kettner, Bochum)<\/li><li>Leo Lugarini: <i>Hegel e Heidegger. Divergenze e consonanze. [Hegel und Heidegger. Unterschiede und Gemeinsamkeiten.]<\/i> (Gabriella Baptist, Cagliari)<\/li><li>Luca Illetterati \/ Antonio Moretto (Eds.): <i>Hegel, Heidegger e la questione della romanitas. Atti del convegno Verona, 16\u201317 maggio 2003. [Hegel, Heidegger und die Frage nach der romanitas. Kongre\u00df-Akten Verona, 16.\u201317. Mai 2003.]<\/i> (Corrado Bertani, Torino)<\/li><li>Marcella D'Abbiero (Ed.): <i>Desiderio e filosofia. Descartes Hegel Freud Heidegger Sartre Koj\u00e8ve Bataille Caillois Lacan Derrida. [Begierde und Philosophie.]<\/i> (Marcello Monaldi, Trieste)<\/li><li>Eduard Gans: <i>Naturrecht und Universalrechtsgeschichte. Vorlesungen nach G. W. F. Hegel<\/i><\/li><\/ul>"},"doi":{"7045":"10.28937\/978-3-7873-3461-2","46858":""},"isbn":{"7045":"978-3-7873-3461-2","46858":"978-3-7873-4785-8"},"marketing_short_text":{"7045":"","46858":""},"recension_text":{"7045":"","46858":""},"language":{"7045":"","46858":""},"cover":{"7045":"","46858":"Kartoniert"},"pages":{"7045":"272 Seiten","46858":""},"edition":{"7045":"Unver\u00e4ndertes eBook der 1. Auflage von 2007","46858":"Unver\u00e4nderter Print-on-Demand-Nachdruck der 1. Auflage 2008"},"pod":{"7045":"Nein","46858":"Ja"},"copyright_year":{"7045":"","46858":""},"vlb_tix_link":{"7045":"","46858":"https:\/\/neu.vlbtix.de\/products\/9783787347858?type=gtin"},"defaultValues":{"163":"15"}};
48979            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
48980
48981            if (typeof window.amxnotif_wrap_attributes === 'function') {
48982                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
48983                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
48984            }
48985
48986            const configurableOptionsComponent = initConfigurableOptions(
48987                '9425',
48988                config
48989            );
48990            const swatchOptionsComponent = initSwatchOptions(
48991                swatchConfig
48992            );
48993
48994            // DWS - Configurable product preselect start
48995            const confProdPreSelect = () => {
48996                return {
48997                    preselectQuerystringItems() {
48998                        var data = {"id":"46858","output":"15"};
48999                        const urlQueryParams = new URLSearchParams(window.location.search);
49000
49001                                                this.$nextTick(() => {
49002                            setTimeout(() => {
49003                                const rootEl = this.$root || this.$el;
49004                                if (!rootEl) return;
49005
49006                                const applySelection = (attrCode, attrValue) => {
49007                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
49008
49009                                    const attributes = Object.values(this.optionConfig.attributes || {});
49010                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
49011
49012                                    if (targetAttr) {
49013                                        const attrId = String(targetAttr.id);
49014                                        const optionVal = String(attrValue);
49015
49016                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
49017
49018                                        if (inputEl) {
49019                                                                                        inputEl.click();
49020                                            inputEl.dispatchEvent(new Event('change', {
49021                                                bubbles: true
49022                                            }));
49023                                        } else {
49024                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
49025                                            if (selectEl) {
49026                                                selectEl.value = optionVal;
49027                                                selectEl.dispatchEvent(new Event('change', {
49028                                                    bubbles: true
49029                                                }));
49030                                            }
49031                                        }
49032
49033                                                                                this.changeOption(attrId, optionVal, false);
49034                                    }
49035                                };
49036
49037                                                                if (data && typeof data === 'object') {
49038                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
49039                                }
49040
49041                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
49042                                    if (attribute && attribute.code) {
49043                                        let optionValue = urlQueryParams.get(attribute.code);
49044                                        if (optionValue) {
49045                                            let optionId = false;
49046                                            const attributes = Object.values(this.optionConfig.attributes || {});
49047                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
49048
49049                                            let found = false;
49050                                            Object.values(targetAttr.options).map(option => {
49051                                                if (found === false && option.label === optionValue) {
49052                                                    optionId = option.id;
49053                                                    found = true;
49054                                                }
49055                                            });
49056
49057                                            const attrId = String(targetAttr.id);
49058                                            let optionVal = String(optionValue);
49059                                            if (found) {
49060                                                optionVal = String(optionId);
49061                                            }
49062
49063                                            applySelection(attribute.code, optionVal);
49064                                        }
49065                                    }
49066                                });
49067                            }, 100);
49068                        });
49069                    }
49070                }
49071            };
49072            // DWS - Configurable product preselect end
49073
49074            const result = Object.assign(
49075                configurableOptionsComponent,
49076                swatchOptionsComponent, {
49077                    productId: '9425',
49078                    productIndex: 0,
49079                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
49080                    showSwatches: false,
49081                    precalcOptions: {},
49082                    originalInit: configurableOptionsComponent.init,
49083                    init() {
49084                        try {
49085                            this.precalcOptions = {};
49086                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
49087                            this.preselectQuerystringItems();
49088                            if (Array.isArray(attrSource)) {
49089                                attrSource.forEach(attr => {
49090                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
49091                                });
49092                            } else if (attrSource && typeof attrSource === 'object') {
49093                                Object.keys(attrSource).forEach(id => {
49094                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
49095                                });
49096                            }
49097                        } catch (e) {
49098                            console.error('Pre-calc error:', e);
49099                        }
49100
49101                        if (typeof this.originalInit === 'function') {
49102                            this.originalInit();
49103                        }
49104
49105                        try {
49106                            this.initShowSwatchesIntersect();
49107                        } catch (e) {
49108                            console.error('intersect error:', e);
49109                        }
49110                    },
49111
49112                    updateGallery() {
49113                        if (!this.productIndex) return;
49114
49115                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
49116                                method: 'GET',
49117                                headers: {
49118                                    'Content-Type': 'application/json',
49119                                    'X-Requested-With': 'XMLHttpRequest'
49120                                }
49121                            })
49122                            .then(response => response.json())
49123                            .then(data => {
49124                                if (data && data.medium) {
49125                                    window.dispatchEvent(new CustomEvent("update-gallery-9425", {
49126                                        detail: data.medium
49127                                    }));
49128                                }
49129                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
49130                    },
49131
49132
49133                    initShowSwatchesIntersect() {
49134                        const observer = new IntersectionObserver(entries => {
49135                            if (entries[0].isIntersecting) {
49136                                this.showSwatches = true;
49137                                observer.disconnect();
49138                            }
49139                        }, {
49140                            rootMargin: '512px'
49141                        });
49142                        observer.observe(this.$el);
49143                    },
49144                    getOptions(attrId) {
49145                        return this.precalcOptions[attrId] || [];
49146                    },
49147                    getOptionsByAttrId() {
49148                        return this.getOptions(this.$el.dataset.attributeId);
49149                    },
49150                    _getItemId() {
49151                        if (this.item && this.item.id) return this.item.id;
49152                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
49153                    },
49154                    getSwatchOptionHtmlId() {
49155                        const itemId = this._getItemId();
49156                        return itemId ? this.$id(`attribute-option-9425-${itemId}`) : '';
49157                    },
49158                    getSwatchOptionHtmlIdGroup() {
49159                        const itemId = this._getItemId();
49160                        return itemId ? [`attribute-option-9425-${itemId}`] : [];
49161                    },
49162                    getAttributeSwatchData(attributeId) {
49163                        const data = Object.assign({}, this.swatchConfig[attributeId]);
49164                        if (data['additional_data']) {
49165                            try {
49166                                data['details'] = JSON.parse(data['additional_data']);
49167                            } catch (e) {
49168                                data['details'] = {};
49169                            }
49170                        }
49171                        return data;
49172                    },
49173                    getSwatchType(attributeId, optionId) {
49174                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
49175                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
49176                        }
49177                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
49178                            this.swatchConfig[attributeId].details.swatch_input_type :
49179                            "empty";
49180                        if (type === 'visual') {
49181                            const config = this.swatchConfig[attributeId];
49182                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
49183                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
49184                            }
49185                            // Fallback to first option type
49186                            for (const oId in config) {
49187                                if (config[oId] && typeof config[oId].type !== 'undefined') {
49188                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
49189                                }
49190                            }
49191                        }
49192                        return type;
49193                    },
49194                    mapSwatchTypeNumberToTypeCode(type) {
49195                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
49196                    },
49197                    isTextSwatch() {
49198                        const itemId = this._getItemId();
49199                        if (!this.$el || !itemId) return false;
49200                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
49201                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
49202                    },
49203
49204                    getSwatchText() {
49205                        const itemId = this._getItemId();
49206                        if (this.item) return this.item.label || '';
49207                        if (!this.$el || !itemId) return '';
49208                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
49209                        const options = attrId ? this.getOptions(attrId) : [];
49210                        const opt = options.find(o => o.id == itemId);
49211                        return opt ? opt.label : '';
49212                    },
49213                    getSwatchBackgroundStyle() {
49214                        const itemId = this._getItemId();
49215                        if (!this.$el || !itemId) return '';
49216                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
49217                        if (!attrId) return '';
49218                        const type = this.getSwatchType(attrId, itemId);
49219                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
49220                            this.swatchConfig[attrId][itemId] :
49221                            null;
49222                        if (!swatchData) return '';
49223                        if (type === "color") return 'background-color:' + swatchData.value;
49224                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
49225                        return '';
49226                    },
49227                    swatchOptionClasses() {
49228                        const itemId = this._getItemId();
49229                        if (!this.$el || !itemId) return {};
49230                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
49231                        return {
49232                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
49233                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
49234                            'w-6 h-6': !this.isTextSwatch()
49235                        }
49236                    },
49237
49238                    onFocusSwatchItem() {
49239                        const itemId = this._getItemId();
49240                        if (itemId) this.focusedLabel = itemId;
49241                    },
49242                    onChangeOption() {
49243                        const itemId = this._getItemId();
49244                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
49245                        if (attrId && itemId) this.changeOption(attrId, itemId);
49246                    },
49247                    changeOption(attributeId, value) {
49248                        if (value === '') {
49249                            return;
49250                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
49251                        } else {
49252                            this.selectedValues[attributeId] = value;
49253                        }
49254
49255                        this.findSimpleIndex();
49256                        this.findAllowedAttributeOptions();
49257                        this.updatePrices();
49258                        this.updateGallery();
49259
49260                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
49261                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
49262
49263                        const eventDetail = {
49264                            productId: this.productId,
49265                            optionId: attributeId,
49266                            value: value,
49267                            productIndex: this.productIndex || 0,
49268                            selectedValues: this.selectedValues,
49269                            candidates: candidates,
49270                            sourceElement: this.$el
49271                        };
49272
49273                        // Dispatch for Amasty
49274                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
49275                            detail: eventDetail
49276                        }));
49277
49278                        // Dispatch for Hyva listing
49279                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
49280                            detail: eventDetail
49281                        }));
49282                    },
49283
49284
49285                    clearOptionIfActive() {
49286                        const itemId = this._getItemId();
49287                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
49288                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
49289                            this.changeOption(attrId, '');
49290
49291                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
49292                            if (!input && this.$el?.querySelector) {
49293                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
49294                            }
49295                            if (!input && this.$el?.closest) {
49296                                const root = this.$el.closest('[data-product-id]') || this.$el;
49297                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
49298                            }
49299                            if (input) {
49300                                input.checked = false;
49301                            }
49302                        }
49303                    },
49304                    get optionIsEnabled() {
49305                        const itemId = this._getItemId();
49306                        if (!this.$el || !itemId) return true;
49307                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
49308                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
49309                        return !!allowedOptions.find(opt => opt.id == itemId);
49310                    },
49311                    get isSelected() {
49312                        const itemId = this._getItemId();
49313                        if (!this.$el || !itemId) return false;
49314                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
49315                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
49316                    },
49317                    get isSwatchRequired() {
49318                        if (!this.$el) return false;
49319                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
49320                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
49321                    },
49322                    focusedLabel: false,
49323                    activeTooltipItem: false,
49324                    tooltipPositionElement: false,
49325                    setActiveTooltipItem() {
49326                        const itemId = this._getItemId();
49327                        if (!this.$el || !itemId) return;
49328                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
49329                        this.activeTooltipItem = {
49330                            attribute: attrId,
49331                            item: itemId,
49332                            index: 0
49333                        };
49334                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
49335                    },
49336                    unsetActiveTooltipItem() {
49337                        this.activeTooltipItem = false;
49338                    }
49339                },
49340                confProdPreSelect()
49341            );
49342
49343            if (result.optionConfig && result.optionConfig.attributes) {
49344                const attributes = result.optionConfig.attributes;
49345                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
49346                    let source = attributes;
49347                    if (Array.isArray(attributes)) {
49348                        source = {};
49349                        attributes.forEach(attr => {
49350                            if (attr && attr.id) source[attr.id] = attr;
49351                        });
49352                    }
49353                    const values = Object.values(source);
49354                    const wrapper = Object.assign(values, source);
49355                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
49356                        value: true,
49357                        enumerable: false
49358                    });
49359                    result.optionConfig.attributes = wrapper;
49360                }
49361            }
49362
49363            return result;
49364        }
49365
49366        window.addEventListener('alpine:init', () => {
49367            Alpine.data('initConfigurableSwatchOptions_9425', initConfigurableSwatchOptions_9425);
49368        }, {
49369            once: true
49370        });
49371    </script>
49371
49372    
49373    <div x-data="initConfigurableSwatchOptions_9425" x-defer="intersect">
49374        <div class="pagebuilder-home-hidden">
49375                                            
49376                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
49377                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
49378                        <template x-if="showSwatches">
49379                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-9425-163" role="radiogroup" aria-label="Einband">
49380                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
49381                                    <div :data-option-id="item.id" style="display: contents">
49382                                        <div x-id="getSwatchOptionHtmlIdGroup">
49383    <template x-if="optionIsEnabled">
49384        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
49384self="unsetActiveTooltipItem">
49385            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-9425-163">
49386            <div>
49387                <template x-if="isTextSwatch">
49388                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
49389                </template>
49390                <template x-if="!optionIsActive(163, item.id)">
49391                    <div>
49392                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
49393                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
49394                        </svg>
49395                    </div>
49396                </template>
49397            </div>
49398        </label>
49399    </template>
49400</div>                                    </div>
49401                                </template>
49402                            </div>
49403                        </template>
49404                    </div>
49405                </div>
49406                    </div>
49407    </div>
49408            
49409                                                <div class="meta py-4 pagebuilder-home-hidden">
49410                <div x-data="initMarketingShortText_9425()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
49411                    <!-- Marketing short text -->
49412                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
49413                    </div>
49414
49415                    <!-- Short description -->
49416                                                        </div>
49417
49418                <!-- Series  -->
49419                                    <div class="mb-1">
49420                        <span class="sr-only">Reihe:</span>
49421                        <a href="https://meiner.de/fmv_de/programm/zeitschriften/hegel-studien">
49422                            <span>Hegel-Studien</span>
49423                        </a>
49424                                                    42                                            </div>
49425                
49426                
49427                                                    <div class="mb-1">
49428                        <span x-data="initEditionText_9425()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
49429                            <!-- Marketing short text -->
49430                            <span class="edition-text" x-html="editionText"></span>&nbsp;2007                        </span>
49431                    </div>
49432                
49433                            </div>
49434            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
49435                
49436                <div class="justify-end" x-data="initPriceBox()" @update-prices-9425.window="updatePrice($event.detail);">
49437                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="9425" data-price-box="product-id-9425"><span class="normal-price">
49438    <span x-data x-id="['product\u002Dprice\u002D9425']" class="price-container price-final_price tax weee">
49439            <span class="price-label">Ab</span>
49440                <span class="approx-price">ca. </span>
49441        <span :id="$id('product\u002Dprice\u002D9425')" data-price-amount="59.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">59,99&nbsp;&euro;</span></span>
49442        </span>
49443</span>
49444
49445
49446</div>                </div>
49447
49448                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
49449                                            <div class="open-access-container open-access-container-9425                    flex mt-4 ml-auto sm:mt-0 hidden">
49450                            <div class="text-gray-700">
49451                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
49452                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
49453                                        Kostenlos online lesen                                    </a>
49454                                </button>
49455                            </div>
49456                        </div>
49457                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Hegel-Studien Band 42" aria-label="In den Warenkorb Hegel-Studien Band 42" data-addto="cart">
49458                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
49459  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
494590 014 0z"></path>
49460</svg>
49461                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
49462                                        In den Warenkorb                                    </span>
49463                                </button>
49464                                                                                                                    
49465<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(9425)" aria-label="Zur Wunschliste hinzuf&uuml;gen Hegel-Studien Band 42" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
49466    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
49467  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
49468</svg>
49469</button>
49470                                    </div>
49471            </div>
49472        </div>
49473        
49473<script>
49474            function initMarketingShortText_9425() {
49475                var marketingShortTextConfig = {};
49476                if (typeof window.initConfigurableSwatchOptions_9425 === "function") {
49477                    var fullConfig = window.initConfigurableSwatchOptions_9425().optionConfig
49478                    var marketingShortTextConfig = fullConfig.marketing_short_text;
49479                }
49480                return {
49481                    marketingShortText: '',
49482                    config: marketingShortTextConfig,
49483                    productId: '9425',
49484                    getMarketingShortText(detail) {
49485                        this.marketingShortText = detail.productIndex ?
49486                            this.config[detail.productIndex] :
49487                            null;
49488                    },
49489                    eventListeners: {
49490                        ['@listing-configurable-selection-changed.window'](event) {
49491                            if (this.productId == event.detail.productId) {
49492                                this.getMarketingShortText(event.detail);
49493                            }
49494
49495                        }
49496                    }
49497                }
49498            }
49499
49500            function initEditionText_9425() {
49501                var editionTextConfig = {};
49502                if (typeof window.initConfigurableSwatchOptions_9425 === "function") {
49503                    var fullConfig = window.initConfigurableSwatchOptions_9425().optionConfig
49504                    var editionTextConfig = fullConfig.edition;
49505                }
49506                return {
49507                    editionText: '',
49508                    config: editionTextConfig,
49509                    productId: '9425',
49510                    getEditionText(detail) {
49511                        this.editionText = detail.productIndex ?
49512                            this.config[detail.productIndex] :
49513                            null;
49514                    },
49515                    eventListeners: {
49516                        ['@listing-configurable-selection-changed.window'](event) {
49517                            if (this.productId == event.detail.productId) {
49518                                this.getEditionText(event.detail);
49519                            }
49520
49521                        }
49522                    }
49523                }
49524            }
49525        </script>
49525
49526                    </form>
49527                    </div>
49528        
49529<div class="carousel-nav flex items-center justify-center flex-1 p-4">
49530    <button aria-label="Zur&uuml;ck" title="Zur&uuml;ck" class="glider-prev w-8 h-8 mr-1 text-black rounded-full outline-none focus:outline-none hidden">
49531        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true">
49532  <path stroke-linecap="round" stroke-linejoin="round" d="M15 19l-7-7 7-7"></path>
49533</svg>
49534    </button>
49535    <div role="tablist" class="glider-dots select-none flex flex-wrap mx-1 justify-center p-0 focus:outline-none"></div>
49536    <button aria-label="Weiter" title="Weiter" class="glider-next w-8 h-8 ml-1 text-black rounded-full outline-none focus:outline-none hidden">
49537        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" width="24" height="24" aria-hidden="true">
49538  <path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"></path>
49539</svg>
49540    </button>
49541</div>
49542    </div>
49543</div></div></div></div></div></div><div data-content-type="row" data-appearance="contained" data-element="main"><div data-enable-parallax="0" data-parallax-speed="0.5" data-background-images="{}" data-background-type="image" data-video-loop="true" data-video-play-only-visible="true" data-video-lazy-load="true" data-video-fallback-src="" data-background-lazy-load="false" data-element="inner" data-pb-style="NIHBCNX"><h3 data-content-type="heading" data-appearance="default" data-element="main">Im Set verf&uuml;gbar</h3><div data-content-type="products" data-appearance="carousel" data-autoplay="false" data-autoplay-speed="4000" data-infinite-loop="false" data-show-arrows="false" data-show-dots="true" data-carousel-mode="default" data-center-padding="90px" data-element="main">        <div class="glider-contain product-items widget-product-carousel">
49544        <div data-role="glider-content" class="mx-auto grid gap-4 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 relative overflow-y-hidden overflow-x-scroll">
49545                            
49546    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/44481/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk20119">
49547        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="44481">
49548                                    <a href="https://meiner.de/fmv_de/radikalita-t-set-band-1-2-20119" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
49549            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-44481.window="$el.src = $event.detail" alt="Radikalit&auml;t (Set Band 1 &amp;amp; 2)" title="Radikalit&auml;t (Set Band 1 &amp;amp; 2)" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787350216_1.jpg" :style="{
49550                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
49551                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
49552            }">
49553                    </a>
49554        <div class="product-info flex flex-col flex-grow ">
49555                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
49556                                    <div class="mb-2 text-sm text-gray-500 font-medium">
49557                                                                                    <a href="https://meiner.de/fmv_de/person/Mirjam-Schaub-11674/" class="mb-2">
49558                                    Mirjam Schaub                                                                    </a>
49559                                                                                                                                    </div>
49560                                <a class="product-item-link" href="https://meiner.de/fmv_de/radikalita-t-set-band-1-2-20119">
49561                    Radikalit&auml;t (Set Band 1 &amp; 2)                </a>
49562                            </div>
49563
49564            <div x-data="initEditionText_44481()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
49565                <!-- Marketing short text -->
49566                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
49567                </div>
49568            </div>
49569
49570                            <div class="py-1 grid  mb-4 ">
49571                    
49572                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":44481,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":44481,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"43253":"1"},"childProductsAlertStatus":{"43253":"0"},"indexMapping":{"163:11":43253},"availabilityMessages":{"43253":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"44481":{"status":0},"43253":{"status":0}}},"availabilityMessages":{"43253":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"44481":{"status":0},"43253":{"status":0}}}'>
49573        <template x-if="containerVisible">
49574                            <!-- Popup Trigger -->
49575                <div>
49576                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
49577                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
49578                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
49579  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
49580<title>bell</title></svg>
49581</span>
49582                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
49583
49584                    <!-- Popup Modal -->
49585                    <template x-if="showModal">
49586                        <template x-teleport=".page-wrapper">
49587                            <div x-cloak class="fixed inset-0 flex items-center justify-center
49588                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
49589                                <div class="relative bg-white rounded-lg shadow-xl
49590                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
49591                                    <div class="p-6">
49592                                        <!-- Subscription Form for Popup -->
49593                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
49594                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
49595                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
49596                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
49597
49598                                            <div class="flex flex-col gap-3">
49599                                                <div class="flex-grow grow">
49600                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
49601                                                        shadow-xs focus:outline-none focus:outline-hidden
49602                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
49603                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
49604                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
49605                                                </div>
49606                                                <input type="hidden" name="product_id" :value="currentProductId">
49607                                                <input type="hidden" name="type" value="email">
49608
49609                                                
49610                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
49611
49612                                                <div class="amxnotif_guest_action">
49613                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
49614                                                        rounded-md focus:outline-none
49615                                                        focus:outline-hidden focus:ring-2
49616                                                        focus:ring-offset-2 disabled:opacity-50
49617                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
49618                                                        Benachrichtigen                                                    </button>
49619                                                </div>
49620                                            </div>
49621
49622                                                                                            <div class="flex items-start pt-2">
49623                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
49624                                                        text-blue-600 border-gray-300 rounded-sm">
49625                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
49626                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
49627                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
49628                                                </div>
49629                                                                                    </form>
49630                                    </div>
49631
49632                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
49633                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
49634                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
49635  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
49636<title>x</title></svg>
49637                                    </button>
49638                                </div>
49639                            </div>
49640                        </template>
49641                    </template>
49642                </div>
49643                    </template>
49644    </div>
49645
49646<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_44481" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":44481,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"43253":"1"},"childProductsAlertStatus":{"43253":"0"},"indexMapping":"{\u0022163:11\u0022:43253}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":44481,"availabilityMessages":{"43253":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"44481":{"status":0},"43253":{"status":0}}}'>
49647    
49648    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
49649        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
49650        <span x-html="optionsLabelText"></span>
49651    </p>
49652</div>                </div>
49653            
49654                                
49654<script>
49655        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
49656            try {
49657                const attributes = (config && config.attributes) ? config.attributes : null;
49658                if (!attributes) return [];
49659                let attr = null;
49660                if (Array.isArray(attributes)) {
49661                    for (let i = 0; i < attributes.length; i++) {
49662                        const a = attributes[i];
49663                        if (a && a.id == attrId) {
49664                            attr = a;
49665                            break;
49666                        }
49667                    }
49668                } else {
49669                    attr = attributes[attrId];
49670                }
49671                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
49672            } catch (e) {
49673                return [];
49674            }
49675        };
49676
49677        function initConfigurableSwatchOptions_44481() {
49678            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"11","label":"Gebunden","products":["43253"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"43253":{"baseOldPrice":{"amount":87.85046628972},"oldPrice":{"amount":94},"basePrice":{"amount":87.85046628972},"finalPrice":{"amount":94},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":87.85046628972},"oldPrice":{"amount":94},"basePrice":{"amount":78.991595638655},"finalPrice":{"amount":94},"isApproxPrice":null},"productId":"44481","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"43253":{"163":"11"}},"salable":{"163":{"11":["43253"]}},"canDisplayShowOutOfStockStatus":true,"preSelectedGallery":[],"channel":"website","salesChannelCode":"fmv","sku":{"43253":"005021"},"output":{"43253":"Gebunden"},"original_name":{"43253":""},"openaccess_license_link":{"43253":""},"openaccess_license_name":{"43253":""},"openaccess_external_link":{"43253":""},"gpsr_safety_info":{"43253":""},"description":{"43253":"Schillernd und fremd, l\u00e4sst sich Radikalit\u00e4t zu allen Zeiten und in allen Kulturen mit ihrem Hang zum Unbedingten beobachten. Fast immer wirkt sie anst\u00f6\u00dfig und besch\u00e4mend, wenn auch in Philosophie und Kunst seltener als in Religion, Politik, Gesellschaft. Attraktiv bleibt sie, weil sie etwas Essentielles verspricht: die Schlie\u00dfung des mitunter feinen Risses zwischen Theorie und Praxis, als Versprechen der eigenen Unerpressbarkeit.<br\/><br\/>Diesem Riss und seinen unerh\u00f6rten Auswirkungen geht der erste Band von Mirjam Schaubs gro\u00dfem kulturphilosophischem Entwurf nach. Das Buch entf\u00fchrt in die griechische Antike, als ein Theoretiker noch ein fahrender Kulturbotschafter im Mittelmeerraum und eben kein Philosoph ist. Es fragt nach dem Selbstmord des Sokrates und warum dessen Radikalit\u00e4t zugleich eine Wunde schl\u00e4gt, die Aristoteles meint heilen zu m\u00fcssen. Um Nachahmung zu unterbinden und zugleich der Philosophie eine Zukunft zu er\u00f6ffnen, erfindet Aristoteles die Theorie-Praxis-L\u00fccke, indem er Idee und Tat ein St\u00fcck weit auseinanderr\u00fcckt. Diogenes von Sinope aber rebelliert mit drastischen Mitteln gegen diesen heilsamen Schachzug. Er stiftet soziale Unruhe, sorgt f\u00fcr helle Emp\u00f6rung, indem er hedonistische wie asketische Praktiken in aller \u00d6ffentlichkeit propagiert. Unf\u00e4hig, dieses grelle \u203aUnd\u2039 aus Askese und Hedonismus auszuhalten, zersplittert das radikale, kynische Erbe und teilt sich, folgt man Michel Foucault, auf in Karneval, M\u00f6nchtum und Kunst. Diesem Vorschlag geht das Buch nach. In Venedig er\u00f6ffnet sich mit der ersten europ\u00e4ischen Pest ab 1348 der Gebrauch einer anonymisierenden Maske: Wer seine Komplizen nicht kennt, kann niemanden verraten. Eine solch selbstironische \u203aTeilzeitradikalit\u00e4t\u2039 setzt auf Selbstdistanzierung, unpers\u00f6nliche Formen der Interaktion und auf ein Vertrauen, das absichtlich blind ist.<br\/><br\/>Der zweite Band bricht mit der Vorstellung, Popul\u00e4rkultur und Radikalit\u00e4t seien Gegens\u00e4tze. Sp\u00e4testens mit Jeremy Benthams \u203aAuto-Icon\u2039 (1832), dem humanoiden Artefakt, das bis heute im University College of London sitzt, sp\u00e4ter bei Max Stirner, der Bewegung um 1968 und bei Marina Abramovi\u0107 verbinden sich Radikalit\u00e4t und Popul\u00e4rkultur und stiften eine radikal neue Form von Egalit\u00e4t. <br\/><br\/>Das schl\u00e4gt sich nieder in einem ubiquit\u00e4ren Gebrauch, der bislang kaum erforscht ist. Dieser queere und unorthodoxe Gebrauch des eigenen K\u00f6rpers und Lebens l\u00e4sst sich weder als Handlung noch als Mittel-Zweck-Relation, noch als Nutzenkalk\u00fcl beschreiben. Sp\u00e4testens mit der Konjunktur von Krypto-W\u00e4hrungen ger\u00e4t er zum radikalen Angelpunkt, um das Denken in Besitzkategorien auszuhebeln: Radikaler Gebrauch erscheint pl\u00f6tzlich sch\u00fctzenswerter als einst der Besitz.<br\/><br\/>Das Buch verfolgt den unbedingten Selbstgebrauch in Politik, Kunst und Popul\u00e4rkultur von der Stadtguerilla \u00fcber radikale Kunstprojekte bis hin zu NFTs, Hackern wie dem Anonymous-Kollektiv und den Aktivistinnen und Aktivisten der \u00bbLetzten Generation\u00ab. Es enth\u00e4lt und anal
49678ysiert auch einen bisher unbekannten Kassiber, den Gudrun Ensslin 1969 aus der Haft schmuggeln lie\u00df. Radikalit\u00e4t erweist sich in der k\u00fcnstlichen Herstellung von Gleichheit unter Ungleichen \u2013 ungleich an Talenten, Chancen, Mitteln \u2013 als wirksames soziales Korrektiv."},"doi":{"43253":""},"isbn":{"43253":"978-3-7873-5021-6"},"marketing_short_text":{"43253":"Eine Videoaufnahme eines Gespr&auml;chs mit Mirjam Schaub, Veranstaltungshinweise und erg&auml;nzende Informationen finden Sie unter <a href=\"http:\/\/meiner.de\/radikalitaet\">meiner.de\/radikalitaet<\/a>."},"recension_text":{"43253":"<div class=\"reviews\">\r\n<div class=\"review\">Gerade die Vielfalt der von Schaub behandelten Ph\u00e4nomene erweist sich als besondere St\u00e4rke des Werks: Die Lekt\u00fcre ist anregend und unterhaltsam zugleich, vermittelt reichhaltiges \u2013 bisweilen nischenhaftes \u2013 Detailwissen und l\u00e4dt immer wieder zum Schmunzeln ein.<\/div>\r\n<div class=\"source\">Max Tretter in Zeitzeichen 6\/2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Stilistisch ist das Werk ein Genuss. Schaub meidet den trockenen Jargon des Elfenbeinturms, ohne an analytischer Sch\u00e4rfe zu verlieren [...] Wer verstehen will, warum Menschen sich auf Stra\u00dfen festkleben, warum sich Performance-K\u00fcnstler Schmerzen zuf\u00fcgen oder warum wir uns in den sozialen Medien radikal entbl\u00f6\u00dfen, der muss dieses Buch lesen. Es ist ein Werk, das [\u2026] den Leser nicht unber\u00fchrt l\u00e4sst und dazu zwingt, die eigene Haltung zur L\u00fccke zwischen Denken und Tun zu \u00fcberpr\u00fcfen.<\/div>\r\n<div class=\"source\">Stefan Gammel in \u00bbder blaue reiter\u00ab, Ausgabe 57 \/ 2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Mirjam Schaubs Buch ist ein anregender Lesespa\u00df, in dem mit ungez\u00fcgelter Wildheit dem Auf und Ab der radikalen Ideen in der Menschheitsgeschichte nachgesp\u00fcrt wird. Das Buch ist ein einziger Tumult, verdammt gute Sache.<\/div>\r\n<div class=\"source\">Michael Hesse in der Frankfurter Rundschau vom 12.05.2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Dieses Buch ist eine gelungene \u00dcberraschung. [...] Manchmal w\u00fcnscht man sich, diese Reise in ferne und doch nahegehende Welten w\u00fcrde tats\u00e4chlich kein Ende finden.<\/div>\r\n<div class=\"source\">Dieter Thom\u00e4 in der FAZ vom 24.01.2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Mirjam Schaub gelingt [...] mit \u203aRadikalit\u00e4t\u2039 selbst etwas Radikales: Eine sehr facettenreiche, historisch profunde Studie, die ein breites kulturelles Spektrum tiefgehend analysiert. Indem sie Radikalit\u00e4t und Popul\u00e4rkultur miteinander ins Gespr\u00e4ch bringt, haucht sie am Ende Friedrich von Schlegels Gedanken neues Leben ein, dass n\u00e4mlich ein witziger Einfall wie das \u00fcberraschende Wiedersehen zweier befreundeter Gedanken nach einer langen Trennung ist.<\/div>\r\n<div class=\"source\">J\u00fcrgen Nielsen-Sikora in Glanz & Elend am 10.01.2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">[\u2026] ein kluger, wunderbar erz\u00e4hlter Ritt durch 2500 Jahre Radikalit\u00e4tsgeschichte mit Ausfl\u00fcgen in Politik, Kunst und Philosophie<\/div>\r\n<div class=\"source\">Philosophie Magazin 01\/2026<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Endlich ein Buch, das die Verdrossenheit dieser Zeitzone weitr\u00e4umig umschifft. Warum? Weil es Feigheit und Faulheit mit Kreativit\u00e4t und Witz begegnet. [\u2026]  Scheinbar m\u00fchelos verbindet es die Jahrhunderte und macht Lust auf ein unorthodoxes, aufregendes Denken.<\/div>\r\n<div class=\"source\">Horst Bredekamp<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Was wir \u00fcber Radikalit\u00e4t und Radikalisierung in Theorie und Praxis zu wissen glauben, wird hier so einfalls- wie materialreich, so \u00fcberraschend wie anregend aufgemischt und durcheinandergebracht.<\/div>\r\n<div class=\"source\">Eva Geulen<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Radikalit\u00e4t, so zeigt sich, kann einfach nur zerst\u00f6rerisch sein, aber auch \u203asmart\u2039: Sie ist ein Kunstgriff, der es den Kulturen erlaubt, sich zu ver\u00e4ndern, um bleiben zu k\u00f6nnen, was sie sind.<\/div>\r\n<div class=\"source\">Ralf Konersmann<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Radikalit\u00e4t ist die Nagelprobe auf die Unterscheidung zwischen Theorie und Praxis im Leben selbst. Diesem Gedanken geht Mirjam Schaub in einer beeindruckenden Studie nach, indem die stummen und lauten Stimmen des Radikalen von der Antike bis in die Gegenwart zum Sprechen gebracht werden.<\/div>\r\n<div class=\"source\">Christian Bermes<\/div>\r\n<\/div>"},"language":{"43253":""},"cover":{"43253":"Gebunden"},"pages":{"43253":"Zusammen 848 Seiten mit 66 Abbildungen"},"edition":{"43253":""},"pod":{"43253":"Nein"},"copyright_year":{"43253":""},"vlb_tix_link":{"43253":"https:\/\/neu.vlbtix.de\/products\/9783787350216?type=gtin"},"defaultValues":{"163":"11"}};
49679            const swatchConfig = {"163":{"11":{"type":"0","value":"Gebunden","label":"Gebunden"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
49680
49681            if (typeof window.amxnotif_wrap_attributes === 'function') {
49682                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
49683                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
49684            }
49685
49686            const configurableOptionsComponent = initConfigurableOptions(
49687                '44481',
49688                config
49689            );
49690            const swatchOptionsComponent = initSwatchOptions(
49691                swatchConfig
49692            );
49693
49694            // DWS - Configurable product preselect start
49695            const confProdPreSelect = () => {
49696                return {
49697                    preselectQuerystringItems() {
49698                        var data = {"id":"43253","output":"11"};
49699                        const urlQueryParams = new URLSearchParams(window.location.search);
49700
49701                                                this.$nextTick(() => {
49702                            setTimeout(() => {
49703                                const rootEl = this.$root || this.$el;
49704                                if (!rootEl) return;
49705
49706                                const applySelection = (attrCode, attrValue) => {
49707                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
49708
49709                                    const attributes = Object.values(this.optionConfig.attributes || {});
49710                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
49711
49712                                    if (targetAttr) {
49713                                        const attrId = String(targetAttr.id);
49714                                        const optionVal = String(attrValue);
49715
49716                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
49717
49718                                        if (inputEl) {
49719                                                                                        inputEl.click();
49720                                            inputEl.dispatchEvent(new Event('change', {
49721                                                bubbles: true
49722                                            }));
49723                                        } else {
49724                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
49725                                            if (selectEl) {
49726                                                selectEl.value = optionVal;
49727                                                selectEl.dispatchEvent(new Event('change', {
49728                                                    bubbles: true
49729                                                }));
49730                                            }
49731                                        }
49732
49733                                                                                this.changeOption(attrId, optionVal, false);
49734                                    }
49735                                };
49736
49737                                                                if (data && typeof data === 'object') {
49738                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
49739                                }
49740
49741                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
49742                                    if (attribute && attribute.code) {
49743                                        let optionValue = urlQueryParams.get(attribute.code);
49744                                        if (optionValue) {
49745                                            let optionId = false;
49746                                            const attributes = Object.values(this.optionConfig.attributes || {});
49747                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
49748
49749                                            let found = false;
49750                                            Object.values(targetAttr.options).map(option => {
49751                                                if (found === false && option.label === optionValue) {
49752                                                    optionId = option.id;
49753                                                    found = true;
49754                                                }
49755                                            });
49756
49757                                            const attrId = String(targetAttr.id);
49758                                            let optionVal = String(optionValue);
49759                                            if (found) {
49760                                                optionVal = String(optionId);
49761                                            }
49762
49763                                            applySelection(attribute.code, optionVal);
49764                                        }
49765                                    }
49766                                });
49767                            }, 100);
49768                        });
49769                    }
49770                }
49771            };
49772            // DWS - Configurable product preselect end
49773
49774            const result = Object.assign(
49775                configurableOptionsComponent,
49776                swatchOptionsComponent, {
49777                    productId: '44481',
49778                    productIndex: 0,
49779                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
49780                    showSwatches: false,
49781                    precalcOptions: {},
49782                    originalInit: configurableOptionsComponent.init,
49783                    init() {
49784                        try {
49785                            this.precalcOptions = {};
49786                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
49787                            this.preselectQuerystringItems();
49788                            if (Array.isArray(attrSource)) {
49789                                attrSource.forEach(attr => {
49790                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
49791                                });
49792                            } else if (attrSource && typeof attrSource === 'object') {
49793                                Object.keys(attrSource).forEach(id => {
49794                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
49795                                });
49796                            }
49797                        } catch (e) {
49798                            console.error('Pre-calc error:', e);
49799                        }
49800
49801                        if (typeof this.originalInit === 'function') {
49802                            this.originalInit();
49803                        }
49804
49805                        try {
49806                            this.initShowSwatchesIntersect();
49807                        } catch (e) {
49808                            console.error('intersect error:', e);
49809                        }
49810                    },
49811
49812                    updateGallery() {
49813                        if (!this.productIndex) return;
49814
49815                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
49816                                method: 'GET',
49817                                headers: {
49818                                    'Content-Type': 'application/json',
49819                                    'X-Requested-With': 'XMLHttpRequest'
49820                                }
49821                            })
49822                            .then(response => response.json())
49823                            .then(data => {
49824                                if (data && data.medium) {
49825                                    window.dispatchEvent(new CustomEvent("update-gallery-44481", {
49826                                        detail: data.medium
49827                                    }));
49828                                }
49829                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
49830                    },
49831
49832
49833                    initShowSwatchesIntersect() {
49834                        const observer = new IntersectionObserver(entries => {
49835                            if (entries[0].isIntersecting) {
49836                                this.showSwatches = true;
49837                                observer.disconnect();
49838                            }
49839                        }, {
49840                            rootMargin: '512px'
49841                        });
49842                        observer.observe(this.$el);
49843                    },
49844                    getOptions(attrId) {
49845                        return this.precalcOptions[attrId] || [];
49846                    },
49847                    getOptionsByAttrId() {
49848                        return this.getOptions(this.$el.dataset.attributeId);
49849                    },
49850                    _getItemId() {
49851                        if (this.item && this.item.id) return this.item.id;
49852                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
49853                    },
49854                    getSwatchOptionHtmlId() {
49855                        const itemId = this._getItemId();
49856                        return itemId ? this.$id(`attribute-option-44481-${itemId}`) : '';
49857                    },
49858                    getSwatchOptionHtmlIdGroup() {
49859                        const itemId = this._getItemId();
49860                        return itemId ? [`attribute-option-44481-${itemId}`] : [];
49861                    },
49862                    getAttributeSwatchData(attributeId) {
49863                        const data = Object.assign({}, this.swatchConfig[attributeId]);
49864                        if (data['additional_data']) {
49865                            try {
49866                                data['details'] = JSON.parse(data['additional_data']);
49867                            } catch (e) {
49868                                data['details'] = {};
49869                            }
49870                        }
49871                        return data;
49872                    },
49873                    getSwatchType(attributeId, optionId) {
49874                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
49875                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
49876                        }
49877                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
49878                            this.swatchConfig[attributeId].details.swatch_input_type :
49879                            "empty";
49880                        if (type === 'visual') {
49881                            const config = this.swatchConfig[attributeId];
49882                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
49883                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
49884                            }
49885                            // Fallback to first option type
49886                            for (const oId in config) {
49887                                if (config[oId] && typeof config[oId].type !== 'undefined') {
49888                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
49889                                }
49890                            }
49891                        }
49892                        return type;
49893                    },
49894                    mapSwatchTypeNumberToTypeCode(type) {
49895                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
49896                    },
49897                    isTextSwatch() {
49898                        const itemId = this._getItemId();
49899                        if (!this.$el || !itemId) return false;
49900                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
49901                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
49902                    },
49903
49904                    getSwatchText() {
49905                        const itemId = this._getItemId();
49906                        if (this.item) return this.item.label || '';
49907                        if (!this.$el || !itemId) return '';
49908                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
49909                        const options = attrId ? this.getOptions(attrId) : [];
49910                        const opt = options.find(o => o.id == itemId);
49911                        return opt ? opt.label : '';
49912                    },
49913                    getSwatchBackgroundStyle() {
49914                        const itemId = this._getItemId();
49915                        if (!this.$el || !itemId) return '';
49916                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
49917                        if (!attrId) return '';
49918                        const type = this.getSwatchType(attrId, itemId);
49919                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
49920                            this.swatchConfig[attrId][itemId] :
49921                            null;
49922                        if (!swatchData) return '';
49923                        if (type === "color") return 'background-color:' + swatchData.value;
49924                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
49925                        return '';
49926                    },
49927                    swatchOptionClasses() {
49928                        const itemId = this._getItemId();
49929                        if (!this.$el || !itemId) return {};
49930                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
49931                        return {
49932                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
49933                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
49934                            'w-6 h-6': !this.isTextSwatch()
49935                        }
49936                    },
49937
49938                    onFocusSwatchItem() {
49939                        const itemId = this._getItemId();
49940                        if (itemId) this.focusedLabel = itemId;
49941                    },
49942                    onChangeOption() {
49943                        const itemId = this._getItemId();
49944                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
49945                        if (attrId && itemId) this.changeOption(attrId, itemId);
49946                    },
49947                    changeOption(attributeId, value) {
49948                        if (value === '') {
49949                            return;
49950                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
49951                        } else {
49952                            this.selectedValues[attributeId] = value;
49953                        }
49954
49955                        this.findSimpleIndex();
49956                        this.findAllowedAttributeOptions();
49957                        this.updatePrices();
49958                        this.updateGallery();
49959
49960                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
49961                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
49962
49963                        const eventDetail = {
49964                            productId: this.productId,
49965                            optionId: attributeId,
49966                            value: value,
49967                            productIndex: this.productIndex || 0,
49968                            selectedValues: this.selectedValues,
49969                            candidates: candidates,
49970                            sourceElement: this.$el
49971                        };
49972
49973                        // Dispatch for Amasty
49974                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
49975                            detail: eventDetail
49976                        }));
49977
49978                        // Dispatch for Hyva listing
49979                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
49980                            detail: eventDetail
49981                        }));
49982                    },
49983
49984
49985                    clearOptionIfActive() {
49986                        const itemId = this._getItemId();
49987                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
49988                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
49989                            this.changeOption(attrId, '');
49990
49991                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
49992                            if (!input && this.$el?.querySelector) {
49993                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
49994                            }
49995                            if (!input && this.$el?.closest) {
49996                                const root = this.$el.closest('[data-product-id]') || this.$el;
49997                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
49998                            }
49999                            if (input) {
50000                                input.checked = false;
50001                            }
50002                        }
50003                    },
50004                    get optionIsEnabled() {
50005                        const itemId = this._getItemId();
50006                        if (!this.$el || !itemId) return true;
50007                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
50008                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
50009                        return !!allowedOptions.find(opt => opt.id == itemId);
50010                    },
50011                    get isSelected() {
50012                        const itemId = this._getItemId();
50013                        if (!this.$el || !itemId) return false;
50014                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
50015                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
50016                    },
50017                    get isSwatchRequired() {
50018                        if (!this.$el) return false;
50019                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
50020                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
50021                    },
50022                    focusedLabel: false,
50023                    activeTooltipItem: false,
50024                    tooltipPositionElement: false,
50025                    setActiveTooltipItem() {
50026                        const itemId = this._getItemId();
50027                        if (!this.$el || !itemId) return;
50028                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
50029                        this.activeTooltipItem = {
50030                            attribute: attrId,
50031                            item: itemId,
50032                            index: 0
50033                        };
50034                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
50035                    },
50036                    unsetActiveTooltipItem() {
50037                        this.activeTooltipItem = false;
50038                    }
50039                },
50040                confProdPreSelect()
50041            );
50042
50043            if (result.optionConfig && result.optionConfig.attributes) {
50044                const attributes = result.optionConfig.attributes;
50045                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
50046                    let source = attributes;
50047                    if (Array.isArray(attributes)) {
50048                        source = {};
50049                        attributes.forEach(attr => {
50050                            if (attr && attr.id) source[attr.id] = attr;
50051                        });
50052                    }
50053                    const values = Object.values(source);
50054                    const wrapper = Object.assign(values, source);
50055                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
50056                        value: true,
50057                        enumerable: false
50058                    });
50059                    result.optionConfig.attributes = wrapper;
50060                }
50061            }
50062
50063            return result;
50064        }
50065
50066        window.addEventListener('alpine:init', () => {
50067            Alpine.data('initConfigurableSwatchOptions_44481', initConfigurableSwatchOptions_44481);
50068        }, {
50069            once: true
50070        });
50071    </script>
50071
50072    
50073    <div x-data="initConfigurableSwatchOptions_44481" x-defer="intersect">
50074        <div class="pagebuilder-home-hidden">
50075                                            
50076                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
50077                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
50078                        <template x-if="showSwatches">
50079                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-44481-163" role="radiogroup" aria-label="Einband">
50080                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
50081                                    <div :data-option-id="item.id" style="display: contents">
50082                                        <div x-id="getSwatchOptionHtmlIdGroup">
50083    <template x-if="optionIsEnabled">
50084        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
50084self="unsetActiveTooltipItem">
50085            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-44481-163">
50086            <div>
50087                <template x-if="isTextSwatch">
50088                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
50089                </template>
50090                <template x-if="!optionIsActive(163, item.id)">
50091                    <div>
50092                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
50093                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
50094                        </svg>
50095                    </div>
50096                </template>
50097            </div>
50098        </label>
50099    </template>
50100</div>                                    </div>
50101                                </template>
50102                            </div>
50103                        </template>
50104                    </div>
50105                </div>
50106                    </div>
50107    </div>
50108            
50109                                                <div class="meta py-4 pagebuilder-home-hidden">
50110                <div x-data="initMarketingShortText_44481()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
50111                    <!-- Marketing short text -->
50112                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
50113                    </div>
50114
50115                    <!-- Short description -->
50116                                                                <div class="short-description">
50117                            Schillernd und fremd, l&auml;sst sich Radikalit&auml;t zu allen Zeiten und in allen Kulturen mit ihrem Hang zum Unbedingten beobachten. Fast immer wirkt sie anst&ouml;&szlig;ig und besch&auml;mend, wenn auch in ...                            <a href="https://meiner.de/fmv_de/radikalita-t-set-band-1-2-20119" class="underline">mehr</a>
50118                        </div>
50119                                    </div>
50120
50121                <!-- Series  -->
50122                
50123                
50124                                                    <div class="mb-1">
50125                        <span x-data="initEditionText_44481()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
50126                            <!-- Marketing short text -->
50127                            <span class="edition-text" x-html="editionText"></span>&nbsp;2025, Zusammen 848 Seiten mit 66 Abbildungen                        </span>
50128                    </div>
50129                
50130                            </div>
50131            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
50132                
50133                <div class="justify-end" x-data="initPriceBox()" @update-prices-44481.window="updatePrice($event.detail);">
50134                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="44481" data-price-box="product-id-44481"><span class="normal-price">
50135    <span x-data x-id="['product\u002Dprice\u002D44481']" class="price-container price-final_price tax weee">
50136            <span class="price-label">Ab</span>
50137                <span class="approx-price">ca. </span>
50138        <span :id="$id('product\u002Dprice\u002D44481')" data-price-amount="94" data-price-type="finalPrice" class="price-wrapper "><span class="price">94,00&nbsp;&euro;</span></span>
50139        </span>
50140</span>
50141
50142
50143</div>                </div>
50144
50145                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
50146                                            <div class="open-access-container open-access-container-44481                    flex mt-4 ml-auto sm:mt-0 hidden">
50147                            <div class="text-gray-700">
50148                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
50149                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
50150                                        Kostenlos online lesen                                    </a>
50151                                </button>
50152                            </div>
50153                        </div>
50154                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Radikalit&auml;t (Set Band 1 &amp;amp; 2)" aria-label="In den Warenkorb Radikalit&auml;t (Set Band 1 &amp;amp; 2)" data-addto="cart">
50155                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
50156  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
501560 014 0z"></path>
50157</svg>
50158                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
50159                                        In den Warenkorb                                    </span>
50160                                </button>
50161                                                                                                                    
50162<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(44481)" aria-label="Zur Wunschliste hinzuf&uuml;gen Radikalit&auml;t (Set Band 1 &amp;amp; 2)" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
50163    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
50164  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
50165</svg>
50166</button>
50167                                    </div>
50168            </div>
50169        </div>
50170        
50170<script>
50171            function initMarketingShortText_44481() {
50172                var marketingShortTextConfig = {};
50173                if (typeof window.initConfigurableSwatchOptions_44481 === "function") {
50174                    var fullConfig = window.initConfigurableSwatchOptions_44481().optionConfig
50175                    var marketingShortTextConfig = fullConfig.marketing_short_text;
50176                }
50177                return {
50178                    marketingShortText: '',
50179                    config: marketingShortTextConfig,
50180                    productId: '44481',
50181                    getMarketingShortText(detail) {
50182                        this.marketingShortText = detail.productIndex ?
50183                            this.config[detail.productIndex] :
50184                            null;
50185                    },
50186                    eventListeners: {
50187                        ['@listing-configurable-selection-changed.window'](event) {
50188                            if (this.productId == event.detail.productId) {
50189                                this.getMarketingShortText(event.detail);
50190                            }
50191
50192                        }
50193                    }
50194                }
50195            }
50196
50197            function initEditionText_44481() {
50198                var editionTextConfig = {};
50199                if (typeof window.initConfigurableSwatchOptions_44481 === "function") {
50200                    var fullConfig = window.initConfigurableSwatchOptions_44481().optionConfig
50201                    var editionTextConfig = fullConfig.edition;
50202                }
50203                return {
50204                    editionText: '',
50205                    config: editionTextConfig,
50206                    productId: '44481',
50207                    getEditionText(detail) {
50208                        this.editionText = detail.productIndex ?
50209                            this.config[detail.productIndex] :
50210                            null;
50211                    },
50212                    eventListeners: {
50213                        ['@listing-configurable-selection-changed.window'](event) {
50214                            if (this.productId == event.detail.productId) {
50215                                this.getEditionText(event.detail);
50216                            }
50217
50218                        }
50219                    }
50220                }
50221            }
50222        </script>
50222
50223                    </form>
50224                            
50225    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/43600/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk19257">
50226        <input name="form_key" type="hidden" value="R6NBsKL42phFmgWc">        <input type="hidden" name="product" value="43600">
50227                                    <a href="https://meiner.de/fmv_de/philosophische-werke-in-sechs-ba-nden-19257" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
50228            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-43600.window="$el.src = $event.detail" alt="Philosophische Werke in sechs B&auml;nden" title="Philosophische Werke in sechs B&auml;nden" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787341528_3.jpg" :style="{
50229                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
50230                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
50231            }">
50232                    </a>
50233        <div class="product-info flex flex-col flex-grow ">
50234                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
50235                                    <div class="mb-2 text-sm text-gray-500 font-medium">
50236                                                                                    <a href="https://meiner.de/fmv_de/person/Friedrich-Nietzsche-3289/" class="mb-2">
50237                                    Friedrich Nietzsche                                                                    </a>
50238                                                                                                                                    </div>
50239                                <a class="product-item-link" href="https://meiner.de/fmv_de/philosophische-werke-in-sechs-ba-nden-19257">
50240                    Philosophische Werke in sechs B&auml;nden                </a>
50241                            </div>
50242
50243            <div x-data="initEditionText_43600()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
50244                <!-- Marketing short text -->
50245                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
50246                </div>
50247            </div>
50248
50249                            <div class="py-1 grid  mb-4 ">
50250                    
50251                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":43600,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":43600,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2Rl","childProducts":{"7918":"1","6074":"1"},"childProductsAlertStatus":{"7918":"0","6074":"0"},"indexMapping":{"163:15":7918,"163:8":6074},"availabilityMessages":{"7918":"Lieferbar innerhalb von 3-5 Tagen","6074":"Download sofort  verf\u00fcgbar"},"openAccess":{"43600":{"status":0},"7918":{"status":0},"6074":{"status":0}}},"availabilityMessages":{"7918":"Lieferbar innerhalb von 3-5 Tagen","6074":"Download sofort  verf\u00fcgbar"},"openAccess":{"43600":{"status":0},"7918":{"status":0},"6074":{"status":0}}}'>
50252        <template x-if="containerVisible">
50253                            <!-- Popup Trigger -->
50254                <div>
50255                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
50256                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
50257                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
50258  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
50259<title>bell</title></svg>
50260</span>
50261                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
50262
50263                    <!-- Popup Modal -->
50264                    <template x-if="showModal">
50265                        <template x-teleport=".page-wrapper">
50266                            <div x-cloak class="fixed inset-0 flex items-center justify-center
50267                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
50268                                <div class="relative bg-white rounded-lg shadow-xl
50269                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
50270                                    <div class="p-6">
50271                                        <!-- Subscription Form for Popup -->
50272                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
50273                                            <input name="form_key" type="hidden" value="R6NBsKL42phFmgWc">
50274                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
50275                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
50276
50277                                            <div class="flex flex-col gap-3">
50278                                                <div class="flex-grow grow">
50279                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
50280                                                        shadow-xs focus:outline-none focus:outline-hidden
50281                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
50282                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
50283                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
50284                                                </div>
50285                                                <input type="hidden" name="product_id" :value="currentProductId">
50286                                                <input type="hidden" name="type" value="email">
50287
50288                                                
50289                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvZm12X2Rl">
50290
50291                                                <div class="amxnotif_guest_action">
50292                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
50293                                                        rounded-md focus:outline-none
50294                                                        focus:outline-hidden focus:ring-2
50295                                                        focus:ring-offset-2 disabled:opacity-50
50296                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
50297                                                        Benachrichtigen                                                    </button>
50298                                                </div>
50299                                            </div>
50300
50301                                                                                            <div class="flex items-start pt-2">
50302                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
50303                                                        text-blue-600 border-gray-300 rounded-sm">
50304                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
50305                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
50306                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
50307                                                </div>
50308                                                                                    </form>
50309                                    </div>
50310
50311                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
50312                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
50313                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
50314  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
50315<title>x</title></svg>
50316                                    </button>
50317                                </div>
50318                            </div>
50319                        </template>
50320                    </template>
50321                </div>
50322                    </template>
50323    </div>
50324
50325<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_43600" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":43600,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2Rl","childProducts":{"7918":"1","6074":"1"},"childProductsAlertStatus":{"7918":"0","6074":"0"},"indexMapping":"{\u0022163:15\u0022:7918,\u0022163:8\u0022:6074}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":43600,"availabilityMessages":{"7918":"Lieferbar innerhalb von 3-5 Tagen","6074":"Download sofort  verf\u00fcgbar"},"openAccess":{"43600":{"status":0},"7918":{"status":0},"6074":{"status":0}}}'>
50326    
50327    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
50328        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
50329        <span x-html="optionsLabelText"></span>
50330    </p>
50331</div>                </div>
50332            
50333                                
50333<script>
50334        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
50335            try {
50336                const attributes = (config && config.attributes) ? config.attributes : null;
50337                if (!attributes) return [];
50338                let attr = null;
50339                if (Array.isArray(attributes)) {
50340                    for (let i = 0; i < attributes.length; i++) {
50341                        const a = attributes[i];
50342                        if (a && a.id == attrId) {
50343                            attr = a;
50344                            break;
50345                        }
50346                    }
50347                } else {
50348                    attr = attributes[attrId];
50349                }
50350                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
50351            } catch (e) {
50352                return [];
50353            }
50354        };
50355
50356        function initConfigurableSwatchOptions_43600() {
50357            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["7918"]},{"id":"8","label":"PDF","products":["6074"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"7918":{"baseOldPrice":{"amount":84.018690588785},"oldPrice":{"amount":89.9},"basePrice":{"amount":84.018690588785},"finalPrice":{"amount":89.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false},"6074":{"baseOldPrice":{"amount":33.635513018692},"oldPrice":{"amount":35.99},"basePrice":{"amount":33.635513018692},"finalPrice":{"amount":35.99},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":33.635513018692},"oldPrice":{"amount":35.99},"basePrice":{"amount":30.243696478992},"finalPrice":{"amount":35.99},"isApproxPrice":null},"productId":"43600","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"7918":{"163":"15"},"6074":{"163":"8"}},"salable":{"163":{"15":["7918"],"8":["6074"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"7918":"004152","6074":"002434"},"output":{"6074":"PDF","7918":"Kartoniert"},"original_name":{"6074":"","7918":""},"openaccess_license_link":{"6074":"","7918":""},"openaccess_license_name":{"6074":"","7918":""},"openaccess_external_link":{"6074":"","7918":""},"gpsr_safety_info":{"6074":"","7918":""},"description":{"6074":"1885 fasste Friedrich Nietzsche den Entschluss, eine Neue Ausgabe seiner Schriften erscheinen zu lassen, die \u00bbdas Eigene und Unvergleichliche in diesen Werken\u00ab herausstellen sollte. Diesem Konzept folgt auch die von Claus-Artur Scheier neu herausgegebene Ausgabe der philosophischen Werke in sechs B\u00e4nden.<br>Diese erste Ausgabe der philosophischen Werke Friedrich Nietzsches in der \u00bbPhilosophischen Bibliothek\u00ab folgt dem 1885 von Nietzsche selbst gefassten und begr\u00fcndeten Konzept einer Neuen Ausgabe seiner im eigentlichen Sinne \u00bbphilosophischen\u00ab Schriften und bietet den Text nach den Originalausgaben von 1886\/1887, erg\u00e4nzt um die 1889 erschienene G\u00f6tzen-D\u00e4mmerung.<br>Eine \u00bbvollst\u00e4ndige Ausgabe letzter Hand\u00ab nach dem Vorbild Goethes hat Friedrich Nietzsche nicht vorlegen k\u00f6nnen, denn am Ende war er nicht mehr Herr seiner Sinne. Doch gibt das wirklich Grund zur Klage? Oder anders gefragt: H\u00e4tte Nietzsche eine solche Ausgabe, die einfach alles versammelt, was er geschrieben hat, \u00fcberhaupt gewollt und gutgehei\u00dfen?<br>Die Frage muss offen bleiben. Doch es gibt gewiss Gr\u00fcnde, Nietzsche nicht mit jenen gleichzustellen, denen es auf diese Weise nur darum zu tun war, ihren Nachruhm zu sichern und nach eigenen Vorstellungen zu steuern. Denn es gibt sie ja, die von Nietzsche selbst gewollte und kritisch kommentierte Ausgabe ganz eigener Art: n\u00e4mlich die durch Jenseits von Gut und B\u00f6se und die Genealogie der Moral eingerahmte Neue Ausgabe von 1886\/87, die die vor dem Zarathustra ver\u00f6ffentlichten, mit neuen Vorreden versehenen philosophischen Schriften enth\u00e4lt, von denen der Autor selber sagte:<br><br>\u00bb\u203aSie werden bemerken, dass Menschliches, Allzumenschliches, die Morgenr\u00f6te, die fr\u00f6hliche Wissenschaft einer Vorrede ermangeln: es hatte gute Gr\u00fcnde, dass ich damals, als diese Werke entstanden, mir ein Stillschweigen auferlegte \u2013 ich stand n
50357och zu nahe, noch zu sehr drin\u2039 und wu\u00dfte kaum, was mit mir geschehen war. Jetzt, wo ich selber am besten und genauesten sagen kann, was das Eigene und Unvergleichliche in diesen Werken ist und inwiefern sie eine f\u00fcr Deutschland neue Literatur inaugurieren (das Vorspiel einer moralischen Selbst-Erziehung und Kultur, die bisher den Deutschen gefehlt hat), w\u00fcrde ich mich zu solchen zur\u00fcckblickenden und nachtr\u00e4glichen Vorreden gerne entschlie\u00dfen. Meine Schriften stellen eine fortlaufende Entwicklung dar, welche nicht nur mein pers\u00f6nliches Erlebnis und Schicksal sein wird: \u2013 ich bin nur der Erste, eine heraufkommende Generation wird das, was ich erlebt habe, von sich aus verstehn und eine feine Zunge f\u00fcr meine B\u00fccher haben. Die Vorreden k\u00f6nnten das Notwendige im Gange einer solchen Entwicklung deutlich machen.\u00ab (Brief vom 7. August 1886 an seinen Verleger Th. Fritsch)<br><br>Mit der 1990 unter dem Titel \u203aFriedrich Nietzsche: Ecce auctor\u2039 vorgelegten Edition der Vorreden von 1886 hatte Claus-Artur Scheier zum ersten Mal darauf aufmerksam gemacht, dass Nietzsche die f\u00fcr die Neue Ausgabe seiner im eigentlichen Sinne \u00bbphilosophischen\u00ab Schriften verfassten Vorreden als in sich geschlossenen, genealogisch angelegten Versuch einer selbstkritischen Neubewertung und Einordnung seines Werkes ansah: \u00bb\u203aVon der Vorrede zur Geburt der Trag\u00f6die bis zur Vorrede des letztgenannten Buchs [der Genealogie der Moral\u2039\u203a] \u2013 das gibt eine Art Entwicklungsgeschichte\u2039\u00ab (zu der, des Erprobens der Tonlage wegen, noch die Vorrede zu \u00bbJenseits von Gut und B\u00f6se\u00ab gerechnet werden kann). Jetzt sah sich Nietzsche im Zenit seiner Schaffenskraft, und die Neue Ausgabe sollte den Mitte 1885 gefassten Plan vorantreiben, \u00bbeine gro\u00dfe Schul-T\u00e4tigkeit als Philosoph auszu\u00fcben [\u2026]. Die B\u00fccher heraus aus diesem Winkel!!! Es sind meine Angelhaken; wenn sie mir keine Menschen fangen, so haben sie keinen Sinn!\u00ab (Brief an die Schwester, kurz vor dem 15. August 1885)<br><br>Band 1: Jenseits von Gut und B\u00f6se (1886); Die Geburt der Trag\u00f6die (Neue Ausgabe 1886)<br>Band 2: Menschliches, Allzumenschliches 1 (Neue Ausgabe 1886)<br>Band 3: Menschliches, Allzumenschliches 2 (Neue Ausgabe 1886)<br>Band 4: Morgenr\u00f6the (Neue Ausgabe 1887)<br>Band 5: Die fr\u00f6hliche Wissenschaft \/ Wir Furchtlosen (Neue Ausgabe 1887)<br>Band 6: Zur Genealogie der Moral (1887); G\u00f6tzen-D\u00e4mmerung (1889)<br><br>","7918":"1885 fasste Friedrich Nietzsche den Entschluss, eine Neue Ausgabe seiner Schriften erscheinen zu lassen, die \u00bbdas Eigene und Unvergleichliche in diesen Werken\u00ab herausstellen sollte. Diesem Konzept folgt auch die von Claus-Artur Scheier neu herausgegebene Ausgabe der philosophischen Werke in sechs B\u00e4nden.<br>Diese erste Ausgabe der philosophischen Werke Friedrich Nietzsches in der \u00bbPhilosophischen Bibliothek\u00ab folgt dem 1885 von Nietzsche selbst gefassten und begr\u00fcndeten Konzept einer Neuen Ausgabe seiner im eigentlichen Sinne \u00bbphilosophischen\u00ab Schriften und bietet den Text nach den Originalausgaben von 1886\/1887, erg\u00e4nzt um die 1889 erschienene G\u00f6tzen-D\u00e4mmerung.<br>Eine \u00bbvollst\u00e4ndige Ausgabe letzter Hand\u00ab nach dem Vorbild Goethes hat Friedrich Nietzsche nicht vorlegen k\u00f6nnen, denn am Ende war er nicht mehr Herr seiner Sinne. Doch gibt das wirklich Grund zur Klage? Oder anders gefragt: H\u00e4tte Nietzsche eine solche Ausgabe, die einfach alles versammelt, was er geschrieben hat, \u00fcberhaupt gewollt und gutgehei\u00dfen?<br>Die Frage muss offen bleiben. Doch es gibt gewiss Gr\u00fcnde, Nietzsche nicht mit jenen gleichzustellen, denen es auf diese Weise nur darum zu tun war, ihren Nachruhm zu sichern und nach eigenen Vorstellungen zu steuern. Denn es gibt sie ja, die von Nietzsche selbst gewollte und kritisch kommentierte Ausgabe ganz eigener Art: n\u00e4mlich die durch Jenseits von Gut und B\u00f6se und die Genealogie der Moral eingerahmte Neue Ausgabe von 1886\/87, die die vor dem Zarathustra ver\u00f6ffentlichten, mit neuen Vorreden versehenen philosophischen Schriften enth\u00e4lt, von denen der Autor selber sagte:<br><br>\u00bb\u203aSie werden bemerken, dass Menschliches, Allzumenschliches, die Morgenr\u00f6te, die fr\u00f6hliche Wissenschaft einer Vorrede ermangeln: es hatte gute Gr\u00fcnde, dass ich damals, als diese Werke entstanden, mir ein Stillschweigen auferlegte \u2013 ich stand n
50357och zu nahe, noch zu sehr drin\u2039 und wu\u00dfte kaum, was mit mir geschehen war. Jetzt, wo ich selber am besten und genauesten sagen kann, was das Eigene und Unvergleichliche in diesen Werken ist und inwiefern sie eine f\u00fcr Deutschland neue Literatur inaugurieren (das Vorspiel einer moralischen Selbst-Erziehung und Kultur, die bisher den Deutschen gefehlt hat), w\u00fcrde ich mich zu solchen zur\u00fcckblickenden und nachtr\u00e4glichen Vorreden gerne entschlie\u00dfen. Meine Schriften stellen eine fortlaufende Entwicklung dar, welche nicht nur mein pers\u00f6nliches Erlebnis und Schicksal sein wird: \u2013 ich bin nur der Erste, eine heraufkommende Generation wird das, was ich erlebt habe, von sich aus verstehn und eine feine Zunge f\u00fcr meine B\u00fccher haben. Die Vorreden k\u00f6nnten das Notwendige im Gange einer solchen Entwicklung deutlich machen.\u00ab (Brief vom 7. August 1886 an seinen Verleger Th. Fritsch)<br><br>Mit der 1990 unter dem Titel \u203aFriedrich Nietzsche: Ecce auctor\u2039 vorgelegten Edition der Vorreden von 1886 hatte Claus-Artur Scheier zum ersten Mal darauf aufmerksam gemacht, dass Nietzsche die f\u00fcr die Neue Ausgabe seiner im eigentlichen Sinne \u00bbphilosophischen\u00ab Schriften verfassten Vorreden als in sich geschlossenen, genealogisch angelegten Versuch einer selbstkritischen Neubewertung und Einordnung seines Werkes ansah: \u00bb\u203aVon der Vorrede zur Geburt der Trag\u00f6die bis zur Vorrede des letztgenannten Buchs [der Genealogie der Moral\u2039\u203a] \u2013 das gibt eine Art Entwicklungsgeschichte\u2039\u00ab (zu der, des Erprobens der Tonlage wegen, noch die Vorrede zu \u00bbJenseits von Gut und B\u00f6se\u00ab gerechnet werden kann). Jetzt sah sich Nietzsche im Zenit seiner Schaffenskraft, und die Neue Ausgabe sollte den Mitte 1885 gefassten Plan vorantreiben, \u00bbeine gro\u00dfe Schul-T\u00e4tigkeit als Philosoph auszu\u00fcben [\u2026]. Die B\u00fccher heraus aus diesem Winkel!!! Es sind meine Angelhaken; wenn sie mir keine Menschen fangen, so haben sie keinen Sinn!\u00ab (Brief an die Schwester, kurz vor dem 15. August 1885)<br><br>Band 1: Jenseits von Gut und B\u00f6se (1886); Die Geburt der Trag\u00f6die (Neue Ausgabe 1886)<br>Band 2: Menschliches, Allzumenschliches 1 (Neue Ausgabe 1886)<br>Band 3: Menschliches, Allzumenschliches 2 (Neue Ausgabe 1886)<br>Band 4: Morgenr\u00f6the (Neue Ausgabe 1887)<br>Band 5: Die fr\u00f6hliche Wissenschaft \/ Wir Furchtlosen (Neue Ausgabe 1887)<br>Band 6: Zur Genealogie der Moral (1887); G\u00f6tzen-D\u00e4mmerung (1889)<br><br>"},"doi":{"6074":"10.28937\/978-3-7873-2434-7","7918":""},"isbn":{"6074":"978-3-7873-2434-7","7918":"978-3-7873-4152-8"},"marketing_short_text":{"6074":"","7918":""},"recension_text":{"6074":"<div class=\"reviews\">\r\n<div class=\"review\">Scheier hat sein kluges Unternehmen also ganz bewusst und im H\u00f6chsten Sinne des Wortes supplement\u00e4r zur KSA angelegt. Wer die sch\u00f6nen und handlichen B\u00e4nde seiner Ausgabe konsultiert, bekommt einen Nietzsche, der nicht nur ein neues Denken predigt, sondern dieses Denken auch in einer sehr distinkten Form praktiziert: in der des Aphorismus. Von daher vermittelt die taktile und typographische Klassizit\u00e4t der sechs nicht sehr umfangreichen B\u00e4nde der Meiner-Ausgabe genau jenen Eindruck, den Nietzsche nach seiner Wendung von Wagner zu Voltaire und von der Musik zur \u203aSchrift\u2039 auch im stilistischen Gestus vermitteln wollte. [...] Claus-Artur Scheiers intelligent gemachte und mit anregenden Nachworten versehene Ausgabe l\u00e4dt zur Neu- wie auch zur Wiederentdeckung scheinbar bekannter Texte ein und verweist mit Nachdruck auf Nietzsche als einen Philosophen des Stils, f\u00fcr den die Form stets auch Inhalt, f\u00fcr den die Oberfl\u00e4che stets auch Tiefe bedeutete.<\/div>\r\n<div class=\"source\">Germanisch-Romanische Monatsschrift 64\/3\/2014<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Wer Nietzsche lesen und nicht nur gelegentlich zitieren will, und zwar ihn so lesen will, wie Nietzsche sich selbst Ende der 1880er Jahre als Lehrer der Philosophie der Zukunft verstand, der ist mit dieser sch\u00f6nen und handlichen Ausgabe gut bedient.<\/div>\r\n<div class=\"source\">Theologische Literaturzeitung, 140 (2015) 5, Ingolf Ulrich Dalferth.<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Gegen\u00fcber dem pedantischen Seufzer des ersten Blicks, hier fehle ja der Zarathustra, wird man doch sagen m\u00fcssen, dass auch die Ausgabe im Ganzen einen so erfrischenden Blick auf Nietzsche gew\u00e4hrt, der gerade diesen Denker in seiner und als seine Zeit in einem entscheidenden Moment der Geschichte portr\u00e4tiert. Selten ist der Gesichtspunkt des \u203aWie\u2039 einer Lekt\u00fcre sch\u00e4rfer als hier.<\/div>\r\n<div class=\"source\">Coincidentia 2015-2, Harald Schwaetzer<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Scheiers Ausgabe verdient weite Verbreitung und mag dazu dienen, Urteile auf den Pr\u00fcfstand zu stellen, die Nietzsches Philosophie h\u00f6c
50357hst kritisch gegen\u00fcber stehen, wie etwa bei Vittorio H\u00f6sle. Die Aufgabe, Nietzsche zu verstehen, verdient jedenfalls einige Anstrengungen, zumal Nietzsche selbst gar nicht von jedem verstanden werden wollte. Dabei kann die handliche Scheiersche Ausgabe in sechs B\u00e4nden im Meiner Verlag gute Dienste tun. Sie kann daher f\u00fcr alle Bibliotheken zur Anschaffung empfohlen werden. Wer noch gar nichts von Nietzsche gelesen hat, kann mit dieser Auswahlausgabe einen guten Anfang machen.<\/div>\r\n<div class=\"source\">Informationsmittel f\u00fcr Bibliotheken<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Die hier von Claus-Artur Scheier herausgegebene Neue Ausgabe gibt einen authentischen und von allen nachtr\u00e4glichen Verschlimmbesserungen gereinigten Blick auch den \u203aechten Nietzsche\u2039, der zu jener Zeit noch im Vollbesitz seiner geistigen Kr\u00e4fte war, bevor er Anfang 1889 einen Nervenzusammenbruch erlitt, von dem er sich niemals wieder vollst\u00e4ndig erholen sollte. Mit diesem sechsb\u00e4ndigen Schuber der Philosophischen Bibliothek hat man eigentlich alles, was man f\u00fcr ein pers\u00f6nliches Nietzsche-Studium braucht. [...] Nietzsches Werk spricht f\u00fcr sich selbst und l\u00e4sst dem Leser dank seines essayistischen Stils auch viel Freiraum f\u00fcr eigene Assoziationen und Entdeckungsreisen. Jedoch auch der ambitionierte Philosophie-Student wird sich \u00fcber diese sch\u00f6ne und preisg\u00fcnstige Sammlung der Originaltexte Nietzsches freuen.<\/div>\r\n<div class=\"source\">kulturbuchtipps.de<\/div>\r\n<\/div>","7918":"<div class=\"reviews\">\r\n<div class=\"review\">Scheier hat sein kluges Unternehmen also ganz bewusst und im H\u00f6chsten Sinne des Wortes supplement\u00e4r zur KSA angelegt. Wer die sch\u00f6nen und handlichen B\u00e4nde seiner Ausgabe konsultiert, bekommt einen Nietzsche, der nicht nur ein neues Denken predigt, sondern dieses Denken auch in einer sehr distinkten Form praktiziert: in der des Aphorismus. Von daher vermittelt die taktile und typographische Klassizit\u00e4t der sechs nicht sehr umfangreichen B\u00e4nde der Meiner-Ausgabe genau jenen Eindruck, den Nietzsche nach seiner Wendung von Wagner zu Voltaire und von der Musik zur \u203aSchrift\u2039 auch im stilistischen Gestus vermitteln wollte. [...] Claus-Artur Scheiers intelligent gemachte und mit anregenden Nachworten versehene Ausgabe l\u00e4dt zur Neu- wie auch zur Wiederentdeckung scheinbar bekannter Texte ein und verweist mit Nachdruck auf Nietzsche als einen Philosophen des Stils, f\u00fcr den die Form stets auch Inhalt, f\u00fcr den die Oberfl\u00e4che stets auch Tiefe bedeutete.<\/div>\r\n<div class=\"source\">Germanisch-Romanische Monatsschrift 64\/3\/2014<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Wer Nietzsche lesen und nicht nur gelegentlich zitieren will, und zwar ihn so lesen will, wie Nietzsche sich selbst Ende der 1880er Jahre als Lehrer der Philosophie der Zukunft verstand, der ist mit dieser sch\u00f6nen und handlichen Ausgabe gut bedient.<\/div>\r\n<div class=\"source\">Theologische Literaturzeitung, 140 (2015) 5, Ingolf Ulrich Dalferth.<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Gegen\u00fcber dem pedantischen Seufzer des ersten Blicks, hier fehle ja der Zarathustra, wird man doch sagen m\u00fcssen, dass auch die Ausgabe im Ganzen einen so erfrischenden Blick auf Nietzsche gew\u00e4hrt, der gerade diesen Denker in seiner und als seine Zeit in einem entscheidenden Moment der Geschichte portr\u00e4tiert. Selten ist der Gesichtspunkt des \u203aWie\u2039 einer Lekt\u00fcre sch\u00e4rfer als hier.<\/div>\r\n<div class=\"source\">Coincidentia 2015-2, Harald Schwaetzer<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Scheiers Ausgabe verdient weite Verbreitung und mag dazu dienen, Urteile auf den Pr\u00fcfstand zu stellen, die Nietzsches Philosophie h\u00f6chst kritisch gegen\u00fcber stehen, wie etwa bei Vittorio H\u00f6sle. Die Aufgabe, Nietzsche zu verstehen, verdient jedenfalls einige Anstrengungen, zumal Nietzsche selbst gar nicht von jedem verstanden werden wollte. Dabei kann die handliche Scheiersche Ausgabe in sechs B\u00e4nden im Me
50357iner Verlag gute Dienste tun. Sie kann daher f\u00fcr alle Bibliotheken zur Anschaffung empfohlen werden. Wer noch gar nichts von Nietzsche gelesen hat, kann mit dieser Auswahlausgabe einen guten Anfang machen.<\/div>\r\n<div class=\"source\">Informationsmittel f\u00fcr Bibliotheken<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Die hier von Claus-Artur Scheier herausgegebene Neue Ausgabe gibt einen authentischen und von allen nachtr\u00e4glichen Verschlimmbesserungen gereinigten Blick auch den \u203aechten Nietzsche\u2039, der zu jener Zeit noch im Vollbesitz seiner geistigen Kr\u00e4fte war, bevor er Anfang 1889 einen Nervenzusammenbruch erlitt, von dem er sich niemals wieder vollst\u00e4ndig erholen sollte. Mit diesem sechsb\u00e4ndigen Schuber der Philosophischen Bibliothek hat man eigentlich alles, was man f\u00fcr ein pers\u00f6nliches Nietzsche-Studium braucht. [...] Nietzsches Werk spricht f\u00fcr sich selbst und l\u00e4sst dem Leser dank seines essayistischen Stils auch viel Freiraum f\u00fcr eigene Assoziationen und Entdeckungsreisen. Jedoch auch der ambitionierte Philosophie-Student wird sich \u00fcber diese sch\u00f6ne und preisg\u00fcnstige Sammlung der Originaltexte Nietzsches freuen.<\/div>\r\n<div class=\"source\">kulturbuchtipps.de<\/div>\r\n<\/div>"},"language":{"6074":"","7918":""},"cover":{"6074":"","7918":"Kartoniert"},"pages":{"6074":"6 B\u00e4nde im Schuber, zus XL, 2 075 Seiten","7918":"6 B\u00e4nde, zus XL, 2 075 Seiten"},"edition":{"6074":"Unver\u00e4ndertes eBook der 1. Auflage von 2013","7918":""},"pod":{"6074":"Nein","7918":"Nein"},"copyright_year":{"6074":"","7918":""},"vlb_tix_link":{"6074":"","7918":"https:\/\/neu.vlbtix.de\/products\/9783787341528?type=gtin"},"defaultValues":{"163":"15"}};
50358            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"8":{"type":"0","value":"PDF","label":"PDF"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
50359
50360            if (typeof window.amxnotif_wrap_attributes === 'function') {
50361                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
50362                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
50363            }
50364
50365            const configurableOptionsComponent = initConfigurableOptions(
50366                '43600',
50367                config
50368            );
50369            const swatchOptionsComponent = initSwatchOptions(
50370                swatchConfig
50371            );
50372
50373            // DWS - Configurable product preselect start
50374            const confProdPreSelect = () => {
50375                return {
50376                    preselectQuerystringItems() {
50377                        var data = {"id":"7918","output":"15"};
50378                        const urlQueryParams = new URLSearchParams(window.location.search);
50379
50380                                                this.$nextTick(() => {
50381                            setTimeout(() => {
50382                                const rootEl = this.$root || this.$el;
50383                                if (!rootEl) return;
50384
50385                                const applySelection = (attrCode, attrValue) => {
50386                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
50387
50388                                    const attributes = Object.values(this.optionConfig.attributes || {});
50389                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
50390
50391                                    if (targetAttr) {
50392                                        const attrId = String(targetAttr.id);
50393                                        const optionVal = String(attrValue);
50394
50395                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
50396
50397                                        if (inputEl) {
50398                                                                                        inputEl.click();
50399                                            inputEl.dispatchEvent(new Event('change', {
50400                                                bubbles: true
50401                                            }));
50402                                        } else {
50403                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
50404                                            if (selectEl) {
50405                                                selectEl.value = optionVal;
50406                                                selectEl.dispatchEvent(new Event('change', {
50407                                                    bubbles: true
50408                                                }));
50409                                            }
50410                                        }
50411
50412                                                                                this.changeOption(attrId, optionVal, false);
50413                                    }
50414                                };
50415
50416                                                                if (data && typeof data === 'object') {
50417                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
50418                                }
50419
50420                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
50421                                    if (attribute && attribute.code) {
50422                                        let optionValue = urlQueryParams.get(attribute.code);
50423                                        if (optionValue) {
50424                                            let optionId = false;
50425                                            const attributes = Object.values(this.optionConfig.attributes || {});
50426                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
50427
50428                                            let found = false;
50429                                            Object.values(targetAttr.options).map(option => {
50430                                                if (found === false && option.label === optionValue) {
50431                                                    optionId = option.id;
50432                                                    found = true;
50433                                                }
50434                                            });
50435
50436                                            const attrId = String(targetAttr.id);
50437                                            let optionVal = String(optionValue);
50438                                            if (found) {
50439                                                optionVal = String(optionId);
50440                                            }
50441
50442                                            applySelection(attribute.code, optionVal);
50443                                        }
50444                                    }
50445                                });
50446                            }, 100);
50447                        });
50448                    }
50449                }
50450            };
50451            // DWS - Configurable product preselect end
50452
50453            const result = Object.assign(
50454                configurableOptionsComponent,
50455                swatchOptionsComponent, {
50456                    productId: '43600',
50457                    productIndex: 0,
50458                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
50459                    showSwatches: false,
50460                    precalcOptions: {},
50461                    originalInit: configurableOptionsComponent.init,
50462                    init() {
50463                        try {
50464                            this.precalcOptions = {};
50465                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
50466                            this.preselectQuerystringItems();
50467                            if (Array.isArray(attrSource)) {
50468                                attrSource.forEach(attr => {
50469                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
50470                                });
50471                            } else if (attrSource && typeof attrSource === 'object') {
50472                                Object.keys(attrSource).forEach(id => {
50473                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
50474                                });
50475                            }
50476                        } catch (e) {
50477                            console.error('Pre-calc error:', e);
50478                        }
50479
50480                        if (typeof this.originalInit === 'function') {
50481                            this.originalInit();
50482                        }
50483
50484                        try {
50485                            this.initShowSwatchesIntersect();
50486                        } catch (e) {
50487                            console.error('intersect error:', e);
50488                        }
50489                    },
50490
50491                    updateGallery() {
50492                        if (!this.productIndex) return;
50493
50494                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
50495                                method: 'GET',
50496                                headers: {
50497                                    'Content-Type': 'application/json',
50498                                    'X-Requested-With': 'XMLHttpRequest'
50499                                }
50500                            })
50501                            .then(response => response.json())
50502                            .then(data => {
50503                                if (data && data.medium) {
50504                                    window.dispatchEvent(new CustomEvent("update-gallery-43600", {
50505                                        detail: data.medium
50506                                    }));
50507                                }
50508                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
50509                    },
50510
50511
50512                    initShowSwatchesIntersect() {
50513                        const observer = new IntersectionObserver(entries => {
50514                            if (entries[0].isIntersecting) {
50515                                this.showSwatches = true;
50516                                observer.disconnect();
50517                            }
50518                        }, {
50519                            rootMargin: '512px'
50520                        });
50521                        observer.observe(this.$el);
50522                    },
50523                    getOptions(attrId) {
50524                        return this.precalcOptions[attrId] || [];
50525                    },
50526                    getOptionsByAttrId() {
50527                        return this.getOptions(this.$el.dataset.attributeId);
50528                    },
50529                    _getItemId() {
50530                        if (this.item && this.item.id) return this.item.id;
50531                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
50532                    },
50533                    getSwatchOptionHtmlId() {
50534                        const itemId = this._getItemId();
50535                        return itemId ? this.$id(`attribute-option-43600-${itemId}`) : '';
50536                    },
50537                    getSwatchOptionHtmlIdGroup() {
50538                        const itemId = this._getItemId();
50539                        return itemId ? [`attribute-option-43600-${itemId}`] : [];
50540                    },
50541                    getAttributeSwatchData(attributeId) {
50542                        const data = Object.assign({}, this.swatchConfig[attributeId]);
50543                        if (data['additional_data']) {
50544                            try {
50545                                data['details'] = JSON.parse(data['additional_data']);
50546                            } catch (e) {
50547                                data['details'] = {};
50548                            }
50549                        }
50550                        return data;
50551                    },
50552                    getSwatchType(attributeId, optionId) {
50553                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
50554                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
50555                        }
50556                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
50557                            this.swatchConfig[attributeId].details.swatch_input_type :
50558                            "empty";
50559                        if (type === 'visual') {
50560                            const config = this.swatchConfig[attributeId];
50561                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
50562                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
50563                            }
50564                            // Fallback to first option type
50565                            for (const oId in config) {
50566                                if (config[oId] && typeof config[oId].type !== 'undefined') {
50567                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
50568                                }
50569                            }
50570                        }
50571                        return type;
50572                    },
50573                    mapSwatchTypeNumberToTypeCode(type) {
50574                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
50575                    },
50576                    isTextSwatch() {
50577                        const itemId = this._getItemId();
50578                        if (!this.$el || !itemId) return false;
50579                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
50580                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
50581                    },
50582
50583                    getSwatchText() {
50584                        const itemId = this._getItemId();
50585                        if (this.item) return this.item.label || '';
50586                        if (!this.$el || !itemId) return '';
50587                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
50588                        const options = attrId ? this.getOptions(attrId) : [];
50589                        const opt = options.find(o => o.id == itemId);
50590                        return opt ? opt.label : '';
50591                    },
50592                    getSwatchBackgroundStyle() {
50593                        const itemId = this._getItemId();
50594                        if (!this.$el || !itemId) return '';
50595                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
50596                        if (!attrId) return '';
50597                        const type = this.getSwatchType(attrId, itemId);
50598                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
50599                            this.swatchConfig[attrId][itemId] :
50600                            null;
50601                        if (!swatchData) return '';
50602                        if (type === "color") return 'background-color:' + swatchData.value;
50603                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
50604                        return '';
50605                    },
50606                    swatchOptionClasses() {
50607                        const itemId = this._getItemId();
50608                        if (!this.$el || !itemId) return {};
50609                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
50610                        return {
50611                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
50612                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
50613                            'w-6 h-6': !this.isTextSwatch()
50614                        }
50615                    },
50616
50617                    onFocusSwatchItem() {
50618                        const itemId = this._getItemId();
50619                        if (itemId) this.focusedLabel = itemId;
50620                    },
50621                    onChangeOption() {
50622                        const itemId = this._getItemId();
50623                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
50624                        if (attrId && itemId) this.changeOption(attrId, itemId);
50625                    },
50626                    changeOption(attributeId, value) {
50627                        if (value === '') {
50628                            return;
50629                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
50630                        } else {
50631                            this.selectedValues[attributeId] = value;
50632                        }
50633
50634                        this.findSimpleIndex();
50635                        this.findAllowedAttributeOptions();
50636                        this.updatePrices();
50637                        this.updateGallery();
50638
50639                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
50640                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
50641
50642                        const eventDetail = {
50643                            productId: this.productId,
50644                            optionId: attributeId,
50645                            value: value,
50646                            productIndex: this.productIndex || 0,
50647                            selectedValues: this.selectedValues,
50648                            candidates: candidates,
50649                            sourceElement: this.$el
50650                        };
50651
50652                        // Dispatch for Amasty
50653                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
50654                            detail: eventDetail
50655                        }));
50656
50657                        // Dispatch for Hyva listing
50658                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
50659                            detail: eventDetail
50660                        }));
50661                    },
50662
50663
50664                    clearOptionIfActive() {
50665                        const itemId = this._getItemId();
50666                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
50667                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
50668                            this.changeOption(attrId, '');
50669
50670                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
50671                            if (!input && this.$el?.querySelector) {
50672                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
50673                            }
50674                            if (!input && this.$el?.closest) {
50675                                const root = this.$el.closest('[data-product-id]') || this.$el;
50676                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
50677                            }
50678                            if (input) {
50679                                input.checked = false;
50680                            }
50681                        }
50682                    },
50683                    get optionIsEnabled() {
50684                        const itemId = this._getItemId();
50685                        if (!this.$el || !itemId) return true;
50686                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
50687                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
50688                        return !!allowedOptions.find(opt => opt.id == itemId);
50689                    },
50690                    get isSelected() {
50691                        const itemId = this._getItemId();
50692                        if (!this.$el || !itemId) return false;
50693                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
50694                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
50695                    },
50696                    get isSwatchRequired() {
50697                        if (!this.$el) return false;
50698                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
50699                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
50700                    },
50701                    focusedLabel: false,
50702                    activeTooltipItem: false,
50703                    tooltipPositionElement: false,
50704                    setActiveTooltipItem() {
50705                        const itemId = this._getItemId();
50706                        if (!this.$el || !itemId) return;
50707                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
50708                        this.activeTooltipItem = {
50709                            attribute: attrId,
50710                            item: itemId,
50711                            index: 0
50712                        };
50713                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
50714                    },
50715                    unsetActiveTooltipItem() {
50716                        this.activeTooltipItem = false;
50717                    }
50718                },
50719                confProdPreSelect()
50720            );
50721
50722            if (result.optionConfig && result.optionConfig.attributes) {
50723                const attributes = result.optionConfig.attributes;
50724                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
50725                    let source = attributes;
50726                    if (Array.isArray(attributes)) {
50727                        source = {};
50728                        attributes.forEach(attr => {
50729                            if (attr && attr.id) source[attr.id] = attr;
50730                        });
50731                    }
50732                    const values = Object.values(source);
50733                    const wrapper = Object.assign(values, source);
50734                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
50735                        value: true,
50736                        enumerable: false
50737                    });
50738                    result.optionConfig.attributes = wrapper;
50739                }
50740            }
50741
50742            return result;
50743        }
50744
50745        window.addEventListener('alpine:init', () => {
50746            Alpine.data('initConfigurableSwatchOptions_43600', initConfigurableSwatchOptions_43600);
50747        }, {
50748            once: true
50749        });
50750    </script>
50750
50751    
50752    <div x-data="initConfigurableSwatchOptions_43600" x-defer="intersect">
50753        <div class="pagebuilder-home-hidden">
50754                                            
50755                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
50756                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
50757                        <template x-if="showSwatches">
50758                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-43600-163" role="radiogroup" aria-label="Einband">
50759                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
50760                                    <div :data-option-id="item.id" style="display: contents">
50761                                        <div x-id="getSwatchOptionHtmlIdGroup">
50762    <template x-if="optionIsEnabled">
50763        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
50763self="unsetActiveTooltipItem">
50764            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-43600-163">
50765            <div>
50766                <template x-if="isTextSwatch">
50767                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
50768                </template>
50769                <template x-if="!optionIsActive(163, item.id)">
50770                    <div>
50771                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
50772                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
50773                        </svg>
50774                    </div>
50775                </template>
50776            </div>
50777        </label>
50778    </template>
50779</div>                                    </div>
50780                                </template>
50781                            </div>
50782                        </template>
50783                    </div>
50784                </div>
50785                    </div>
50786    </div>
50787            
50788                                                <div class="meta py-4 pagebuilder-home-hidden">
50789                <div x-data="initMarketingShortText_43600()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
50790                    <!-- Marketing short text -->
50791                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
50792                    </div>
50793
50794                    <!-- Short description -->
50795                                                        </div>
50796
50797                <!-- Series  -->
50798                                    <div class="mb-1">
50799                        <span class="sr-only">Reihe:</span>
50800                        <a href="https://meiner.de/fmv_de/programm/reihen/philosophische-bibliothek">
50801                            <span>Philosophische Bibliothek</span>
50802                        </a>
50803                                                    651-656                                            </div>
50804                
50805                
50806                                                    <div class="mb-1">
50807                        <span x-data="initEditionText_43600()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
50808                            <!-- Marketing short text -->
50809                            <span class="edition-text" x-html="editionText"></span>&nbsp;2013, 6 B&auml;nde, zus XL, 2 075 Seiten                        </span>
50810                    </div>
50811                
50812                            </div>
50813            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
50814                
50815                <div class="justify-end" x-data="initPriceBox()" @update-prices-43600.window="updatePrice($event.detail);">
50816                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="43600" data-price-box="product-id-43600"><span class="normal-price">
50817    <span x-data x-id="['product\u002Dprice\u002D43600']" class="price-container price-final_price tax weee">
50818            <span class="price-label">Ab</span>
50819                <span class="approx-price">ca. </span>
50820        <span :id="$id('product\u002Dprice\u002D43600')" data-price-amount="35.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">35,99&nbsp;&euro;</span></span>
50821        </span>
50822</span>
50823
50824
50825</div>                </div>
50826
50827                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
50828                                            <div class="open-access-container open-access-container-43600                    flex mt-4 ml-auto sm:mt-0 hidden">
50829                            <div class="text-gray-700">
50830                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
50831                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
50832                                        Kostenlos online lesen                                    </a>
50833                                </button>
50834                            </div>
50835                        </div>
50836                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Philosophische Werke in sechs B&auml;nden" aria-label="In den Warenkorb Philosophische Werke in sechs B&auml;nden" data-addto="cart">
50837                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
50838  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
508380 014 0z"></path>
50839</svg>
50840                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
50841                                        In den Warenkorb                                    </span>
50842                                </button>
50843                                                                                                                    
50844<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(43600)" aria-label="Zur Wunschliste hinzuf&uuml;gen Philosophische Werke in sechs B&auml;nden" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
50845    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
50846  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
50847</svg>
50848</button>
50849                                    </div>
50850            </div>
50851        </div>
50852        
50852<script>
50853            function initMarketingShortText_43600() {
50854                var marketingShortTextConfig = {};
50855                if (typeof window.initConfigurableSwatchOptions_43600 === "function") {
50856                    var fullConfig = window.initConfigurableSwatchOptions_43600().optionConfig
50857                    var marketingShortTextConfig = fullConfig.marketing_short_text;
50858                }
50859                return {
50860                    marketingShortText: '',
50861                    config: marketingShortTextConfig,
50862                    productId: '43600',
50863                    getMarketingShortText(detail) {
50864                        this.marketingShortText = detail.productIndex ?
50865                            this.config[detail.productIndex] :
50866                            null;
50867                    },
50868                    eventListeners: {
50869                        ['@listing-configurable-selection-changed.window'](event) {
50870                            if (this.productId == event.detail.productId) {
50871                                this.getMarketingShortText(event.detail);
50872                            }
50873
50874                        }
50875                    }
50876                }
50877            }
50878
50879            function initEditionText_43600() {
50880                var editionTextConfig = {};
50881                if (typeof window.initConfigurableSwatchOptions_43600 === "function") {
50882                    var fullConfig = window.initConfigurableSwatchOptions_43600().optionConfig
50883                    var editionTextConfig = fullConfig.edition;
50884                }
50885                return {
50886                    editionText: '',
50887                    config: editionTextConfig,
50888                    productId: '43600',
50889                    getEditionText(detail) {
50890                        this.editionText = detail.productIndex ?
50891                            this.config[detail.productIndex] :
50892                            null;
50893                    },
50894                    eventListeners: {
50895                        ['@listing-configurable-selection-changed.window'](event) {
50896                            if (this.productId == event.detail.productId) {
50897                                this.getEditionText(event.detail);
50898                            }
50899
50900                        }
50901                    }
50902                }
50903            }
50904        </script>
50904
50905                    </form>
50906                            
50907    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/40056/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="Werk17220">
50908        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="40056">
50909                                    <a href="https://meiner.de/fmv_de/chronik-der-philosophischen-werke-neuausgabe-17220" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
50910            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-40056.window="$el.src = $event.detail" alt="Chronik der philosophischen Werke. Neuausgabe" title="Chronik der philosophischen Werke. Neuausgabe" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787322411_5.jpg" :style="{
50911                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
50912                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
50913            }">
50914                    </a>
50915        <div class="product-info flex flex-col flex-grow ">
50916                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
50917                                    <div class="mb-2 text-sm text-gray-500 font-medium">
50918                                                                                    <a href="https://meiner.de/fmv_de/person/Arnim-Regenbogen-3899/" class="mb-2">
50919                                    Arnim Regenbogen                                                                    </a>
50920                                                                                                                        <span>|</span>
50921                                                                                                                <a href="https://meiner.de/fmv_de/person/Arnim-Regenbogen-3899/" class="mb-2">
50922                                    Arnim Regenbogen                                                                            (Hrsg.)
50923                                                                    </a>
50924                                                                                                                                    </div>
50925                                <a class="product-item-link" href="https://meiner.de/fmv_de/chronik-der-philosophischen-werke-neuausgabe-17220">
50926                    Chronik der philosophischen Werke. Neuausgabe                </a>
50927                            </div>
50928
50929            <div x-data="initEditionText_40056()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
50930                <!-- Marketing short text -->
50931                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
50932                </div>
50933            </div>
50934
50935                            <div class="py-1 grid  mb-4 ">
50936                    
50937                    <div x-data="initStockSubscribe" @configurable-select-changed.window="handleConfigurableSelectChanged" @configurable-selection-changed.window="handleConfigurableSelectChanged" x-show="containerVisible" class="amxnotif-container py-1 order-last" :class="containerClasses" data-config='{"isAvailable":true,"isShowAlert":false,"isProductSalable":true,"isListMode":true,"isGridMode":false,"validationLabel":"Please enter a valid email address (Ex: [email protected])","isConfigurable":true,"isGDPREnabled":true,"isUsePopup":true,"productIdentifier":40056,"mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","0":{"productId":40056,"isAvailable":true,"isOutofstockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"19341":"1"},"childProductsAlertStatus":{"19341":"0"},"indexMapping":{"163:15":19341},"availabilityMessages":{"19341":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"40056":{"status":0},"19341":{"status":0}}},"availabilityMessages":{"19341":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"40056":{"status":0},"19341":{"status":0}}}'>
50938        <template x-if="containerVisible">
50939                            <!-- Popup Trigger -->
50940                <div>
50941                    <button @click.prevent="openModal" class="hover:underline focus:outline-none focus:outline-hidden
50942                        focus:ring-2 " aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
50943                        <span class="text-orange-400"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6 inline" width="24" height="24" role="img">
50944  <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"></path>
50945<title>bell</title></svg>
50946</span>
50947                        Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                    </button>
50948
50949                    <!-- Popup Modal -->
50950                    <template x-if="showModal">
50951                        <template x-teleport=".page-wrapper">
50952                            <div x-cloak class="fixed inset-0 flex items-center justify-center
50953                                bg-black bg-opacity-50 bg-black/50 z-50" @click.self="hideModal" role="dialog" aria-modal="true" :aria-labelledby="popupModalTitleId">
50954                                <div class="relative bg-white rounded-lg shadow-xl
50955                                    max-w-md w-full mx-4 max-h-[90vh] overflow-auto">
50956                                    <div class="p-6">
50957                                        <!-- Subscription Form for Popup -->
50958                                        <form method="post" @submit.prevent="submitSubscribe" action="https://meiner.de/fmv_de/xnotif/email/stock/" class="space-y-4">
50959                                            <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">
50960                                            <h3 :id="popupModalTitleId" class="text-lg font-medium text-gray-900">
50961                                                Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.                                            </h3>
50962
50963                                            <div class="flex flex-col gap-3">
50964                                                <div class="flex-grow grow">
50965                                                    <input name="guest_email" @input.debounce.500ms="checkValidation" class="w-full px-3 py-2 border border-gray-300 rounded-md
50966                                                        shadow-xs focus:outline-none focus:outline-hidden
50967                                                        focus:ring-2 focus:ring-blue-500 focus:border-blue-500
50968                                                        disabled:bg-gray-100" x-ref="guest_email" :id="popupGuestEmailId" type="email" placeholder="E-Mail eingeben" required :disabled="buttonDisabled" :value="emailInput" @change="emailInputChangeEvent" :aria-describedby="popupValidationId">
50969                                                    <div :id="popupValidationId" class="sr-only" role="alert" x-text="validationMessage"></div>
50970                                                </div>
50971                                                <input type="hidden" name="product_id" :value="currentProductId">
50972                                                <input type="hidden" name="type" value="email">
50973
50974                                                
50975                                                <input type="hidden" name="uenc" value="aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~">
50976
50977                                                <div class="amxnotif_guest_action">
50978                                                    <button type="submit" class="btn-primary w-full px-4 py-2 font-medium
50979                                                        rounded-md focus:outline-none
50980                                                        focus:outline-hidden focus:ring-2
50981                                                        focus:ring-offset-2 disabled:opacity-50
50982                                                        disabled:cursor-not-allowed transition-colors" aria-label="Benachrichtigen Sie mich, wenn dieser Artikel verf&uuml;gbar ist.">
50983                                                        Benachrichtigen                                                    </button>
50984                                                </div>
50985                                            </div>
50986
50987                                                                                            <div class="flex items-start pt-2">
50988                                                    <input type="checkbox" name="gdrp" :id="popupGdprId" title="GDPR Agreement" value="1" :disabled="buttonDisabled" :checked="isGdprChecked" @change="isGdprCheckedChangeEvent" required class="mt-0.5 focus:ring-blue-500 h-4 w-4
50989                                                        text-blue-600 border-gray-300 rounded-sm">
50990                                                    <label class="amxnotif-stock-gdrp-label cursor-pointer
50991                                                        pl-3 text-sm text-gray-700 leading-tight" :for="popupGdprId">
50992                                                        Ich habe die <a href="/datenschutz">Datenschutzbestimmungen</a> gelesen und akzeptiere sie.                                                    </label>
50993                                                </div>
50994                                                                                    </form>
50995                                    </div>
50996
50997                                    <button @click="hideModal" class="absolute top-4 right-4 text-gray-400
50998                                        hover:text-gray-600 transition-colors" aria-label="Schlie&szlig;en">
50999                                        <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-6 h-6" width="24" height="24" role="img">
51000  <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
51001<title>x</title></svg>
51002                                    </button>
51003                                </div>
51004                            </div>
51005                        </template>
51006                    </template>
51007                </div>
51008                    </template>
51009    </div>
51010
51011<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_40056" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":40056,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":1,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":{"19341":"1"},"childProductsAlertStatus":{"19341":"0"},"indexMapping":"{\u0022163:15\u0022:19341}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":true,"productIdentifier":40056,"availabilityMessages":{"19341":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"40056":{"status":0},"19341":{"status":0}}}'>
51012    
51013    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
51014        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
51015        <span x-html="optionsLabelText"></span>
51016    </p>
51017</div>                </div>
51018            
51019                                
51019<script>
51020        window.amxnotif_get_options = window.amxnotif_get_options || function(config, attrId) {
51021            try {
51022                const attributes = (config && config.attributes) ? config.attributes : null;
51023                if (!attributes) return [];
51024                let attr = null;
51025                if (Array.isArray(attributes)) {
51026                    for (let i = 0; i < attributes.length; i++) {
51027                        const a = attributes[i];
51028                        if (a && a.id == attrId) {
51029                            attr = a;
51030                            break;
51031                        }
51032                    }
51033                } else {
51034                    attr = attributes[attrId];
51035                }
51036                return (attr && attr.options && Array.isArray(attr.options)) ? attr.options : [];
51037            } catch (e) {
51038                return [];
51039            }
51040        };
51041
51042        function initConfigurableSwatchOptions_40056() {
51043            const config = {"attributes":{"163":{"id":"163","code":"output","label":"Einband","options":[{"id":"15","label":"Kartoniert","products":["19341"]}],"position":"0"}},"template":"<%- data.price %>\u00a0\u20ac","currencyFormat":"%s\u00a0\u20ac","optionPrices":{"19341":{"baseOldPrice":{"amount":74.672896196262},"oldPrice":{"amount":79.9},"basePrice":{"amount":74.672896196262},"finalPrice":{"amount":79.9},"tierPrices":[],"msrpPrice":{"amount":0},"isApproxPrice":false}},"priceFormat":{"pattern":"%s\u00a0\u20ac","precision":2,"requiredPrecision":2,"decimalSymbol":",","groupSymbol":".","groupLength":3,"integerRequired":false},"prices":{"baseOldPrice":{"amount":74.672896196262},"oldPrice":{"amount":79.9},"basePrice":{"amount":67.142856142857},"finalPrice":{"amount":79.9},"isApproxPrice":null},"productId":"40056","chooseText":"W\u00e4hlen Sie eine Option...","images":[],"index":{"19341":{"163":"15"}},"salable":{"163":{"15":["19341"]}},"canDisplayShowOutOfStockStatus":true,"channel":"website","salesChannelCode":"fmv","sku":{"19341":"004683"},"output":{"19341":"Kartoniert"},"original_name":{"19341":""},"openaccess_license_link":{"19341":""},"openaccess_license_name":{"19341":""},"openaccess_external_link":{"19341":""},"gpsr_safety_info":{"19341":""},"description":{"19341":"Die Chronik der philosophischen Werke ist ein Lexikon von ganz besonderer Art: Sie gibt annotierte \u00dcbersicht \u00fcber die zeitliche N\u00e4he (oder auch Ferne) der Erstver\u00f6ffentlichungen bedeutender philosophischer Schriften und Werke seit Gutenberg, geordnet nach dem Erscheinungsjahr.<br\/><br\/>Die Chronik gibt f\u00fcr jedes aufgef\u00fchrte Werk eine kurze Inhaltsangabe und gliedert sich \u2013 anders als andere Lexika, die die Werke entweder nach Autorennamen oder nach dem Titel in alphabethischer Folge auflisten \u2013 nach dem Jahr der Erstver\u00f6ffentlichung im Druck. Damit wird zugleich der Blick auf das Umfeld aller bedeutenden philosophischen Publikationen er\u00f6ffnet, die zeitnah oder zeitgleich oder kurz darauf hier oder dort erschienen waren und so allgemein zug\u00e4nglich wurden.<br\/><br\/>Dies erm\u00f6glicht \u00fcberraschende Erkenntnisse \u00fcber die philosophische Publikationslandschaft eines bestimmten Zeitabschnitts und den Nachvollzug neuer, bisher unbeachtet gebliebener Querverbindungen oder wechselseitiger Einfl\u00fcsse, die seit der Einf\u00fchrung des Buchdrucks den Diskurs sehr viel offener und umtriebiger bestimmten und belebten als in den alten Zeiten der Klosterhandschriften. Die Chronik der philosophischen Werke ist damit ein getreuer Spiegel der Entwicklung und Ausdifferenzierung des Denkens in den Zeiten seit Gutenberg. Die Neuausgabe ist um die in der vorhergehenden Ausgabe noch fehlenden Jahre 1989\u20132019 erg\u00e4nzt und nun erstmals auch in Einzelb\u00e4nden erh\u00e4ltlich."},"doi":{"19341":""},"isbn":{"19341":"978-3-7873-4683-7"},"marketing_short_text":{"19341":"Erweiterte Neuausgabe der einzigartigen Chronologie philosophischen Denkens, jetzt weitergef\u00fchrt bis 2019"},"recension_text":{"19341":"<div class=\"reviews\">\r\n<div class=\"review\">Das Nachschlagewerk ist ein unverzichtbares Standardwerk f\u00fcr die philosophische Arbeit und geh\u00f6rt in jede Handbibliothek aller an der Philosophie Interessierter.<\/div>\r\n<div class=\"source\">S. D\u00fcfel, Lehrerbibliothek.de<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Umso gr\u00f6\u00dfer das Vergn\u00fcgen \u00fcber die Chronik der philosophischen Werke, die sich als Wegweiser durch die Geschichte der westlichen Philosophie anbietet. Mit ihrer Hilfe kann man sich manche Trittleiter basteln. Zum Gl\u00fcck wird es einem nicht leichter als m\u00f6glich gemacht.<\/div>\r\n<div class=\"source\">S\u00fcddeutsche Zeitung (Jens Bisky) 25.02.2012<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Es ist ungemein spannend, den Verlauf der Ver\u00f6ffentlichungen zu verfolgen. Regenbogen bietet gute Einleitungen zu den Jahrhunderten. Seine neuartige Chronik zeigt, wie die Gegenwart eines Gedankens aussah. Wer wissen will, wann und wie Gedanken aus den akademischen Zirkeln \u00fcber den Buchdruck die \u00f6ffentliche Diskussion pr\u00e4gten, findet aufregende Antworten. F\u00fcr mich eine der wichtigsten Entdeckungen des B\u00fccherjahres.<\/div>\r\n<div class=\"source\">Gert Scobel in Philosophie Magazin 2\/2012<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Besondere Empfehlung des Norddeutschen Rundfunks und der S\u00fcddeutschen Zeitung auf der Sachbuchbestenliste im Januar 2012!<\/div>\r\n<div class=\"source\">NDR \/ SZ<\/div>\r\n<\/div> <div class=\"reviews\">\r\n<div class=\"review\">Man wird das Buch auch dann n\u00fctzlich finden und zur schnellen Information konsultieren, wenn man nicht vorrangig an der zeitlichen Konstellation interessiert ist. Zwar gibt es, wie erw\u00e4hnt, auch einige andere Werklexika, doch werden diese auf geschickte Weise von dem vorliegenden Werk erg\u00e4nzt. Der Nutzen des Bandes als Hilfsmittel wird durch ein detailliertes Register der Titel und Titelstichw\u00f6rter (!) sowie ein Register der Autoren und Werke erh\u00f6ht.<\/div>\r\n<div class=\"source\">Informationsmittel (IFB) : digitales Rezensionsorgan f\u00fcr Bibliothek und Wissenschaft<\/div>\r\n<\/div>"},"language":{"19341":""},"cover":{"19341":"Kartoniert"},"pages":{"19341":"zusammen. ca. 800 Seiten"},"edition":{"19341":""},"pod":{"19341":"Nein"},"copyright_year":{"19341":""},"vlb_tix_link":{"19341":"https:\/\/neu.vlbtix.de\/products\/9783787346837?type=gtin"},"defaultValues":{"163":"15"}};
51044            const swatchConfig = {"163":{"15":{"type":"0","value":"Kartoniert","label":"Kartoniert"},"additional_data":"{\"swatch_input_type\":\"text\",\"update_product_preview_image\":\"1\",\"use_product_image_for_swatch\":0}"}};
51045
51046            if (typeof window.amxnotif_wrap_attributes === 'function') {
51047                if (config && config.attributes) config.attributes = window.amxnotif_wrap_attributes(config.attributes);
51048                if (swatchConfig && swatchConfig.attributes) swatchConfig.attributes = window.amxnotif_wrap_attributes(swatchConfig.attributes);
51049            }
51050
51051            const configurableOptionsComponent = initConfigurableOptions(
51052                '40056',
51053                config
51054            );
51055            const swatchOptionsComponent = initSwatchOptions(
51056                swatchConfig
51057            );
51058
51059            // DWS - Configurable product preselect start
51060            const confProdPreSelect = () => {
51061                return {
51062                    preselectQuerystringItems() {
51063                        var data = {"id":"19341","output":"15"};
51064                        const urlQueryParams = new URLSearchParams(window.location.search);
51065
51066                                                this.$nextTick(() => {
51067                            setTimeout(() => {
51068                                const rootEl = this.$root || this.$el;
51069                                if (!rootEl) return;
51070
51071                                const applySelection = (attrCode, attrValue) => {
51072                                    if (attrValue === undefined || attrValue === null || attrValue === '') return;
51073
51074                                    const attributes = Object.values(this.optionConfig.attributes || {});
51075                                    const targetAttr = attributes.find(attr => attr && attr.code == attrCode);
51076
51077                                    if (targetAttr) {
51078                                        const attrId = String(targetAttr.id);
51079                                        const optionVal = String(attrValue);
51080
51081                                                                                const inputEl = rootEl.querySelector(`input[name="super_attribute[${attrId}]"][value="${optionVal}"]`);
51082
51083                                        if (inputEl) {
51084                                                                                        inputEl.click();
51085                                            inputEl.dispatchEvent(new Event('change', {
51086                                                bubbles: true
51087                                            }));
51088                                        } else {
51089                                                                                        const selectEl = rootEl.querySelector(`select[name="super_attribute[${attrId}]"]`);
51090                                            if (selectEl) {
51091                                                selectEl.value = optionVal;
51092                                                selectEl.dispatchEvent(new Event('change', {
51093                                                    bubbles: true
51094                                                }));
51095                                            }
51096                                        }
51097
51098                                                                                this.changeOption(attrId, optionVal, false);
51099                                    }
51100                                };
51101
51102                                                                if (data && typeof data === 'object') {
51103                                    Object.keys(data).forEach(key => applySelection(key, data[key]));
51104                                }
51105
51106                                                                Object.values(this.optionConfig.attributes || {}).forEach(attribute => {
51107                                    if (attribute && attribute.code) {
51108                                        let optionValue = urlQueryParams.get(attribute.code);
51109                                        if (optionValue) {
51110                                            let optionId = false;
51111                                            const attributes = Object.values(this.optionConfig.attributes || {});
51112                                            const targetAttr = attributes.find(attribute => attribute && attribute.code == attribute.code);
51113
51114                                            let found = false;
51115                                            Object.values(targetAttr.options).map(option => {
51116                                                if (found === false && option.label === optionValue) {
51117                                                    optionId = option.id;
51118                                                    found = true;
51119                                                }
51120                                            });
51121
51122                                            const attrId = String(targetAttr.id);
51123                                            let optionVal = String(optionValue);
51124                                            if (found) {
51125                                                optionVal = String(optionId);
51126                                            }
51127
51128                                            applySelection(attribute.code, optionVal);
51129                                        }
51130                                    }
51131                                });
51132                            }, 100);
51133                        });
51134                    }
51135                }
51136            };
51137            // DWS - Configurable product preselect end
51138
51139            const result = Object.assign(
51140                configurableOptionsComponent,
51141                swatchOptionsComponent, {
51142                    productId: '40056',
51143                    productIndex: 0,
51144                    mediaCallback: "https\u003A\u002F\u002Fmeiner.de\u002Ffmv_de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
51145                    showSwatches: false,
51146                    precalcOptions: {},
51147                    originalInit: configurableOptionsComponent.init,
51148                    init() {
51149                        try {
51150                            this.precalcOptions = {};
51151                            const attrSource = this.optionConfig.attributes_map || this.optionConfig.attributes || [];
51152                            this.preselectQuerystringItems();
51153                            if (Array.isArray(attrSource)) {
51154                                attrSource.forEach(attr => {
51155                                    if (attr && attr.id) this.precalcOptions[attr.id] = attr.options || [];
51156                                });
51157                            } else if (attrSource && typeof attrSource === 'object') {
51158                                Object.keys(attrSource).forEach(id => {
51159                                    if (attrSource[id] && attrSource[id].options) this.precalcOptions[id] = attrSource[id].options;
51160                                });
51161                            }
51162                        } catch (e) {
51163                            console.error('Pre-calc error:', e);
51164                        }
51165
51166                        if (typeof this.originalInit === 'function') {
51167                            this.originalInit();
51168                        }
51169
51170                        try {
51171                            this.initShowSwatchesIntersect();
51172                        } catch (e) {
51173                            console.error('intersect error:', e);
51174                        }
51175                    },
51176
51177                    updateGallery() {
51178                        if (!this.productIndex) return;
51179
51180                        fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
51181                                method: 'GET',
51182                                headers: {
51183                                    'Content-Type': 'application/json',
51184                                    'X-Requested-With': 'XMLHttpRequest'
51185                                }
51186                            })
51187                            .then(response => response.json())
51188                            .then(data => {
51189                                if (data && data.medium) {
51190                                    window.dispatchEvent(new CustomEvent("update-gallery-40056", {
51191                                        detail: data.medium
51192                                    }));
51193                                }
51194                            }).catch(e => console.warn('[Amxnotif] Gallery update failed:', e));
51195                    },
51196
51197
51198                    initShowSwatchesIntersect() {
51199                        const observer = new IntersectionObserver(entries => {
51200                            if (entries[0].isIntersecting) {
51201                                this.showSwatches = true;
51202                                observer.disconnect();
51203                            }
51204                        }, {
51205                            rootMargin: '512px'
51206                        });
51207                        observer.observe(this.$el);
51208                    },
51209                    getOptions(attrId) {
51210                        return this.precalcOptions[attrId] || [];
51211                    },
51212                    getOptionsByAttrId() {
51213                        return this.getOptions(this.$el.dataset.attributeId);
51214                    },
51215                    _getItemId() {
51216                        if (this.item && this.item.id) return this.item.id;
51217                        return this.$el?.closest('[data-option-id]')?.dataset.optionId;
51218                    },
51219                    getSwatchOptionHtmlId() {
51220                        const itemId = this._getItemId();
51221                        return itemId ? this.$id(`attribute-option-40056-${itemId}`) : '';
51222                    },
51223                    getSwatchOptionHtmlIdGroup() {
51224                        const itemId = this._getItemId();
51225                        return itemId ? [`attribute-option-40056-${itemId}`] : [];
51226                    },
51227                    getAttributeSwatchData(attributeId) {
51228                        const data = Object.assign({}, this.swatchConfig[attributeId]);
51229                        if (data['additional_data']) {
51230                            try {
51231                                data['details'] = JSON.parse(data['additional_data']);
51232                            } catch (e) {
51233                                data['details'] = {};
51234                            }
51235                        }
51236                        return data;
51237                    },
51238                    getSwatchType(attributeId, optionId) {
51239                        if (this.swatchConfig[attributeId] && !this.swatchConfig[attributeId].details) {
51240                            this.swatchConfig[attributeId] = this.getAttributeSwatchData(attributeId);
51241                        }
51242                        const type = (this.swatchConfig[attributeId] && this.swatchConfig[attributeId].details) ?
51243                            this.swatchConfig[attributeId].details.swatch_input_type :
51244                            "empty";
51245                        if (type === 'visual') {
51246                            const config = this.swatchConfig[attributeId];
51247                            if (config[optionId] && typeof config[optionId].type !== 'undefined') {
51248                                return this.mapSwatchTypeNumberToTypeCode(config[optionId].type);
51249                            }
51250                            // Fallback to first option type
51251                            for (const oId in config) {
51252                                if (config[oId] && typeof config[oId].type !== 'undefined') {
51253                                    return this.mapSwatchTypeNumberToTypeCode(config[oId].type);
51254                                }
51255                            }
51256                        }
51257                        return type;
51258                    },
51259                    mapSwatchTypeNumberToTypeCode(type) {
51260                        return ["text", "color", "image", "empty"][parseInt(type)] || "text";
51261                    },
51262                    isTextSwatch() {
51263                        const itemId = this._getItemId();
51264                        if (!this.$el || !itemId) return false;
51265                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
51266                        return attrId ? (this.getSwatchType(attrId, itemId) === 'text') : false;
51267                    },
51268
51269                    getSwatchText() {
51270                        const itemId = this._getItemId();
51271                        if (this.item) return this.item.label || '';
51272                        if (!this.$el || !itemId) return '';
51273                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
51274                        const options = attrId ? this.getOptions(attrId) : [];
51275                        const opt = options.find(o => o.id == itemId);
51276                        return opt ? opt.label : '';
51277                    },
51278                    getSwatchBackgroundStyle() {
51279                        const itemId = this._getItemId();
51280                        if (!this.$el || !itemId) return '';
51281                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
51282                        if (!attrId) return '';
51283                        const type = this.getSwatchType(attrId, itemId);
51284                        const swatchData = (this.swatchConfig[attrId] && this.swatchConfig[attrId][itemId]) ?
51285                            this.swatchConfig[attrId][itemId] :
51286                            null;
51287                        if (!swatchData) return '';
51288                        if (type === "color") return 'background-color:' + swatchData.value;
51289                        if (type === "image") return "background: #fff url('" + swatchData.value + "') no-repeat center";
51290                        return '';
51291                    },
51292                    swatchOptionClasses() {
51293                        const itemId = this._getItemId();
51294                        if (!this.$el || !itemId) return {};
51295                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
51296                        return {
51297                            'border-gray-100 ring ring-primary/50 ring-2': (attrId && this.selectedValues[attrId] == itemId),
51298                            'border-gray-300': (attrId && this.selectedValues[attrId] != itemId),
51299                            'w-6 h-6': !this.isTextSwatch()
51300                        }
51301                    },
51302
51303                    onFocusSwatchItem() {
51304                        const itemId = this._getItemId();
51305                        if (itemId) this.focusedLabel = itemId;
51306                    },
51307                    onChangeOption() {
51308                        const itemId = this._getItemId();
51309                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
51310                        if (attrId && itemId) this.changeOption(attrId, itemId);
51311                    },
51312                    changeOption(attributeId, value) {
51313                        if (value === '') {
51314                            return;
51315                            this.selectedValues = this.removeAttrFromSelection(this.selectedValues, attributeId);
51316                        } else {
51317                            this.selectedValues[attributeId] = value;
51318                        }
51319
51320                        this.findSimpleIndex();
51321                        this.findAllowedAttributeOptions();
51322                        this.updatePrices();
51323                        this.updateGallery();
51324
51325                        const candidates = (typeof this.findProductIdsForPartialSelection === 'function') ?
51326                            this.findProductIdsForPartialSelection(this.selectedValues) : [];
51327
51328                        const eventDetail = {
51329                            productId: this.productId,
51330                            optionId: attributeId,
51331                            value: value,
51332                            productIndex: this.productIndex || 0,
51333                            selectedValues: this.selectedValues,
51334                            candidates: candidates,
51335                            sourceElement: this.$el
51336                        };
51337
51338                        // Dispatch for Amasty
51339                        window.dispatchEvent(new CustomEvent('configurable-select-changed', {
51340                            detail: eventDetail
51341                        }));
51342
51343                        // Dispatch for Hyva listing
51344                        window.dispatchEvent(new CustomEvent('listing-configurable-selection-changed', {
51345                            detail: eventDetail
51346                        }));
51347                    },
51348
51349
51350                    clearOptionIfActive() {
51351                        const itemId = this._getItemId();
51352                        const attrId = this.$el?.closest('[data-attribute-id]')?.dataset.attributeId;
51353                        if (attrId && itemId && this.selectedValues[attrId] == itemId) {
51354                            this.changeOption(attrId, '');
51355
51356                            let input = this.$el && this.$el.tagName === 'INPUT' ? this.$el : null;
51357                            if (!input && this.$el?.querySelector) {
51358                                input = this.$el.querySelector(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
51359                            }
51360                            if (!input && this.$el?.closest) {
51361                                const root = this.$el.closest('[data-product-id]') || this.$el;
51362                                input = root?.querySelector?.(`input[data-option-id="${itemId}"][name="super_attribute[${attrId}]"]`);
51363                            }
51364                            if (input) {
51365                                input.checked = false;
51366                            }
51367                        }
51368                    },
51369                    get optionIsEnabled() {
51370                        const itemId = this._getItemId();
51371                        if (!this.$el || !itemId) return true;
51372                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
51373                        const allowedOptions = attrId ? (this.allowedAttributeOptions[attrId] || []) : [];
51374                        return !!allowedOptions.find(opt => opt.id == itemId);
51375                    },
51376                    get isSelected() {
51377                        const itemId = this._getItemId();
51378                        if (!this.$el || !itemId) return false;
51379                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
51380                        return attrId ? (this.selectedValues[attrId] == itemId) : false;
51381                    },
51382                    get isSwatchRequired() {
51383                        if (!this.$el) return false;
51384                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
51385                        return attrId ? ((this.allowedAttributeOptions[attrId] || []).length > 0) : false;
51386                    },
51387                    focusedLabel: false,
51388                    activeTooltipItem: false,
51389                    tooltipPositionElement: false,
51390                    setActiveTooltipItem() {
51391                        const itemId = this._getItemId();
51392                        if (!this.$el || !itemId) return;
51393                        const attrId = this.$el.closest('[data-attribute-id]')?.dataset.attributeId;
51394                        this.activeTooltipItem = {
51395                            attribute: attrId,
51396                            item: itemId,
51397                            index: 0
51398                        };
51399                        this.tooltipPositionElement = this.$event ? this.$event.target : null;
51400                    },
51401                    unsetActiveTooltipItem() {
51402                        this.activeTooltipItem = false;
51403                    }
51404                },
51405                confProdPreSelect()
51406            );
51407
51408            if (result.optionConfig && result.optionConfig.attributes) {
51409                const attributes = result.optionConfig.attributes;
51410                if (attributes && typeof attributes === 'object' && !attributes.__amxnotifWrapped) {
51411                    let source = attributes;
51412                    if (Array.isArray(attributes)) {
51413                        source = {};
51414                        attributes.forEach(attr => {
51415                            if (attr && attr.id) source[attr.id] = attr;
51416                        });
51417                    }
51418                    const values = Object.values(source);
51419                    const wrapper = Object.assign(values, source);
51420                    Object.defineProperty(wrapper, '__amxnotifWrapped', {
51421                        value: true,
51422                        enumerable: false
51423                    });
51424                    result.optionConfig.attributes = wrapper;
51425                }
51426            }
51427
51428            return result;
51429        }
51430
51431        window.addEventListener('alpine:init', () => {
51432            Alpine.data('initConfigurableSwatchOptions_40056', initConfigurableSwatchOptions_40056);
51433        }, {
51434            once: true
51435        });
51436    </script>
51436
51437    
51438    <div x-data="initConfigurableSwatchOptions_40056" x-defer="intersect">
51439        <div class="pagebuilder-home-hidden">
51440                                            
51441                                <div class="swatch-attribute border-t last:border-b border-container output" data-attribute-id="163">
51442                    <div class="w-full overflow-x-hidden swatch-attribute-options min-h-14">
51443                        <template x-if="showSwatches">
51444                            <div class="flex flex-nowrap w-full overflow-auto snap items-center py-1" id="attribute-label-40056-163" role="radiogroup" aria-label="Einband">
51445                                <template x-for="(item, index) in getOptionsByAttrId" x-bind:key="item.id" data-attribute-id="163">
51446                                    <div :data-option-id="item.id" style="display: contents">
51447                                        <div x-id="getSwatchOptionHtmlIdGroup">
51448    <template x-if="optionIsEnabled">
51449        <label :for="getSwatchOptionHtmlId" class="swatch-option relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit" :class="swatchOptionClasses" :style="getSwatchBackgroundStyle" @mouseenter.self="setActiveTooltipItem" @mouseleave.
51449self="unsetActiveTooltipItem">
51450            <input :id="getSwatchOptionHtmlId" :value="item.id" :checked="isSelected" name="super_attribute[163]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input" style="z-index:-1" @focus="onFocusSwatchItem" @blur="blurLabel" @change="onChangeOption" :required="isSwatchRequired" :data-option-id="item.id" :aria-label="getSwatchText" aria-describedby="attribute-label-40056-163">
51451            <div>
51452                <template x-if="isTextSwatch">
51453                    <div :data-option-id="item.id" x-html="getSwatchText" class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true"></div>
51454                </template>
51455                <template x-if="!optionIsActive(163, item.id)">
51456                    <div>
51457                        <svg class="absolute inset-0 w-full h-full text-gray-500 bg-white/25">
51458                            <line x1="0" y1="100%" x2="100%" y2="0" class="stroke-current stroke-1"></line>
51459                        </svg>
51460                    </div>
51461                </template>
51462            </div>
51463        </label>
51464    </template>
51465</div>                                    </div>
51466                                </template>
51467                            </div>
51468                        </template>
51469                    </div>
51470                </div>
51471                    </div>
51472    </div>
51473            
51474                                                <div class="meta py-4 pagebuilder-home-hidden">
51475                <div x-data="initMarketingShortText_40056()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
51476                    <!-- Marketing short text -->
51477                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
51478                    </div>
51479
51480                    <!-- Short description -->
51481                                                                <div class="short-description">
51482                            Die Chronik der philosophischen Werke ist ein Lexikon von ganz besonderer Art: Sie gibt annotierte &Uuml;bersicht &uuml;ber die zeitliche N&auml;he (oder auch Ferne) der Erstver&ouml;ffentlichungen bedeutender ...                            <a href="https://meiner.de/fmv_de/chronik-der-philosophischen-werke-neuausgabe-17220" class="underline">mehr</a>
51483                        </div>
51484                                    </div>
51485
51486                <!-- Series  -->
51487                
51488                
51489                                                    <div class="mb-1">
51490                        <span x-data="initEditionText_40056()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
51491                            <!-- Marketing short text -->
51492                            <span class="edition-text" x-html="editionText"></span>&nbsp;2025, zusammen. ca. 800 Seiten                        </span>
51493                    </div>
51494                
51495                            </div>
51496            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
51497                
51498                <div class="justify-end" x-data="initPriceBox()" @update-prices-40056.window="updatePrice($event.detail);">
51499                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="40056" data-price-box="product-id-40056"><span class="normal-price">
51500    <span x-data x-id="['product\u002Dprice\u002D40056']" class="price-container price-final_price tax weee">
51501            <span class="price-label">Ab</span>
51502                <span class="approx-price">ca. </span>
51503        <span :id="$id('product\u002Dprice\u002D40056')" data-price-amount="79.9" data-price-type="finalPrice" class="price-wrapper "><span class="price">79,90&nbsp;&euro;</span></span>
51504        </span>
51505</span>
51506
51507
51508</div>                </div>
51509
51510                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
51511                                            <div class="open-access-container open-access-container-40056                    flex mt-4 ml-auto sm:mt-0 hidden">
51512                            <div class="text-gray-700">
51513                                <button type="button" title="Kostenlos online lesen" class="btn w-full btn-open-access">
51514                                    <a href="" target="_blank" class="open-access-external-link m-auto ">
51515                                        Kostenlos online lesen                                    </a>
51516                                </button>
51517                            </div>
51518                        </div>
51519                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Chronik der philosophischen Werke. Neuausgabe" aria-label="In den Warenkorb Chronik der philosophischen Werke. Neuausgabe" data-addto="cart">
51520                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
51521  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
515210 014 0z"></path>
51522</svg>
51523                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
51524                                        In den Warenkorb                                    </span>
51525                                </button>
51526                                                                                                                    
51527<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(40056)" aria-label="Zur Wunschliste hinzuf&uuml;gen Chronik der philosophischen Werke. Neuausgabe" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
51528    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
51529  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
51530</svg>
51531</button>
51532                                    </div>
51533            </div>
51534        </div>
51535        
51535<script>
51536            function initMarketingShortText_40056() {
51537                var marketingShortTextConfig = {};
51538                if (typeof window.initConfigurableSwatchOptions_40056 === "function") {
51539                    var fullConfig = window.initConfigurableSwatchOptions_40056().optionConfig
51540                    var marketingShortTextConfig = fullConfig.marketing_short_text;
51541                }
51542                return {
51543                    marketingShortText: '',
51544                    config: marketingShortTextConfig,
51545                    productId: '40056',
51546                    getMarketingShortText(detail) {
51547                        this.marketingShortText = detail.productIndex ?
51548                            this.config[detail.productIndex] :
51549                            null;
51550                    },
51551                    eventListeners: {
51552                        ['@listing-configurable-selection-changed.window'](event) {
51553                            if (this.productId == event.detail.productId) {
51554                                this.getMarketingShortText(event.detail);
51555                            }
51556
51557                        }
51558                    }
51559                }
51560            }
51561
51562            function initEditionText_40056() {
51563                var editionTextConfig = {};
51564                if (typeof window.initConfigurableSwatchOptions_40056 === "function") {
51565                    var fullConfig = window.initConfigurableSwatchOptions_40056().optionConfig
51566                    var editionTextConfig = fullConfig.edition;
51567                }
51568                return {
51569                    editionText: '',
51570                    config: editionTextConfig,
51571                    productId: '40056',
51572                    getEditionText(detail) {
51573                        this.editionText = detail.productIndex ?
51574                            this.config[detail.productIndex] :
51575                            null;
51576                    },
51577                    eventListeners: {
51578                        ['@listing-configurable-selection-changed.window'](event) {
51579                            if (this.productId == event.detail.productId) {
51580                                this.getEditionText(event.detail);
51581                            }
51582
51583                        }
51584                    }
51585                }
51586            }
51587        </script>
51587
51588                    </form>
51589                            
51590    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/5325/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="SCHUPP">
51591        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="5325">
51592                                    <a href="https://meiner.de/fmv_de/geschichte-der-philosophie-im-a-berblick-866" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
51593            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-5325.window="$el.src = $event.detail" alt="Geschichte der Philosophie im &Uuml;berblick" title="Geschichte der Philosophie im &Uuml;berblick" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787317042.png" :style="{
51594                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
51595                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
51596            }">
51597                    </a>
51598        <div class="product-info flex flex-col flex-grow ">
51599                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
51600                                    <div class="mb-2 text-sm text-gray-500 font-medium">
51601                                                                                    <a href="https://meiner.de/fmv_de/person/Franz-Schupp-3975/" class="mb-2">
51602                                    Franz Schupp                                                                    </a>
51603                                                                                                                                    </div>
51604                                <a class="product-item-link" href="https://meiner.de/fmv_de/geschichte-der-philosophie-im-a-berblick-866">
51605                    Geschichte der Philosophie im &Uuml;berblick                </a>
51606                            </div>
51607
51608            <div x-data="initEditionText_5325()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
51609                <!-- Marketing short text -->
51610                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
51611                </div>
51612            </div>
51613
51614                            <div class="py-1 grid  mb-4 ">
51615                    
51616<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_5325" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":5325,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":0,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":[],"childProductsAlertStatus":[],"indexMapping":"{}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":false,"productIdentifier":5325,"availabilityMessages":{"5325":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"5325":{"status":0}}}'>
51617    
51618    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
51619        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
51620        <span x-html="optionsLabelText"></span>
51621    </p>
51622</div>                </div>
51623            
51624                                        
51625                                                    <div class="pagebuilder-home-hidden">
51626                    <div class="mb-2 relative">
51627                        <div class="swatch-option w-fit relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit border-gray-100 ring ring-primary/50 ring-2">
51628                            <div>
51629                                <div class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true">Kartoniert</div>
51630                                                            </div>
51631                        </div>
51632                    </div>
51633                </div>
51634                        <div class="meta py-4 pagebuilder-home-hidden">
51635                <div x-data="initMarketingShortText_5325()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
51636                    <!-- Marketing short text -->
51637                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
51638                    </div>
51639
51640                    <!-- Short description -->
51641                                                        </div>
51642
51643                <!-- Series  -->
51644                
51645                
51646                                                    <div class="mb-1">
51647                        <span x-data="initEditionText_5325()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
51648                            <!-- Marketing short text -->
51649                            <span class="edition-text" x-html="editionText"></span>&nbsp;Zusammen 1.624 Seiten                        </span>
51650                    </div>
51651                
51652                                    <div class="mb-1">
51653                        <span>ISBN: </span>
51654                        <span>978-3-7873-1704-2</span>
51655                    </div>
51656                            </div>
51657            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
51658                
51659                <div class="justify-end" x-data="initPriceBox()" @update-prices-5325.window="updatePrice($event.detail);">
51660                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="5325" data-price-box="product-id-5325">
51661    <span x-data x-id="['product\u002Dprice\u002D5325']" class="price-container price-final_price tax weee">
51662            <span :id="$id('product\u002Dprice\u002D5325')" data-price-amount="68" data-price-type="finalPrice" class="price-wrapper "><span class="price">68,00&nbsp;&euro;</span></span>
51663        </span>
51664
51665</div>                </div>
51666
51667                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
51668                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Geschichte der Philosophie im &Uuml;berblick" aria-label="In den Warenkorb Geschichte der Philosophie im &Uuml;berblick" data-addto="cart">
51669                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
51670  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
51671</svg>
51672                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
51673                                        In den Warenkorb                                    </span>
51674                                </button>
51675                                                                                                                    
51676<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(5325)" aria-label="Zur Wunschliste hinzuf&uuml;gen Geschichte der Philosophie im &Uuml;berblick" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
51677    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
51678  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
51679</svg>
51680</button>
51681                                    </div>
51682            </div>
51683        </div>
51684        
51684<script>
51685            function initMarketingShortText_5325() {
51686                var marketingShortTextConfig = {};
51687                if (typeof window.initConfigurableSwatchOptions_5325 === "function") {
51688                    var fullConfig = window.initConfigurableSwatchOptions_5325().optionConfig
51689                    var marketingShortTextConfig = fullConfig.marketing_short_text;
51690                }
51691                return {
51692                    marketingShortText: '',
51693                    config: marketingShortTextConfig,
51694                    productId: '5325',
51695                    getMarketingShortText(detail) {
51696                        this.marketingShortText = detail.productIndex ?
51697                            this.config[detail.productIndex] :
51698                            null;
51699                    },
51700                    eventListeners: {
51701                        ['@listing-configurable-selection-changed.window'](event) {
51702                            if (this.productId == event.detail.productId) {
51703                                this.getMarketingShortText(event.detail);
51704                            }
51705
51706                        }
51707                    }
51708                }
51709            }
51710
51711            function initEditionText_5325() {
51712                var editionTextConfig = {};
51713                if (typeof window.initConfigurableSwatchOptions_5325 === "function") {
51714                    var fullConfig = window.initConfigurableSwatchOptions_5325().optionConfig
51715                    var editionTextConfig = fullConfig.edition;
51716                }
51717                return {
51718                    editionText: '',
51719                    config: editionTextConfig,
51720                    productId: '5325',
51721                    getEditionText(detail) {
51722                        this.editionText = detail.productIndex ?
51723                            this.config[detail.productIndex] :
51724                            null;
51725                    },
51726                    eventListeners: {
51727                        ['@listing-configurable-selection-changed.window'](event) {
51728                            if (this.productId == event.detail.productId) {
51729                                this.getEditionText(event.detail);
51730                            }
51731
51732                        }
51733                    }
51734                }
51735            }
51736        </script>
51736
51737                    </form>
51738                            
51739    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/4401/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="004647">
51740        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="4401">
51741                                    <a href="https://meiner.de/fmv_de/kleine-schriften-set-17127" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
51742            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-4401.window="$el.src = $event.detail" alt="Kleine Schriften (Set)" title="Kleine Schriften (Set)" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787346479.png" :style="{
51743                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
51744                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
51745            }">
51746                    </a>
51747        <div class="product-info flex flex-col flex-grow ">
51748                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
51749                                    <div class="mb-2 text-sm text-gray-500 font-medium">
51750                                                                                    <a href="https://meiner.de/fmv_de/person/Immanuel-Kant-3609/" class="mb-2">
51751                                    Immanuel Kant                                                                    </a>
51752                                                                                                                                    </div>
51753                                <a class="product-item-link" href="https://meiner.de/fmv_de/kleine-schriften-set-17127">
51754                    Kleine Schriften (Set)                </a>
51755                            </div>
51756
51757            <div x-data="initEditionText_4401()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
51758                <!-- Marketing short text -->
51759                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
51760                </div>
51761            </div>
51762
51763                            <div class="py-1 grid  mb-4 ">
51764                    
51765<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_4401" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":4401,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":0,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":[],"childProductsAlertStatus":[],"indexMapping":"{}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":false,"productIdentifier":4401,"availabilityMessages":{"4401":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"4401":{"status":0}}}'>
51766    
51767    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
51768        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
51769        <span x-html="optionsLabelText"></span>
51770    </p>
51771</div>                </div>
51772            
51773                                        
51774                                                    <div class="pagebuilder-home-hidden">
51775                    <div class="mb-2 relative">
51776                        <div class="swatch-option w-fit relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit border-gray-100 ring ring-primary/50 ring-2">
51777                            <div>
51778                                <div class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true">Kartoniert</div>
51779                                                            </div>
51780                        </div>
51781                    </div>
51782                </div>
51783                        <div class="meta py-4 pagebuilder-home-hidden">
51784                <div x-data="initMarketingShortText_4401()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
51785                    <!-- Marketing short text -->
51786                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
51787                    </div>
51788
51789                    <!-- Short description -->
51790                                                        </div>
51791
51792                <!-- Series  -->
51793                
51794                
51795                                                    <div class="mb-1">
51796                        <span x-data="initEditionText_4401()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
51797                            <!-- Marketing short text -->
51798                            <span class="edition-text" x-html="editionText"></span>&nbsp;2024, IC, 236                        </span>
51799                    </div>
51800                
51801                                    <div class="mb-1">
51802                        <span>ISBN: </span>
51803                        <span>978-3-7873-4647-9</span>
51804                    </div>
51805                            </div>
51806            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
51807                
51808                <div class="justify-end" x-data="initPriceBox()" @update-prices-4401.window="updatePrice($event.detail);">
51809                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="4401" data-price-box="product-id-4401">
51810    <span x-data x-id="['product\u002Dprice\u002D4401']" class="price-container price-final_price tax weee">
51811            <span :id="$id('product\u002Dprice\u002D4401')" data-price-amount="29.9" data-price-type="finalPrice" class="price-wrapper "><span class="price">29,90&nbsp;&euro;</span></span>
51812        </span>
51813
51814</div>                </div>
51815
51816                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
51817                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Kleine Schriften (Set)" aria-label="In den Warenkorb Kleine Schriften (Set)" data-addto="cart">
51818                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
51819  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
51820</svg>
51821                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
51822                                        In den Warenkorb                                    </span>
51823                                </button>
51824                                                                                                                    
51825<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(4401)" aria-label="Zur Wunschliste hinzuf&uuml;gen Kleine Schriften (Set)" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
51826    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
51827  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
51828</svg>
51829</button>
51830                                    </div>
51831            </div>
51832        </div>
51833        
51833<script>
51834            function initMarketingShortText_4401() {
51835                var marketingShortTextConfig = {};
51836                if (typeof window.initConfigurableSwatchOptions_4401 === "function") {
51837                    var fullConfig = window.initConfigurableSwatchOptions_4401().optionConfig
51838                    var marketingShortTextConfig = fullConfig.marketing_short_text;
51839                }
51840                return {
51841                    marketingShortText: '',
51842                    config: marketingShortTextConfig,
51843                    productId: '4401',
51844                    getMarketingShortText(detail) {
51845                        this.marketingShortText = detail.productIndex ?
51846                            this.config[detail.productIndex] :
51847                            null;
51848                    },
51849                    eventListeners: {
51850                        ['@listing-configurable-selection-changed.window'](event) {
51851                            if (this.productId == event.detail.productId) {
51852                                this.getMarketingShortText(event.detail);
51853                            }
51854
51855                        }
51856                    }
51857                }
51858            }
51859
51860            function initEditionText_4401() {
51861                var editionTextConfig = {};
51862                if (typeof window.initConfigurableSwatchOptions_4401 === "function") {
51863                    var fullConfig = window.initConfigurableSwatchOptions_4401().optionConfig
51864                    var editionTextConfig = fullConfig.edition;
51865                }
51866                return {
51867                    editionText: '',
51868                    config: editionTextConfig,
51869                    productId: '4401',
51870                    getEditionText(detail) {
51871                        this.editionText = detail.productIndex ?
51872                            this.config[detail.productIndex] :
51873                            null;
51874                    },
51875                    eventListeners: {
51876                        ['@listing-configurable-selection-changed.window'](event) {
51877                            if (this.productId == event.detail.productId) {
51878                                this.getEditionText(event.detail);
51879                            }
51880
51881                        }
51882                    }
51883                }
51884            }
51885        </script>
51885
51886                    </form>
51887                            
51888    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/4367/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="004646">
51889        <input name="form_key" type="hidden" value="7E4x690snX5itKIn">        <input type="hidden" name="product" value="4367">
51890                                    <a href="https://meiner.de/fmv_de/grundlegung-zur-metaphysik-der-sitten-kommentar-set-17126" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
51891            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-4367.window="$el.src = $event.detail" alt="Grundlegung zur Metaphysik der Sitten + Kommentar (Set)" title="Grundlegung zur Metaphysik der Sitten + Kommentar (Set)" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787346462.png" :style="{
51892                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
51893                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
51894            }">
51895                    </a>
51896        <div class="product-info flex flex-col flex-grow ">
51897                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
51898                                    <div class="mb-2 text-sm text-gray-500 font-medium">
51899                                                                                    <a href="https://meiner.de/fmv_de/person/Immanuel-Kant-3609/" class="mb-2">
51900                                    Immanuel Kant                                                                    </a>
51901                                                                    <span>|</span>
51902                                                                                            <a href="https://meiner.de/fmv_de/person/Klaus-Steigleder-13237/" class="mb-2">
51903                                    Klaus Steigleder                                                                    </a>
51904                                                                                                                                    </div>
51905                                <a class="product-item-link" href="https://meiner.de/fmv_de/grundlegung-zur-metaphysik-der-sitten-kommentar-set-17126">
51906                    Grundlegung zur Metaphysik der Sitten + Kommentar (Set)                </a>
51907                            </div>
51908
51909            <div x-data="initEditionText_4367()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
51910                <!-- Marketing short text -->
51911                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
51912                </div>
51913            </div>
51914
51915                            <div class="py-1 grid  mb-4 ">
51916                    
51917<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_4367" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":4367,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":0,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvZm12X2RlL2hlZ2VsLXdpc3NlbnNjaGFmdC1kZXItbG9naWstYmFuZC0xLTItMTg5MjA~","childProducts":[],"childProductsAlertStatus":[],"indexMapping":"{}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":false,"productIdentifier":4367,"availabilityMessages":{"4367":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"4367":{"status":0}}}'>
51918    
51919    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
51920        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
51921        <span x-html="optionsLabelText"></span>
51922    </p>
51923</div>                </div>
51924            
51925                                        
51926                                                    <div class="pagebuilder-home-hidden">
51927                    <div class="mb-2 relative">
51928                        <div class="swatch-option w-fit relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit border-gray-100 ring ring-primary/50 ring-2">
51929                            <div>
51930                                <div class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true">Kartoniert</div>
51931                                                            </div>
51932                        </div>
51933                    </div>
51934                </div>
51935                        <div class="meta py-4 pagebuilder-home-hidden">
51936                <div x-data="initMarketingShortText_4367()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
51937                    <!-- Marketing short text -->
51938                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
51939                    </div>
51940
51941                    <!-- Short description -->
51942                                                        </div>
51943
51944                <!-- Series  -->
51945                
51946                
51947                                                    <div class="mb-1">
51948                        <span x-data="initEditionText_4367()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
51949                            <!-- Marketing short text -->
51950                            <span class="edition-text" x-html="editionText"></span>&nbsp;2024, XLI, 354                        </span>
51951                    </div>
51952                
51953                                    <div class="mb-1">
51954                        <span>ISBN: </span>
51955                        <span>978-3-7873-4646-2</span>
51956                    </div>
51957                            </div>
51958            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
51959                
51960                <div class="justify-end" x-data="initPriceBox()" @update-prices-4367.window="updatePrice($event.detail);">
51961                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="4367" data-price-box="product-id-4367">
51962    <span x-data x-id="['product\u002Dprice\u002D4367']" class="price-container price-final_price tax weee">
51963            <span :id="$id('product\u002Dprice\u002D4367')" data-price-amount="34.9" data-price-type="finalPrice" class="price-wrapper "><span class="price">34,90&nbsp;&euro;</span></span>
51964        </span>
51965
51966</div>                </div>
51967
51968                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
51969                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Grundlegung zur Metaphysik der Sitten + Kommentar (Set)" aria-label="In den Warenkorb Grundlegung zur Metaphysik der Sitten + Kommentar (Set)" data-addto="cart">
51970                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
51971  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
51972</svg>
51973                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
51974                                        In den Warenkorb                                    </span>
51975                                </button>
51976                                                                                                                    
51977<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(4367)" aria-label="Zur Wunschliste hinzuf&uuml;gen Grundlegung zur Metaphysik der Sitten + Kommentar (Set)" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
51978    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
51979  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
51980</svg>
51981</button>
51982                                    </div>
51983            </div>
51984        </div>
51985        
51985<script>
51986            function initMarketingShortText_4367() {
51987                var marketingShortTextConfig = {};
51988                if (typeof window.initConfigurableSwatchOptions_4367 === "function") {
51989                    var fullConfig = window.initConfigurableSwatchOptions_4367().optionConfig
51990                    var marketingShortTextConfig = fullConfig.marketing_short_text;
51991                }
51992                return {
51993                    marketingShortText: '',
51994                    config: marketingShortTextConfig,
51995                    productId: '4367',
51996                    getMarketingShortText(detail) {
51997                        this.marketingShortText = detail.productIndex ?
51998                            this.config[detail.productIndex] :
51999                            null;
52000                    },
52001                    eventListeners: {
52002                        ['@listing-configurable-selection-changed.window'](event) {
52003                            if (this.productId == event.detail.productId) {
52004                                this.getMarketingShortText(event.detail);
52005                            }
52006
52007                        }
52008                    }
52009                }
52010            }
52011
52012            function initEditionText_4367() {
52013                var editionTextConfig = {};
52014                if (typeof window.initConfigurableSwatchOptions_4367 === "function") {
52015                    var fullConfig = window.initConfigurableSwatchOptions_4367().optionConfig
52016                    var editionTextConfig = fullConfig.edition;
52017                }
52018                return {
52019                    editionText: '',
52020                    config: editionTextConfig,
52021                    productId: '4367',
52022                    getEditionText(detail) {
52023                        this.editionText = detail.productIndex ?
52024                            this.config[detail.productIndex] :
52025                            null;
52026                    },
52027                    eventListeners: {
52028                        ['@listing-configurable-selection-changed.window'](event) {
52029                            if (this.productId == event.detail.productId) {
52030                                this.getEditionText(event.detail);
52031                            }
52032
52033                        }
52034                    }
52035                }
52036            }
52037        </script>
52037
52038                    </form>
52039                            
52040    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/40010/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="004445">
52041        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="40010">
52042                                    <a href="https://meiner.de/fmv_de/den-anfang-denken-ba-nde-i-ii-set-18000" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
52043            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-40010.window="$el.src = $event.detail" alt="Den Anfang denken B&auml;nde I-II (Set)" title="Den Anfang denken B&auml;nde I-II (Set)" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787344451.png" :style="{
52044                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
52045                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
52046            }">
52047                    </a>
52048        <div class="product-info flex flex-col flex-grow ">
52049                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
52050                                    <div class="mb-2 text-sm text-gray-500 font-medium">
52051                                                                                    <a href="https://meiner.de/fmv_de/person/Alfons-Reckermann-3623/" class="mb-2">
52052                                    Alfons Reckermann                                                                    </a>
52053                                                                                                                                    </div>
52054                                <a class="product-item-link" href="https://meiner.de/fmv_de/den-anfang-denken-ba-nde-i-ii-set-18000">
52055                    Den Anfang denken B&auml;nde I-II (Set)                </a>
52056                            </div>
52057
52058            <div x-data="initEditionText_40010()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
52059                <!-- Marketing short text -->
52060                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
52061                </div>
52062            </div>
52063
52064                            <div class="py-1 grid  mb-4 ">
52065                    
52066<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_40010" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":40010,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":0,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":[],"childProductsAlertStatus":[],"indexMapping":"{}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":false,"productIdentifier":40010,"availabilityMessages":{"40010":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"40010":{"status":0}}}'>
52067    
52068    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
52069        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
52070        <span x-html="optionsLabelText"></span>
52071    </p>
52072</div>                </div>
52073            
52074                                        
52075                                                    <div class="pagebuilder-home-hidden">
52076                    <div class="mb-2 relative">
52077                        <div class="swatch-option w-fit relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit border-gray-100 ring ring-primary/50 ring-2">
52078                            <div>
52079                                <div class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true">Gebunden</div>
52080                                                            </div>
52081                        </div>
52082                    </div>
52083                </div>
52084                        <div class="meta py-4 pagebuilder-home-hidden">
52085                <div x-data="initMarketingShortText_40010()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
52086                    <!-- Marketing short text -->
52087                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
52088                    </div>
52089
52090                    <!-- Short description -->
52091                                                        </div>
52092
52093                <!-- Series  -->
52094                
52095                
52096                                                    <div class="mb-1">
52097                        <span x-data="initEditionText_40010()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
52098                            <!-- Marketing short text -->
52099                            <span class="edition-text" x-html="editionText"></span>&nbsp;2025, 2 B&auml;nde, zusammen 592 Seiten                        </span>
52100                    </div>
52101                
52102                                    <div class="mb-1">
52103                        <span>ISBN: </span>
52104                        <span>978-3-7873-4445-1</span>
52105                    </div>
52106                            </div>
52107            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
52108                
52109                <div class="justify-end" x-data="initPriceBox()" @update-prices-40010.window="updatePrice($event.detail);">
52110                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="40010" data-price-box="product-id-40010">
52111    <span x-data x-id="['product\u002Dprice\u002D40010']" class="price-container price-final_price tax weee">
52112            <span :id="$id('product\u002Dprice\u002D40010')" data-price-amount="39.9" data-price-type="finalPrice" class="price-wrapper "><span class="price">39,90&nbsp;&euro;</span></span>
52113        </span>
52114
52115</div>                </div>
52116
52117                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
52118                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Den Anfang denken B&auml;nde I-II (Set)" aria-label="In den Warenkorb Den Anfang denken B&auml;nde I-II (Set)" data-addto="cart">
52119                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
52120  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
52121</svg>
52122                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
52123                                        In den Warenkorb                                    </span>
52124                                </button>
52125                                                                                                                    
52126<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(40010)" aria-label="Zur Wunschliste hinzuf&uuml;gen Den Anfang denken B&auml;nde I-II (Set)" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
52127    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
52128  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
52129</svg>
52130</button>
52131                                    </div>
52132            </div>
52133        </div>
52134        
52134<script>
52135            function initMarketingShortText_40010() {
52136                var marketingShortTextConfig = {};
52137                if (typeof window.initConfigurableSwatchOptions_40010 === "function") {
52138                    var fullConfig = window.initConfigurableSwatchOptions_40010().optionConfig
52139                    var marketingShortTextConfig = fullConfig.marketing_short_text;
52140                }
52141                return {
52142                    marketingShortText: '',
52143                    config: marketingShortTextConfig,
52144                    productId: '40010',
52145                    getMarketingShortText(detail) {
52146                        this.marketingShortText = detail.productIndex ?
52147                            this.config[detail.productIndex] :
52148                            null;
52149                    },
52150                    eventListeners: {
52151                        ['@listing-configurable-selection-changed.window'](event) {
52152                            if (this.productId == event.detail.productId) {
52153                                this.getMarketingShortText(event.detail);
52154                            }
52155
52156                        }
52157                    }
52158                }
52159            }
52160
52161            function initEditionText_40010() {
52162                var editionTextConfig = {};
52163                if (typeof window.initConfigurableSwatchOptions_40010 === "function") {
52164                    var fullConfig = window.initConfigurableSwatchOptions_40010().optionConfig
52165                    var editionTextConfig = fullConfig.edition;
52166                }
52167                return {
52168                    editionText: '',
52169                    config: editionTextConfig,
52170                    productId: '40010',
52171                    getEditionText(detail) {
52172                        this.editionText = detail.productIndex ?
52173                            this.config[detail.productIndex] :
52174                            null;
52175                    },
52176                    eventListeners: {
52177                        ['@listing-configurable-selection-changed.window'](event) {
52178                            if (this.productId == event.detail.productId) {
52179                                this.getEditionText(event.detail);
52180                            }
52181
52182                        }
52183                    }
52184                }
52185            }
52186        </script>
52186
52187                    </form>
52188                            
52189    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/15514/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="004436">
52190        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="15514">
52191                                    <a href="https://meiner.de/fmv_de/kant-metaphysik-der-sitten-teil-1-2-16088" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
52192            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-15514.window="$el.src = $event.detail" alt="Kant: Metaphysik der Sitten. Teil 1+2" title="Kant: Metaphysik der Sitten. Teil 1+2" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787344369.png" :style="{
52193                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
52194                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
52195            }">
52196                    </a>
52197        <div class="product-info flex flex-col flex-grow ">
52198                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
52199                                    <div class="mb-2 text-sm text-gray-500 font-medium">
52200                                                                                    <a href="https://meiner.de/fmv_de/person/Immanuel-Kant-3609/" class="mb-2">
52201                                    Immanuel Kant                                                                    </a>
52202                                                                                                                                    </div>
52203                                <a class="product-item-link" href="https://meiner.de/fmv_de/kant-metaphysik-der-sitten-teil-1-2-16088">
52204                    Kant: Metaphysik der Sitten. Teil 1+2                </a>
52205                            </div>
52206
52207            <div x-data="initEditionText_15514()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
52208                <!-- Marketing short text -->
52209                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
52210                </div>
52211            </div>
52212
52213                            <div class="py-1 grid  mb-4 ">
52214                    
52215<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_15514" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":15514,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":0,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":[],"childProductsAlertStatus":[],"indexMapping":"{}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":false,"productIdentifier":15514,"availabilityMessages":{"15514":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"15514":{"status":0}}}'>
52216    
52217    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
52218        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
52219        <span x-html="optionsLabelText"></span>
52220    </p>
52221</div>                </div>
52222            
52223                                        
52224                                                    <div class="pagebuilder-home-hidden">
52225                    <div class="mb-2 relative">
52226                        <div class="swatch-option w-fit relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit border-gray-100 ring ring-primary/50 ring-2">
52227                            <div>
52228                                <div class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true">Kartoniert</div>
52229                                                            </div>
52230                        </div>
52231                    </div>
52232                </div>
52233                        <div class="meta py-4 pagebuilder-home-hidden">
52234                <div x-data="initMarketingShortText_15514()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
52235                    <!-- Marketing short text -->
52236                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
52237                    </div>
52238
52239                    <!-- Short description -->
52240                                                        </div>
52241
52242                <!-- Series  -->
52243                
52244                
52245                                                    <div class="mb-1">
52246                        <span x-data="initEditionText_15514()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
52247                            <!-- Marketing short text -->
52248                            <span class="edition-text" x-html="editionText"></span>&nbsp;2023, 2 B&auml;nde zusammen 520 Seiten                        </span>
52249                    </div>
52250                
52251                                    <div class="mb-1">
52252                        <span>ISBN: </span>
52253                        <span>978-3-7873-4436-9</span>
52254                    </div>
52255                            </div>
52256            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
52257                
52258                <div class="justify-end" x-data="initPriceBox()" @update-prices-15514.window="updatePrice($event.detail);">
52259                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="15514" data-price-box="product-id-15514">
52260    <span x-data x-id="['product\u002Dprice\u002D15514']" class="price-container price-final_price tax weee">
52261            <span :id="$id('product\u002Dprice\u002D15514')" data-price-amount="36.9" data-price-type="finalPrice" class="price-wrapper "><span class="price">36,90&nbsp;&euro;</span></span>
52262        </span>
52263
52264</div>                </div>
52265
52266                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
52267                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Kant: Metaphysik der Sitten. Teil 1+2" aria-label="In den Warenkorb Kant: Metaphysik der Sitten. Teil 1+2" data-addto="cart">
52268                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
52269  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
52270</svg>
52271                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
52272                                        In den Warenkorb                                    </span>
52273                                </button>
52274                                                                                                                    
52275<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(15514)" aria-label="Zur Wunschliste hinzuf&uuml;gen Kant: Metaphysik der Sitten. Teil 1+2" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
52276    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
52277  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
52278</svg>
52279</button>
52280                                    </div>
52281            </div>
52282        </div>
52283        
52283<script>
52284            function initMarketingShortText_15514() {
52285                var marketingShortTextConfig = {};
52286                if (typeof window.initConfigurableSwatchOptions_15514 === "function") {
52287                    var fullConfig = window.initConfigurableSwatchOptions_15514().optionConfig
52288                    var marketingShortTextConfig = fullConfig.marketing_short_text;
52289                }
52290                return {
52291                    marketingShortText: '',
52292                    config: marketingShortTextConfig,
52293                    productId: '15514',
52294                    getMarketingShortText(detail) {
52295                        this.marketingShortText = detail.productIndex ?
52296                            this.config[detail.productIndex] :
52297                            null;
52298                    },
52299                    eventListeners: {
52300                        ['@listing-configurable-selection-changed.window'](event) {
52301                            if (this.productId == event.detail.productId) {
52302                                this.getMarketingShortText(event.detail);
52303                            }
52304
52305                        }
52306                    }
52307                }
52308            }
52309
52310            function initEditionText_15514() {
52311                var editionTextConfig = {};
52312                if (typeof window.initConfigurableSwatchOptions_15514 === "function") {
52313                    var fullConfig = window.initConfigurableSwatchOptions_15514().optionConfig
52314                    var editionTextConfig = fullConfig.edition;
52315                }
52316                return {
52317                    editionText: '',
52318                    config: editionTextConfig,
52319                    productId: '15514',
52320                    getEditionText(detail) {
52321                        this.editionText = detail.productIndex ?
52322                            this.config[detail.productIndex] :
52323                            null;
52324                    },
52325                    eventListeners: {
52326                        ['@listing-configurable-selection-changed.window'](event) {
52327                            if (this.productId == event.detail.productId) {
52328                                this.getEditionText(event.detail);
52329                            }
52330
52331                        }
52332                    }
52333                }
52334            }
52335        </script>
52335
52336                    </form>
52337                            
52338    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/3985/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="004433">
52339        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="3985">
52340                                    <a href="https://meiner.de/fmv_de/methoden-im-philosophie-und-ethikunterricht-band-1-4-im-set-16078" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
52341            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-3985.window="$el.src = $event.detail" alt="Methoden im Philosophie- und Ethikunterricht Band 1-4 im Set" title="Methoden im Philosophie- und Ethikunterricht Band 1-4 im Set" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787344338.png" :style="{
52342                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
52343                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
52344            }">
52345                    </a>
52346        <div class="product-info flex flex-col flex-grow ">
52347                        <div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
52348                                    <div class="mb-2 text-sm text-gray-500 font-medium">
52349                                                                                    <a href="https://meiner.de/fmv_de/person/Jorg-Peters-3207/" class="mb-2">
52350                                    J&ouml;rg Peters                                                                    </a>
52351                                                                    <span>|</span>
52352                                                                                            <a href="https://meiner.de/fmv_de/person/Martina-Peters-3206/" class="mb-2">
52353                                    Martina Peters                                                                            (Hrsg.)
52354                                                                    </a>
52355                                                                                                                                    </div>
52356                                <a class="product-item-link" href="https://meiner.de/fmv_de/methoden-im-philosophie-und-ethikunterricht-band-1-4-im-set-16078">
52357                    Methoden im Philosophie- und Ethikunterricht Band 1-4 im Set                </a>
52358                            </div>
52359
52360            <div x-data="initEditionText_3985()" x-bind="eventListeners" class="text-center hidden pagebuilder-home-visible mb-4">
52361                <!-- Marketing short text -->
52362                <div class="edition-text" x-html="editionText" :class="{ 'hidden': editionText == '' }">
52363                </div>
52364            </div>
52365
52366                            <div class="py-1 grid  mb-4 ">
52367                    
52368<div x-data="stockStatusCategoryData" @configurable-select-changed.window="configurableSelectChanged" id="stock_notification_3985" class="text-right relative pagebuilder-home-hidden order-first" data-config='{"productId":3985,"isAvailable":true,"isShowAlert":false,"isOutOfStockConfigurable":true,"attributesCount":0,"encodedUrl":"aHR0cHM6Ly9tZWluZXIuZGUvP19fX2Zyb21fc3RvcmU9ZGV1dHNjaCZfX19zdG9yZT1lbmdsaXNoJmNQYXRoPTRfNDAmY29udGVudD1yZWNoZXJjaGUma2F0c2VpdGU9MS8~","childProducts":[],"childProductsAlertStatus":[],"indexMapping":"{}","mutationStockSubscription":"mutation AmxnotifStockSubscribe($input: AmxnotifSubscribeInput) {\n                        AmxnotifStockSubscribe(input: $input) {\n                            response_message\n                        }\n                   }","isInStock":true,"isConfigurable":false,"productIdentifier":3985,"availabilityMessages":{"3985":"Lieferbar innerhalb von 3-5 Tagen"},"openAccess":{"3985":{"status":0}}}'>
52369    
52370    <p class="flex items-center align-middle available gap-x-2 stock mb-0 ml-1" :class="modeClass" data-grid="" data-list="1" :title="title">
52371        <span class="w-3 h-3 rounded-full flex-shrink-0 shrink-0" :class="optionsAdditionalClass"></span>
52372        <span x-html="optionsLabelText"></span>
52373    </p>
52374</div>                </div>
52375            
52376                                        
52377                                                    <div class="pagebuilder-home-hidden">
52378                    <div class="mb-2 relative">
52379                        <div class="swatch-option w-fit relative cursor-pointer select-none product-option-value-label form-input px-2 py-2 flex border justify-center text-center min-w-[15rem] min-h-fit border-gray-100 ring ring-primary/50 ring-2">
52380                            <div>
52381                                <div class="pointer-events-none select-none whitespace-nowrap" aria-hidden="true">Kartoniert</div>
52382                                                            </div>
52383                        </div>
52384                    </div>
52385                </div>
52386                        <div class="meta py-4 pagebuilder-home-hidden">
52387                <div x-data="initMarketingShortText_3985()" x-bind="eventListeners" class="pb-4 hidden has-[:not(.hidden)]:block">
52388                    <!-- Marketing short text -->
52389                    <div class="mb-1 font-bold marketing-short-text" x-html="marketingShortText" :class="{ 'hidden': marketingShortText == '' }">
52390                    </div>
52391
52392                    <!-- Short description -->
52393                                                        </div>
52394
52395                <!-- Series  -->
52396                                    <div class="mb-1">
52397                        <span class="sr-only">Reihe:</span>
52398                        <a href="https://meiner.de/fmv_de/programm/reihen/methoden-im-philosophie-und-ethikunterricht">
52399                            <span>Methoden im Philosophie- und Ethikunterricht</span>
52400                        </a>
52401                                            </div>
52402                
52403                
52404                                                    <div class="mb-1">
52405                        <span x-data="initEditionText_3985()" x-bind="eventListeners" :class="{ 'hidden': editionText == '', 'inline': editionText != '' }">
52406                            <!-- Marketing short text -->
52407                            <span class="edition-text" x-html="editionText"></span>&nbsp;4 B&auml;nde zusammen 852 Seiten                        </span>
52408                    </div>
52409                
52410                                    <div class="mb-1">
52411                        <span>ISBN: </span>
52412                        <span>978-3-7873-4433-8</span>
52413                    </div>
52414                            </div>
52415            <div class="md:flex md:justify-between pagebuilder-home-hidden md:flex-col md:gap-4">
52416                
52417                <div class="justify-end" x-data="initPriceBox()" @update-prices-3985.window="updatePrice($event.detail);">
52418                    <div class="price-box price-final_price" data-role="priceBox" data-product-id="3985" data-price-box="product-id-3985">
52419    <span x-data x-id="['product\u002Dprice\u002D3985']" class="price-container price-final_price tax weee">
52420            <span :id="$id('product\u002Dprice\u002D3985')" data-price-amount="59.9" data-price-type="finalPrice" class="price-wrapper "><span class="price">59,90&nbsp;&euro;</span></span>
52421        </span>
52422
52423</div>                </div>
52424
52425                <div class="flex flex-wrap items-center pagebuilder-home-hidden mt-4 md:mt-0">
52426                                                                                                                            <button class="w-auto btn btn-primary justify-center text-sm mr-auto" title="In den Warenkorb Methoden im Philosophie- und Ethikunterricht Band 1-4 im Set" aria-label="In den Warenkorb Methoden im Philosophie- und Ethikunterricht Band 1-4 im Set" data-addto="cart">
52427                                    <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="2" stroke="currentColor" class="h-6 w-6 border-current inline" width="25" height="25" aria-hidden="true">
52428  <path stroke-linecap="round" stroke-linejoin="round" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 
524280 014 0z"></path>
52429</svg>
52430                                    <span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline">
52431                                        In den Warenkorb                                    </span>
52432                                </button>
52433                                                                                                                    
52434<button x-data="initWishlist()" x-defer="intersect" @click.prevent="addToWishlist(3985)" aria-label="Zur Wunschliste hinzuf&uuml;gen Methoden im Philosophie- und Ethikunterricht Band 1-4 im Set" type="button" class="rounded-full w-9 h-9 bg-gray-200 p-0 border-0 inline-flex flex-shrink-0 items-center justify-center text-gray-500 hover:text-red-600 ml-2" data-addto="wishlist">
52435    <svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" fill="currentColor" width="20" height="20" aria-hidden="true">
52436  <path fill-rule="evenodd" d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z" clip-rule="evenodd"></path>
52437</svg>
52438</button>
52439                                    </div>
52440            </div>
52441        </div>
52442        
52442<script>
52443            function initMarketingShortText_3985() {
52444                var marketingShortTextConfig = {};
52445                if (typeof window.initConfigurableSwatchOptions_3985 === "function") {
52446                    var fullConfig = window.initConfigurableSwatchOptions_3985().optionConfig
52447                    var marketingShortTextConfig = fullConfig.marketing_short_text;
52448                }
52449                return {
52450                    marketingShortText: '',
52451                    config: marketingShortTextConfig,
52452                    productId: '3985',
52453                    getMarketingShortText(detail) {
52454                        this.marketingShortText = detail.productIndex ?
52455                            this.config[detail.productIndex] :
52456                            null;
52457                    },
52458                    eventListeners: {
52459                        ['@listing-configurable-selection-changed.window'](event) {
52460                            if (this.productId == event.detail.productId) {
52461                                this.getMarketingShortText(event.detail);
52462                            }
52463
52464                        }
52465                    }
52466                }
52467            }
52468
52469            function initEditionText_3985() {
52470                var editionTextConfig = {};
52471                if (typeof window.initConfigurableSwatchOptions_3985 === "function") {
52472                    var fullConfig = window.initConfigurableSwatchOptions_3985().optionConfig
52473                    var editionTextConfig = fullConfig.edition;
52474                }
52475                return {
52476                    editionText: '',
52477                    config: editionTextConfig,
52478                    productId: '3985',
52479                    getEditionText(detail) {
52480                        this.editionText = detail.productIndex ?
52481                            this.config[detail.productIndex] :
52482                            null;
52483                    },
52484                    eventListeners: {
52485                        ['@listing-configurable-selection-changed.window'](event) {
52486                            if (this.productId == event.detail.productId) {
52487                                this.getEditionText(event.detail);
52488                            }
52489
52490                        }
52491                    }
52492                }
52493            }
52494        </script>
52494
52495                    </form>
52496                            
52497    <form method="post" action="https://meiner.de/fmv_de/checkout/cart/add/uenc/%25uenc%25/product/3983/" class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full " data-sku="004412">
52498        <input name="form_key" type="hidden" value="43ommc63NaHCiY3E">        <input type="hidden" name="product" value="3983">
52499                                    <a href="https://meiner.de/fmv_de/hegels-wissenschaft-der-logik-ein-dialogischer-kommentar-band-1-3-14138" class="relative product photo product-item-photo block self-center mx-auto mb-3 " tabindex="-1">
52500            <img class="hover:shadow-sm object-contain" loading="lazy" x-data="" @update-gallery-3983.window="$el.src = $event.detail" alt="Hegels Wissenschaft der Logik. Ein dialogischer Kommentar. Band 1-3" title="Hegels Wissenschaft der Logik. Ein dialogischer Kommentar. Band 1-3" src="https://meiner.de/media/catalog/product/cache/011107ce763a212d2dc88dc51173c5c0/9/7/9783787344123.png" :style="{
52501                width: ($data.isWidget === undefined || $data.isWidget === true) ? '240px' : '',
52502                height: ($data.isWidget === undefined || $data.isWidget === true) ? '300px' : ''
52503            }">
52504                    </a>
52505        <div class="product-info flex flex-col flex-grow ">
52506    

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.