Aviator Atlantik

Aviator Film 2004

Die Brille head wear die Größe breit, ist in metall und hat perish Form vollrand für einen großartigen Stil. Um Ihre Korrekturlinsen auszuwählen, müssen Sie Gläser zu meiner sicht wählen direkt auf dem Produktblatt des Rahmens aus, den Sie ausrüsten möchten. Eine Rechnung wird Ihnen für jede Bestellung eins optischen Hilfsmittel mitgegeben. Ein Etui darüber hinaus ein Mikrofasertuch, sowie alle Zubehöre dieser Marke Ray-Ban, sind oftmals mit diesem Artikel gesendet.

MYKITA bietet eine breite Palette von zeitgemäßen Formen bis hin zu gerundeten oder aber rechteckigen Interpretationen das Klassikers. Wären de uma nicht die Fledermaus-Spezialisten von NATURSCHAUSPIEL. in, die beim Streifzug durch die Dunkelheit die ebenso scheuen wie schnellen Tierchen unfreiwillig vor living area Vorhang holen. Ihnen wird relevante Werbung angezeigt und Ihr Surfverhalten” “dient der themenbasierten, wirklich nicht personenbezogenen Analyse. Es gibt 4 Größen der Außenschale in beiden Versionen, die mit Hilfe kklk Airoh-Windkanals entworfen wurde, um das beste Design und pass away beste Leistung zu entwickeln. Besondere Präsent wurde der Aerodynamik gewidmet, um family room Helm auch unter hohen Geschwindigkeiten gedrungen zu halten, ebenso der Thermodynamik, um die Wärmeregulierung zu optimieren. Die Aufgabe besteht nicht darin, einmal zu gewinnen, sondern es letztens wieder zu realisieren.

Aviator Alligator Full Minimize Matt

Schwarzes, genarbtes, pflanzlich olivenblattgegerbtes Naturleder mit Dornschließe aus nachhaltigen Ressourcen. Sie können diese Ray-Ban Sonnenbrillen mit Einstärke- ou Gleitsichtgläser zum besondersten Preis bei Visiofactory. com bestellen. Luxottica wird Ihre personenbezogenen Daten (“Bild”) verarbeiten, falls Sie expire Funktion “Virtual Mirror” auf Ihrem Gerät nutzen möchten. Die Verarbeitung dieses Bildes erfolgt durch Luxottica, um die Unterprogramm “Virtual Mirror” zu ermöglichen und Ihnen die richtige Passform der Gläser offenbaren zu können aviator.

Der Newsletter-Versand erfolgt entsprechend unserer Datenschutzerklärung und zur Bewerbung von Produkten und Services der MYKITA GmbH und ihrer verbundenen Unternehmen (Details finden Sie hier). REGISTRIEREN UND 10% ERHALTEN Mit dem MYKITA Publication werden Sie Modul der der MYKITA Community und erlangen vor allen sonstigen Informationen zu Activities, Design und exklusiven Sales-Aktionen aus dem MYKITA HAUS. Diese Modelle sind dieser Goldstandard des Awesome – eine beliebte Unisexform, die einander als Korrektur- oder Sonnenbrille eignet.

Canvas Umhängetasche Herren – Pass Away Ideale Business-tasche

Bei der Bearbeitung Ihres Anschaffens zeigen wir Ihnen die verfügbaren Versandarten, die Kosten darüber hinaus das Lieferdatum Ihrer Bestellung an. Die 8 Lufteinlässe und Spoiler mit integrierten Extraktoren machen expire Montage des Aviator III auch unter den extremsten Einsatzbedingungen komfortabel, ebenso auf welche art das innovative AHS (Airoh Hydration System), das in dieses EPS integriert ist. Das Schwierige ist auch, nicht einmal zu gewinnen, sondern es immer wieder zu tun.”

Wenn Sie nach 1 neuen Tasche suchen, um Ihre Sachen organisiert zu stoppen, suchen Sie nicht weiter! Eine Greenburry Aviator Tasche ist eine funktionelle und schicke Lösung für unterwegs, die ihren Laptop computer, ihr Tablet, du Telefon und weitere Dinge des täglichen Bedarfs mitnehmen müssen. Unsere 16oz Fabric Taschen sind inside vielen verschiedenen Stilen als Umhängetasche, Handtasche oder Rucksack erhältlich und für Herren und Damen geeignet.

Links Zu Weiteren Informationen

Luxottica hat einen Datenschutzbeauftragten für die gesamte Gruppe benannt, der unter der Destination kontaktiert werden koennte. Bitte klicken Sie auf den Hyperlink in der E-Mail, um Ihre Newsletter-Anmeldung abzuschließen. Ihre Einwilligung in den Paketdienst ist jederzeit über Klicken des inside jedem Newsletter enthaltenen Abmelde-Links möglich.

Brezeln, Herzen oder aber Äpfel stehen für einzelne Themen wie Deutschland, Liebe oder New York. Auch komische, humorvolle Angelegenheiten und Momente sind immer wieder Bestandteil seiner Kunst und lassen living area Betrachter einfach nur lächeln. Kaum über glauben, dass bislang niemand dieses einzigartige, an span­nenden Ereig­nissen und unzäh­ligen Anekdoten so reiche auf welche weise bizarre Leben verfilmt hat. Jetzt wagt sich Martin Scorsese, der immer wieder aus »normalen« Stoffen Film­my­then schmiedet, the das Leben das Mannes, der bereits in jungen Jahren selbst zum Mythos geworden war. Gemeinsam” “mit seinem Dreh­buch­autor Ruben Logan, der nun das Script zu Gladiator und The final Samurai schrieb, gehts es vor allem um Hughes’ Glanzzeit, die Jahre zwischen 1923 und 1947. Um von living room besten Leistungen über profitieren, empfehlen unsereins, den Laden in der Nähe Ihres Standorts zu besuchen.

“aviator” Auf Weiteren Sprachen Nachschlagen

Die Canvas Umhängetasche Herren ist pass away ideale Tasche für den modernen Lady. Diese Tasche ist auch aus 16oz Painting mit Lederbesatz within braunem Leder gefertigt und sieht ausgesprochen elegant aus. Die Tasche ist ausgesprochen geräumig und offeriert Platz für most Ihre wichtigen Gimmick. Die Canvas Umhängetasche Herren ist darüber hinaus sehr bequem über tragen und Sie können sie ganz einfach über der Schulter tragen. Die Painting Tasche Vintage ist eine hochwertige und langlebige Tasche, die aus 16oz Painting mit Lederbesatz hergestellt wird.

In die erste Kategorie fallen pass away Fledermäuse des Naturparks Obst-Hügel-Land. Unser Ingenuity” “Nähe ist für Flieger relativ, dennoch ist echt uns die Nähe zu unseren Kunden wichtig. Dieser Film des Aroser Berufsfotografen, Fliegers und Bergsteigers Ruedi Homberger liegt seit 2008 inner DVD-Version vor. Nach der kostenlosen Anmeldung können registrierte Nutzer zusätzlich einen kostenpflichtigen FILMDIENST PLUS-Zugang zu dem Jahrespreis von 24, 90 EUR abschließen und damit im or her FILMDIENST-Archiv recherchieren. Allein der analytische ebenso auch filmgeschichtlich anspruchsvolle Audiokommentar des Regisseurs, der Cutterin Thelma Schoonmaker und dieses Produzenten Michael Mann ist für sich schon auszeichnungswürdig. Des weiteren enthält pass away Edition ein Function mit einer im Film nicht gezeigten Szene (3 Min. ).

Der Artikel Aviator Wurde In Living Area Warenkorb Gelegt

Das 16oz Canvas ist natürlich extrem robust darüber hinaus durch die Lederbesätze auch sehr langlebig. Die gepolsterten Schulterriemen sorgen für den angenehmen Tragekomfort, darüber hinaus wenn du ihn vollgestopft hast. Der Rucksack Canvas Retro ist in verschiedenen Farben erhältlich sowie eignet sich sowohl für die Uni als auch für das Büro oder aber” “pass away Freizeit. So hast du immer alles bei dir ebenso musst dich nie wieder über vergessene Sachen ärgern. Der Aviator III hebt das Niveau dieses Wettbewerbs und definiert die Standards eins Offroad-Helms neu. Die Schale, die inside Carbon (Carbon 3K) Version ausschließlich für die Carbon-Grafik erhältlich ist, bietet pass away edle Kohlefaser (HPC Carbon) für perish anderen Grafikvarianten.

Sie sind für ihre Genauigkeit darüber hinaus Zuverlässigkeit bekannt, seemed to be sie zu 1er beliebten Wahl unter Piloten und Luftfahrtenthusiasten macht. Das Flugbuch ist hochwertig verarbeitet und besteht aus einem schwarzen Leineneinband mit silberfarbener Prägung (inkl. Fadenbindung & Kapitalband). Zu diesem Produkt gehören dieses Etui und ein Mikrofasertuch sowie allesamt anderen Zubehörteile dieser Marke Randolph. Wenn Sie Fragen zur Auswahl Ihrer Korrekturgläser haben, wenden Sie sich an mir. Ein” “qualifizierter Optiker kann Sie beraten, damit Sie die Brille haben, die Ihnen living room größten Komfort offeriert.

“aviator

Die Tasche ist auch besonders leicht zu” “tragen und hat dieses verstellbares Schulterriemen. Die meisten angebotenen Dvd disks haben den Regionalcode 2 für Continente europeo und das Bildformat PAL. Wir bieten aber auch Veröffentlichungen aus den UNITED STATES an, die i am NTSC-Format und durch dem Ländercode 1 auf den Markt kommen. So hat The Aviator absolut das Tempo ebenso die visuelle Ereignis, jene Wildheit sowie entschei­denden zehn Prozent »over the top«, die ein solcher Film braucht, um emotio­nale Abgründe aufzu­reißen, und den Zuschauer zu fesseln.

Swinging, Singing, Rocking Appear Art von Education Heck ist seit vielen Jahren wirklich nicht nur in den USA, sondern darüber hinaus in Deutschland ein Markenzeichen. Sein Leitspruch „The World will go Ed Heck“ zeigt auch schon seinen Erfolgskurs, den er auf der ganzen Welt vollzieht. Der Künstler entwickelte seine Kunst aus seiner Leidenschaft für Tonkunst und für perish prähistorische Tier- darüber hinaus Pflanzenkunde. Sein Lebensstil, simpel und schlicht, entspricht auch seinem Malstil, der einander durch eine Reduktion auf die Grundstruktur mit einem Schuss pfiffigen Humor auszeichnet. Ed ist regelmäßig in Deutschland für Präsentationen und Ausstellungseröffnungen zu Gast. Seine Liebe zur Kunst und seine Hommagen an Pop-Art-Größen auf welche weise Andy Warhol drückt Ed Heck durch seine Icons aus.

Aviator Lb

“Sie suchen nach 1 stilvollen, praktischen Tasche für Ihre Geschäfts- oder Freizeitutensilien, allerdings sie sind allesamt so teuer. Mit der Greenburry Aviator Serie erhalten Sie eine trendsetzende Tasche, die Sie gerne in jeder Stadt mitnehmen werden. Hergestellt aus strapazierfähigem 16oz Cavas darüber hinaus in einem lässigen Stil geschnitten, preisbewusst und funktionell.

Mit ihrer geliebten unverwechselbar stilvollen Form und Farbe sind die coolen Taschen ein echter Blickfang. Für eine Tasche, die nicht über viel Platz einnimmt, aber dennoch allesamt wichtigen Dinge verstaut, ist eine Umhängetasche für Herren möglicherweise die beste Option für Sie. Unsere 16oz Cavas bieten dauerhafte Qualität und Haltbarkeit mit einem lässigen Stil. Wenn Sie bei der Suche aufgrund einer coolen ebenso lässigen Tasche für die Freizeit sind immer wieder, dann ist expire Greenburry Taschenserie AVIATOR genau das Richtige für Sie.

Aviator Douglas Dc-3 V 3 32 0 232 4 Automatik Uhr

Es sind diese zehn Prozent, die einen Film zum Meis­ter­werk machen – und zumindest in dem Kampf um vorige Perfek­tion darf person wohl eine Wahl­ver­wandt­schaft zwischen dem Film­ma­niac Scorsese und unserem »Spinner« Hughes vermuten. In Scorseses Variation dieses merk­wür­digen, komplexen ameri­ka­ni­schen Helden steckt auch etwas von den Boxern ebenso Mafia­gangs­tern, die im or her in früheren Aufnehmen portrai­tiert hat, von den Getrie­benen, Beses­senen… Seit 2009 ist natürlich 24Helmets. de spezialisiert auf die besten Marken für Helme, Motorradbekleidung und Ustensiles im Bereich welcher Custom Bike Szene, Cafe Racer, Scrambler, Harley-Davidson und Vespa. Wir suchen ständig nach den neuesten Trends und Produkten, von deren Qualität wir überzeugt sind, und die unseren Kunden Stil und Funktion bieten. Egal wo du hin willst, der Rucksack Canvas Vintage vonseiten Greenburry ist welcher ideale Begleiter.

Selbstverständlich sind immer wieder unsere Optiker mit vergnügen bereit, Ihnen bei der Wahl Ihrer Gläser oder unter offenen Fragen, über helfen. Wenn Sie auf “Bild aufnehmen” klicken, wird dieses Bild auf Einem Gerät gespeichert, und Luxottica wird keinen Zugriff darauf haben. Abonnieren Sie den kostenlosen Newsletter und verpassen Sie wenig Neuigkeit oder Aktion mehr von Kaufmann Shop. Bitte beachte, dass die Vokabeln in der Vokabelliste nur in diesem Browser zur Verfügung stehen. Sobald sie in den Vokabeltrainer übernommen wurden, sind sie auch auf anderen Geräten verfügbar. Akrobatische Flieger, die im Dunkeln dank Echolot mit living room Ohren sehen und eigentlich gerne im Verborgenen bleiben würden.

Aviator Douglas Dc-3 V 3 32 Zero 241 4 Automatik Uhr

Nach dem Zweck seines Kunststudiums an der New Yorker School of Aesthetic Arts (BFA) arbeitete er zunächst als Illustrator für dieses American Museum of Natural History, ebenfalls in New york city. Als Ed Heck einander zusammen mit einem Kollegen den Motion picture „Jurassic Park“ internet marketing Kino ansah, wurde ihm klar, dass er als Illustrator im kommenden digitalen Zeitalter genauso vom Aussterben bedroht war wie die Dinosaurier, die er tagtäglich zeichnete. So begann Ed, seine geliebten Dinosaurier und Figuren zu gestalten, mit deutlich mehr künstlerischer Freiheit. Diese Uhren sind für Piloten konzipiert und sein häufig in Luftfahrt verwendet. Sie besitzen in der Regel ein großes, leicht ablesbares Zifferblatt darüber hinaus ein robustes, langlebiges Design. Aviator Schweizer Fliegeruhren verfügen häufig über Chronographenfunktionen, die es dem Träger ermöglichen, Ereignisse über messen, und sind immer oft aus hochwertigen Materialien wie Edelstahl oder Titan gefertigt.

Die Umhängetaschen jeder AVIATOR Serie sind aus 16oz Canvas” “mit Lederbesatz in braunem Leder gefertigt. Dieses Material ist besonders robust und langlebig und wird daher auch bei anspruchsvollen Reisen gerne angewendet. Die Taschen sind immer wieder in verschiedenen Größen erhältlich und bieten somit genügend Platz für alle brauchbaren Utensilien. Dank ihrer Robustheit und Langlebigkeit kann sie problemlos auch an anspruchsvollen Zielen eingesetzt werden. Die verschiedenen Größen der Taschen offerieren darüber hinaus darüber hinaus genügend Platz für alle wichtigen Gimmick.

Aviator 3 Legend

Das Style der Tasche ist elegant und stilvoll und sie ist echt in verschiedenen Farben erhältlich. Die Tasche hat ein großes Hauptfach, zwei Reißverschlussfächer an der Vorderseite und ein verstellbares Schulterriemen. Die Painting Tasche Vintage ist eine sehr beliebte Tasche unter den Damen und Herren. Viele Menschen mögen die Tasche, von daher sie sehr so gut wie ist und das großes Hauptfach cap. Die Canvas Tasche Vintage ist auch sehr stylish sowie kann zu einigen verschiedenen Outfits getragen werden. Die Tasche ist in unterschiedliche Farben erhältlich, thus dass Sie einander für die Farbe entscheiden können, expire Ihnen am nützlichsten gefällt.

Diese Taschen sind aus hochwertigem 16oz Painting gefertigt und mit braunem Leder besetzt. Sie sind within verschiedenen Größen erhältlich und haben genügend Platz für almost all Ihre Sachen. Egal, ob Sie eine kleine Umhängetasche und einen großen Rucksack suchen – inside der AVIATOR Serie finden Sie garantiert die perfekte Tasche für Ihren Bedarf.

(function () { var searchreplace = (function () { 'use strict'; var Cell = function (initial) { var value = initial; var get = function () { return value; }; var set = function (v) { value = v; }; var clone = function () { return Cell(get()); }; return { get: get, set: set, clone: clone }; }; var global = tinymce.util.Tools.resolve('tinymce.PluginManager'); var global$1 = tinymce.util.Tools.resolve('tinymce.util.Tools'); function isContentEditableFalse(node) { return node && node.nodeType === 1 && node.contentEditable === 'false'; } function findAndReplaceDOMText(regex, node, replacementNode, captureGroup, schema) { var m; var matches = []; var text, count = 0, doc; var blockElementsMap, hiddenTextElementsMap, shortEndedElementsMap; doc = node.ownerDocument; blockElementsMap = schema.getBlockElements(); hiddenTextElementsMap = schema.getWhiteSpaceElements(); shortEndedElementsMap = schema.getShortEndedElements(); function getMatchIndexes(m, captureGroup) { captureGroup = captureGroup || 0; if (!m[0]) { throw new Error('findAndReplaceDOMText cannot handle zero-length matches'); } var index = m.index; if (captureGroup > 0) { var cg = m[captureGroup]; if (!cg) { throw new Error('Invalid capture group'); } index += m[0].indexOf(cg); m[0] = cg; } return [ index, index + m[0].length, [m[0]] ]; } function getText(node) { var txt; if (node.nodeType === 3) { return node.data; } if (hiddenTextElementsMap[node.nodeName] && !blockElementsMap[node.nodeName]) { return ''; } txt = ''; if (isContentEditableFalse(node)) { return '\n'; } if (blockElementsMap[node.nodeName] || shortEndedElementsMap[node.nodeName]) { txt += '\n'; } if (node = node.firstChild) { do { txt += getText(node); } while (node = node.nextSibling); } return txt; } function stepThroughMatches(node, matches, replaceFn) { var startNode, endNode, startNodeIndex, endNodeIndex, innerNodes = [], atIndex = 0, curNode = node, matchLocation = matches.shift(), matchIndex = 0; out: while (true) { if (blockElementsMap[curNode.nodeName] || shortEndedElementsMap[curNode.nodeName] || isContentEditableFalse(curNode)) { atIndex++; } if (curNode.nodeType === 3) { if (!endNode && curNode.length + atIndex >= matchLocation[1]) { endNode = curNode; endNodeIndex = matchLocation[1] - atIndex; } else if (startNode) { innerNodes.push(curNode); } if (!startNode && curNode.length + atIndex > matchLocation[0]) { startNode = curNode; startNodeIndex = matchLocation[0] - atIndex; } atIndex += curNode.length; } if (startNode && endNode) { curNode = replaceFn({ startNode: startNode, startNodeIndex: startNodeIndex, endNode: endNode, endNodeIndex: endNodeIndex, innerNodes: innerNodes, match: matchLocation[2], matchIndex: matchIndex }); atIndex -= endNode.length - endNodeIndex; startNode = null; endNode = null; innerNodes = []; matchLocation = matches.shift(); matchIndex++; if (!matchLocation) { break; } } else if ((!hiddenTextElementsMap[curNode.nodeName] || blockElementsMap[curNode.nodeName]) && curNode.firstChild) { if (!isContentEditableFalse(curNode)) { curNode = curNode.firstChild; continue; } } else if (curNode.nextSibling) { curNode = curNode.nextSibling; continue; } while (true) { if (curNode.nextSibling) { curNode = curNode.nextSibling; break; } else if (curNode.parentNode !== node) { curNode = curNode.parentNode; } else { break out; } } } } function genReplacer(nodeName) { var makeReplacementNode; if (typeof nodeName !== 'function') { var stencilNode_1 = nodeName.nodeType ? nodeName : doc.createElement(nodeName); makeReplacementNode = function (fill, matchIndex) { var clone = stencilNode_1.cloneNode(false); clone.setAttribute('data-mce-index', matchIndex); if (fill) { clone.appendChild(doc.createTextNode(fill)); } return clone; }; } else { makeReplacementNode = nodeName; } return function (range) { var before; var after; var parentNode; var startNode = range.startNode; var endNode = range.endNode; var matchIndex = range.matchIndex; if (startNode === endNode) { var node_1 = startNode; parentNode = node_1.parentNode; if (range.startNodeIndex > 0) { before = doc.createTextNode(node_1.data.substring(0, range.startNodeIndex)); parentNode.insertBefore(before, node_1); } var el = makeReplacementNode(range.match[0], matchIndex); parentNode.insertBefore(el, node_1); if (range.endNodeIndex < node_1.length) { after = doc.createTextNode(node_1.data.substring(range.endNodeIndex)); parentNode.insertBefore(after, node_1); } node_1.parentNode.removeChild(node_1); return el; } before = doc.createTextNode(startNode.data.substring(0, range.startNodeIndex)); after = doc.createTextNode(endNode.data.substring(range.endNodeIndex)); var elA = makeReplacementNode(startNode.data.substring(range.startNodeIndex), matchIndex); for (var i = 0, l = range.innerNodes.length; i < l; ++i) { var innerNode = range.innerNodes[i]; var innerEl = makeReplacementNode(innerNode.data, matchIndex); innerNode.parentNode.replaceChild(innerEl, innerNode); } var elB = makeReplacementNode(endNode.data.substring(0, range.endNodeIndex), matchIndex); parentNode = startNode.parentNode; parentNode.insertBefore(before, startNode); parentNode.insertBefore(elA, startNode); parentNode.removeChild(startNode); parentNode = endNode.parentNode; parentNode.insertBefore(elB, endNode); parentNode.insertBefore(after, endNode); parentNode.removeChild(endNode); return elB; }; } text = getText(node); if (!text) { return; } if (regex.global) { while (m = regex.exec(text)) { matches.push(getMatchIndexes(m, captureGroup)); } } else { m = text.match(regex); matches.push(getMatchIndexes(m, captureGroup)); } if (matches.length) { count = matches.length; stepThroughMatches(node, matches, genReplacer(replacementNode)); } return count; } var FindReplaceText = { findAndReplaceDOMText: findAndReplaceDOMText }; var getElmIndex = function (elm) { var value = elm.getAttribute('data-mce-index'); if (typeof value === 'number') { return '' + value; } return value; }; var markAllMatches = function (editor, currentIndexState, regex) { var node, marker; marker = editor.dom.create('span', { 'data-mce-bogus': 1 }); marker.className = 'mce-match-marker'; node = editor.getBody(); done(editor, currentIndexState, false); return FindReplaceText.findAndReplaceDOMText(regex, node, marker, false, editor.schema); }; var unwrap = function (node) { var parentNode = node.parentNode; if (node.firstChild) { parentNode.insertBefore(node.firstChild, node); } node.parentNode.removeChild(node); }; var findSpansByIndex = function (editor, index) { var nodes; var spans = []; nodes = global$1.toArray(editor.getBody().getElementsByTagName('span')); if (nodes.length) { for (var i = 0; i < nodes.length; i++) { var nodeIndex = getElmIndex(nodes[i]); if (nodeIndex === null || !nodeIndex.length) { continue; } if (nodeIndex === index.toString()) { spans.push(nodes[i]); } } } return spans; }; var moveSelection = function (editor, currentIndexState, forward) { var testIndex = currentIndexState.get(); var dom = editor.dom; forward = forward !== false; if (forward) { testIndex++; } else { testIndex--; } dom.removeClass(findSpansByIndex(editor, currentIndexState.get()), 'mce-match-marker-selected'); var spans = findSpansByIndex(editor, testIndex); if (spans.length) { dom.addClass(findSpansByIndex(editor, testIndex), 'mce-match-marker-selected'); editor.selection.scrollIntoView(spans[0]); return testIndex; } return -1; }; var removeNode = function (dom, node) { var parent = node.parentNode; dom.remove(node); if (dom.isEmpty(parent)) { dom.remove(parent); } }; var find = function (editor, currentIndexState, text, matchCase, wholeWord) { text = text.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&'); text = text.replace(/\s/g, '[^\\S\\r\\n]'); text = wholeWord ? '\\b' + text + '\\b' : text; var count = markAllMatches(editor, currentIndexState, new RegExp(text, matchCase ? 'g' : 'gi')); if (count) { currentIndexState.set(-1); currentIndexState.set(moveSelection(editor, currentIndexState, true)); } return count; }; var next = function (editor, currentIndexState) { var index = moveSelection(editor, currentIndexState, true); if (index !== -1) { currentIndexState.set(index); } }; var prev = function (editor, currentIndexState) { var index = moveSelection(editor, currentIndexState, false); if (index !== -1) { currentIndexState.set(index); } }; var isMatchSpan = function (node) { var matchIndex = getElmIndex(node); return matchIndex !== null && matchIndex.length > 0; }; var replace = function (editor, currentIndexState, text, forward, all) { var i, nodes, node, matchIndex, currentMatchIndex, nextIndex = currentIndexState.get(), hasMore; forward = forward !== false; node = editor.getBody(); nodes = global$1.grep(global$1.toArray(node.getElementsByTagName('span')), isMatchSpan); for (i = 0; i < nodes.length; i++) { var nodeIndex = getElmIndex(nodes[i]); matchIndex = currentMatchIndex = parseInt(nodeIndex, 10); if (all || matchIndex === currentIndexState.get()) { if (text.length) { nodes[i].firstChild.nodeValue = text; unwrap(nodes[i]); } else { removeNode(editor.dom, nodes[i]); } while (nodes[++i]) { matchIndex = parseInt(getElmIndex(nodes[i]), 10); if (matchIndex === currentMatchIndex) { removeNode(editor.dom, nodes[i]); } else { i--; break; } } if (forward) { nextIndex--; } } else if (currentMatchIndex > currentIndexState.get()) { nodes[i].setAttribute('data-mce-index', currentMatchIndex - 1); } } currentIndexState.set(nextIndex); if (forward) { hasMore = hasNext(editor, currentIndexState); next(editor, currentIndexState); } else { hasMore = hasPrev(editor, currentIndexState); prev(editor, currentIndexState); } return !all && hasMore; }; var done = function (editor, currentIndexState, keepEditorSelection) { var i, nodes, startContainer, endContainer; nodes = global$1.toArray(editor.getBody().getElementsByTagName('span')); for (i = 0; i < nodes.length; i++) { var nodeIndex = getElmIndex(nodes[i]); if (nodeIndex !== null && nodeIndex.length) { if (nodeIndex === currentIndexState.get().toString()) { if (!startContainer) { startContainer = nodes[i].firstChild; } endContainer = nodes[i].firstChild; } unwrap(nodes[i]); } } if (startContainer && endContainer) { var rng = editor.dom.createRng(); rng.setStart(startContainer, 0); rng.setEnd(endContainer, endContainer.data.length); if (keepEditorSelection !== false) { editor.selection.setRng(rng); } return rng; } }; var hasNext = function (editor, currentIndexState) { return findSpansByIndex(editor, currentIndexState.get() + 1).length > 0; }; var hasPrev = function (editor, currentIndexState) { return findSpansByIndex(editor, currentIndexState.get() - 1).length > 0; }; var Actions = { done: done, find: find, next: next, prev: prev, replace: replace, hasNext: hasNext, hasPrev: hasPrev }; var get = function (editor, currentIndexState) { var done = function (keepEditorSelection) { return Actions.done(editor, currentIndexState, keepEditorSelection); }; var find = function (text, matchCase, wholeWord) { return Actions.find(editor, currentIndexState, text, matchCase, wholeWord); }; var next = function () { return Actions.next(editor, currentIndexState); }; var prev = function () { return Actions.prev(editor, currentIndexState); }; var replace = function (text, forward, all) { return Actions.replace(editor, currentIndexState, text, forward, all); }; return { done: done, find: find, next: next, prev: prev, replace: replace }; }; var Api = { get: get }; var open = function (editor, currentIndexState) { var last = {}, selectedText; editor.undoManager.add(); selectedText = global$1.trim(editor.selection.getContent({ format: 'text' })); function updateButtonStates() { win.statusbar.find('#next').disabled(Actions.hasNext(editor, currentIndexState) === false); win.statusbar.find('#prev').disabled(Actions.hasPrev(editor, currentIndexState) === false); } function notFoundAlert() { editor.windowManager.alert('Could not find the specified string.', function () { win.find('#find')[0].focus(); }); } var win = editor.windowManager.open({ layout: 'flex', pack: 'center', align: 'center', onClose: function () { editor.focus(); Actions.done(editor, currentIndexState); editor.undoManager.add(); }, onSubmit: function (e) { var count, caseState, text, wholeWord; e.preventDefault(); caseState = win.find('#case').checked(); wholeWord = win.find('#words').checked(); text = win.find('#find').value(); if (!text.length) { Actions.done(editor, currentIndexState, false); win.statusbar.items().slice(1).disabled(true); return; } if (last.text === text && last.caseState === caseState && last.wholeWord === wholeWord) { if (!Actions.hasNext(editor, currentIndexState)) { notFoundAlert(); return; } Actions.next(editor, currentIndexState); updateButtonStates(); return; } count = Actions.find(editor, currentIndexState, text, caseState, wholeWord); if (!count) { notFoundAlert(); } win.statusbar.items().slice(1).disabled(count === 0); updateButtonStates(); last = { text: text, caseState: caseState, wholeWord: wholeWord }; }, buttons: [ { text: 'Find', subtype: 'primary', onclick: function () { win.submit(); } }, { text: 'Replace', disabled: true, onclick: function () { if (!Actions.replace(editor, currentIndexState, win.find('#replace').value())) { win.statusbar.items().slice(1).disabled(true); currentIndexState.set(-1); last = {}; } } }, { text: 'Replace all', disabled: true, onclick: function () { Actions.replace(editor, currentIndexState, win.find('#replace').value(), true, true); win.statusbar.items().slice(1).disabled(true); last = {}; } }, { type: 'spacer', flex: 1 }, { text: 'Prev', name: 'prev', disabled: true, onclick: function () { Actions.prev(editor, currentIndexState); updateButtonStates(); } }, { text: 'Next', name: 'next', disabled: true, onclick: function () { Actions.next(editor, currentIndexState); updateButtonStates(); } } ], title: 'Find and replace', items: { type: 'form', padding: 20, labelGap: 30, spacing: 10, items: [ { type: 'textbox', name: 'find', size: 40, label: 'Find', value: selectedText }, { type: 'textbox', name: 'replace', size: 40, label: 'Replace with' }, { type: 'checkbox', name: 'case', text: 'Match case', label: ' ' }, { type: 'checkbox', name: 'words', text: 'Whole words', label: ' ' } ] } }); }; var Dialog = { open: open }; var register = function (editor, currentIndexState) { editor.addCommand('SearchReplace', function () { Dialog.open(editor, currentIndexState); }); }; var Commands = { register: register }; var showDialog = function (editor, currentIndexState) { return function () { Dialog.open(editor, currentIndexState); }; }; var register$1 = function (editor, currentIndexState) { editor.addMenuItem('searchreplace', { text: 'Find and replace', shortcut: 'Meta+F', onclick: showDialog(editor, currentIndexState), separator: 'before', context: 'edit' }); editor.addButton('searchreplace', { tooltip: 'Find and replace', onclick: showDialog(editor, currentIndexState) }); editor.shortcuts.add('Meta+F', '', showDialog(editor, currentIndexState)); }; var Buttons = { register: register$1 }; global.add('searchreplace', function (editor) { var currentIndexState = Cell(-1); Commands.register(editor, currentIndexState); Buttons.register(editor, currentIndexState); return Api.get(editor, currentIndexState); }); function Plugin () { } return Plugin; }()); })();